Sie sind auf Seite 1von 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino Regras 1.

. A lista deve se entregue via email (felipelino44@gmail.com) para o professor nos dias combinados em um nico email. A data no ser prorrogada. Ou seja, no devem ser enviados emails posteriores com os exerccios. O primeiro recebido ser corrigido. 2. No assunto do email colocar (sem as aspas): "[LP1-2012/01] - Lista 02 - Nome Sobrenome, Nome Sobrenome" 3. Os trabalhos devem ser feitos em dupla. A mesma dupla DEVE ser mantida para todas as listas, ou seja, NO ser permitida a troca de parceiros. 4. Os Fontes devem estar com nomes: L2EXC01.c, L2EXC02.c, L2EXC03.c, L2BONUS.c, cada nome referente ao exerccio correspondente. 5. Os fontes devem compilar no Dev C++. As regras acima servem para facilitar a correo dos exerccios. Caso no sejam seguidas o exerccio NO ser corrigido. Orientaes para todos os exerccios: 1. As funes declaradas nos programas devem possuir comentrios entre /* */ informando: a. O que o mtodo faz e regras de negcio; b. O que significa cada parmetro recebido; c. O que o mtodo retorna caso ele no seja void. d. Se o mtodo receber parmetro por referncia informar quais alteraes so realizadas no parmetro. 2. No devem ser declaradas variveis globais. 3. Podem ser declaradas constantes globais. 4. No usar struct.

Valor da Lista: 2,75 Bnus: 0,5

Dicas: Nmero mpar = 2 * n + 1 Para compilar em linha de comando configure o PATH da sua mquina incluindo a subpasta bin da instalao do Dev C++ . Exemplo: C:\Dev-Cpp\bin , set PATH=C:\Dev-Cpp\bin;%PATH%. Voc pode fazer isso atravs das configuraes de variveis de ambiente do seu computador. Comando para compilar no promp do DOS: gcc arquivoFonte.c o arquivo.exe

1. (0,75) Crivo de Eratstenes O Crivo de Eratstenes usado para verificao de primos. Onde um array boleano informa se a posio ou no referente a um nmero primo. O funcionamento o seguinte: Cada posio do array de 1 at N representa o nmero correspondente; Todo o array inicializado como sendo primo (TRUE); A posio 1 do array marcada como primo (TRUE); A partir da posio 2 as posies mltiplas de 2 so marcadas como no sendo primo (FALSE), indo de 2 em 2; A partir da posio 3 as posies mltiplas de 3 so marcadas como no sendo primo (FALSE), indo de 3 em 3; A partir da posio 5 as posies mltiplas de 5 so marcadas como no sendo primo (FALSE), indo de 5 em 5; E assim feito para cada mpar (exceto o 1); Ao final as posies marcadas com TRUE representam nmeros primos e as posies marcadas com FALSE representam nmeros no primos. A descrio acima se refere ao funcionamento bsico, algumas otimizaes so possveis. Pgina 1 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino O exerccio consiste em criar um programa para verificar se um nmero ou no primo usando o Crivo de Eratstenes. O programa deve ser capaz de verificar valores at 100000.

Exemplo de tela do programa Crivo de Eratstenes.

Pgina 2 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino 2. (1,0) Jogo da Velha Fazer um programa que simule um Jogo da Velha iterativo com 2 jogadores. O Jogo da Velha representado por uma tabela com 9 posies divididas em 3 linhas e 3 colunas. Regras: No incio do jogo todas as posies da tabela esto vazias. A cada rodada um jogador faz uma marcao em uma posio livre da tabela, a mesma marcao deve ser mantida por aquele jogador at o final do jogo, usualmente usa-se um X e um O como smbolos. O jogo termina quando algum dos jogadores consegue completar uma linha, coluna ou diagonal com seu smbolo. Outro critrio o empate quando no existem mais posies disponveis para jogar. Diz-se ento que o jogo Deu velha. Restries: No podem ser criadas variveis globais. Devem ser feitas verificaes aceitando/rejeitando quando usurio informa posio ocupada ou fora da tabela. Criar funo que recebe como parmetros: tabela, identificao do jogador. Essa funo tem como objetivo ler do teclado a posio fornecida pelo usurio, fazer a verificao necessria e alterar a tabela. Caso a posio seja invlida a funo deve perguntar a posio novamente. A funo no retorna valor. /* Funcao que altera a tabela recebida como parametro apos ler a posicao informada pelo jogador. table tabela 3x3 representando o Jogo da Velha player caracter identificando o jogador que acabou de realizar a jogada */ void readPlayerPosition(char table[3][3], char player) Exemplo de cabealho de funo com comentrio. Sua funo no precisa necessariamente ser idntica a apresentada acima. A idia era apenas mostrar uma funo com exemplo de comentrio. Criar funo que recebe como parmetro a tabela e imprime-a na tela. A funo no retorna valor Criar funo que recebe como parmetro a tabela e verifica se o jogo terminou. Retorna valor de status informando se o jogo: foi vencido pelo jogador UM, foi vencido pelo jogador DOIS, est empatado ou jogo ainda no terminou.

