Beruflich Dokumente
Kultur Dokumente
. 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.
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.
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
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
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
Jogo 21: Jogador perde, pois desistiu e a prxima carta sorteada atingiu 21 pontos.
Pgina 9 de 9