/* Verifica se o jogo terminou retornando o status do jogo. ...PARAMETROS... retorna caracter informando o Status podendo assumir os valores: 'X': Jogador X venceu, 'O': Jogador O venceu, 'E': Jogo Empatado, 'C': Jogo deve Continuar */ char checkFinish(...PARAMETROS...) Exemplo de cabealho de funo (INCOMPLETA) com comentrio. Sua funo no precisa necessariamente ser idntica a apresentada acima. A idia era apenas mostrar uma funo com exemplo de comentrio. Podem ser criadas mais funes se desejar.

Pgina 3 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino

Exemplo de tela do programa Jogo da Velha.

Pgina 4 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino 3. (1,0) Ordenao e Busca Binria O programa deve ter o seguinte comportamento: Ler do teclado 10 palavras e as armazenar em um vetor. O programa deve exibir as palavras contidas no vetor na ordem em que foram informadas. Depois o programa deve ordenar as palavras contidas no vetor usando algum algoritmo de ordenao. O programa exibe ento o vetor ordenado O programa pede que o usurio informe um termo a ser buscado O programa atravs da busca binria deve informar em qual posio do vetor a palavra foi encontrada. Caso no encontre a palavra, deve exibir mensagem informando que o termo buscado no foi encontrado. Restries: O programa deve ter uma funo para ordenao implementada pelo aluno. O programa deve ter uma funo recursiva para busca binria. O programa deve ter uma funo para imprimir na tela o vetor. Algoritmo de Ordenao por insero (sugesto): Ordenao por insero um simples algoritmo de ordenao, eficiente quando aplicado a um pequeno nmero de elementos. Em termos gerais, ele percorre um vetor de elementos da esquerda para a direita e medida que avana vai deixando os elementos mais esquerda ordenados. O algoritmo de insero funciona da mesma maneira com que muitas pessoas ordenam cartas em um jogo de baralho como o pquer. ordenaInsercao(Entrada: lista, Saida lista) Inicio Para i de 1 at tamanhoDaLista - 1 Faa j = i Enquanto lista[j] < lista[j-1] E j > 0 Faa aux <-- lista[j]; lista[j] <-- lista[j-1]; lista[j-1] <-- aux; j <-- j-1; Fim Enquanto; Fim Para; Fim Algoritmo da Busca Binria: buscaBinaria(Entrada inicio, fim, lista, busca; Sada: posicao) Inicio Se inicio > fim Ento retorna -1; Fim Se; meio = (inicio + fim) / 2; Se busca = lista[meio] Ento retorna meio; Seno Se(busca < lista[meio]) retorna buscaBinaria(inicio, meio-1, lista, busca); Seno retorna buscaBinaria(meio+1, fim, lista, busca); Fim Se; Fim Telas do Programa:

Pgina 5 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino

Ordenao e Busca Binria: Tela quando o termo no encontrado na lista.

Ordenao e Busca Binria: Tela quando o termo encontrado na lista.

Pgina 6 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino Bnus (0,5): Jogo 21 Aqui vai um resumo das regras do jogo 21 a ser implementado. Usando um baralho de 52 cartas, ou seja com as cartas: s, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K dos nipes Copas, Paus, Ouro e Espadas. O valor das cartas segue a regra: O valor das cartas numricas segue o valor do nmero nela presente. s vale 1 ponto. J, Q, K valem 10 pontos. Objetivo do Jogo: Completar a soma de 21 pontos com as cartas, ou chegar o mais prximo possvel sem ultrapassar esse valor. O Jogo: Logo de incio sorteada uma carta do baralho. Aps isso cada rodada consiste do jogador decidir se continua e sorteia mais uma carta do baralho ou se pra. Lembrando que uma carta sorteada no retorna ao baralho, ou seja, fica indisponvel para sorteio. As rodadas seguem at que o Jogador chegue a 21 pontos ou mais. Se o jogador conseguir exatamente 21 pontos ele venceu. Se o jogador ultrapassar 21 pontos ele perdeu. Caso o jogador tenha interrompido o jogo antes de chegar a 21 pontos. O computador sorteia mais uma carta. Caso a soma da pontuao atual mais o valor da carta sorteada seja mais prximo de 21 pontos sem ultrapass-lo o jogador perdeu. Caso contrrio o jogador venceu. Dicas: Sorteio de nmeros aleatrios dentro de uma faixa de valores de 0 at N-1: #include<stdlib.h> int value = 0; srand(time(NULL)); value = rand(); value = value % N; Use um vetor para marcar quais cartas foram sorteadas e quais esto disponveis para sorteio. Use faixa de valores para determinar o nipe. Exemplo: de 0 at 12 nipe de Copas, de 13 at 25 nipe de Paus.

Restries: Criar funo para verificar se o jogador deseja continuar ou parar. Caso o jogador informe alguma opo invlida o programa deve perguntar novamente.

Jogo 21: Jogador vence, pois desistiu e a prxima carta sorteada ultrapassou 21 pontos.

Pgina 7 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino

Jogo 21: Jogador vence atingindo exatamente 21 pontos.

Jogo 21: Jogador perde, pois ultrapassou os 21 pontos. Pgina 8 de 9

2 Lista de Exerccios de Linguagem de Programao I - UERJ - 2012/01 Prof Felipe Lino

Jogo 21: Jogador perde, pois desistiu e a prxima carta sorteada atingiu 21 pontos.

Pgina 9 de 9

Das könnte Ihnen auch gefallen