Universidade Federal do Rio de Janeiro Data: 08/06/05 Disciplina: Computação I Professor: Fernando Lui Bastos Ribeiro ª Lista de Eercícios ) Construa uma função que codifique uma cadeia de caracteres utiliando a Cifra de César (50 a.c.): se uma letra é a n-ésima letra do alfabeto, substitua-a pela (n + k)-ésima letra do mesmo alfabeto, onde k é um inteiro fio. Considere as letras do alfabeto inglês k, w e, totaliando 6 letras, e faça distinção entre letras maiúsculas e minúsculas. Não utilie acentos e espaços são representados por espaços. A relação entre n e n + k é cíclica, ou seja, a letra subseqüente à última letra do alfabeto ( ) corresponde à primeira letra ( a ). Eemplo, com k = : Entrada: Zebra tem pelagem listrada Saída: Cheud whp shodjhp olvwudgd O protótipo da função deve ser: void codifica(char *s); O que acontece quando a função codifica() é aplicada em uma cadeia de caracteres com k = 6? ) Crie uma função que calcule a área superficial ( S ) e o volume ( V ) de uma esfera E de raio r, dado o seguinte protótipo: void av_esfera(float r, float *area, float *volume);. Fórmulas: e e S e = π r, com π =,59. Ve r = π, ) Escreva um programa que simule o Jogo da Velha. Este programa deve ler os nomes dos dois jogadores e, a cada nova jogada, imprimir a situação do jogo e verificar qual dos dois jogadores foi o vencedor. ) Elabore uma função que insere um dado caracter em qualquer posição de uma cadeia de caracteres com o protótipo definido a seguir:
void insere_char(char *s, char c, int pos); onde, s é a cadeia de caracteres, c é o caractere a ser inserido e pos é a posição de inserção. 5) Construa uma função que transforme em maiúsculas as letras iniciais das palavras contidas em uma cadeia de caracteres e em minúsculas as letras restantes. Utilie o seguinte protótipo: void primeiro_maiusculo(char *s); 6) Escreva um programa que leia a partir de um arquivo uma tabela com os placares de jogos de futebol e imprima em outro arquivo o nome dos times em ordem descrescente de classificação. Este arquivo deve conter também o número de pontos ganhos, jogos, vitórias, empates, derrotas, gols a favor, gols contra e o saldo de gols para cada time. Em caso de empate em número de pontos ganhos, utiliar o saldo de gols como critério de desempate. Eemplo de arquivo de entrada: Juventude Vasco Atletico Flamengo Eemplo de arquivo de saída: Time PG J V E D GP GC S Juventude 0 0 Flamengo 0 0 Atletico 0 0 0 - Vasco 0 0 0 - Dica: use uma estrutura para representar cada time. 7) Elabore uma função que, dados quatro pontos = (, ) p, p =,,, p = (, ) e p = (,, ), com coordenadas reais, retorne VERDADEIRO se estes, ( ), pontos estão contidos em um mesmo plano ou FALSO, caso contrário. Dica: se,, p e p são coplanares, então o determinante da matri: p p é igual a ero. 8) Escreva um programa que tenha como dado de entrada um número inteiro positivo, menor ou igual a 9999, e que retorne este número por etenso. Eemplo:
deve retornar: 7 mil quatrocentos e vinte e sete 9) Elabore um programa que leia da entrada padrão, o grau e os coeficientes de um polinômio e calcule o grau e os coeficientes da derivada deste. Seja o polinômio p( ) = + 5 +, teremos: Entrada: 5 - Saída: 0-0) Faça um programa em C que contenha uma função que não retorne valor. Esta função deverá receber o endereço de uma cadeia de caracteres lida a partir da entrada padrão. Esta cadeia de caracteres deverá ser invertida e eibida na tela, por esta mesma função. Eemplo: Entrada: Comput Saída: tupmoc ) Escreva um programa em C que leia o nome da pessoa, a idade e o telefone, a partir de um arquivo de entrada fornecido pelo usuário, e eiba na tela a seguinte cadeia de caracteres: Seu nome é..., você tem... anos e seu telefone é..... Utilie a função strcat para formar a cadeia de caracteres a ser eibida. ) Escreva um prograna em C que compare duas cadeias (s e s) de carateres informadas pelo usuário e remova de s todos os caracteres que ocorram também na cadeia s. A cadeia s resultante deve ser eibida na tela. ) Crie em linguagem C um arranjo de estruturas com duas posições, que simule operações aritméticas com números compleos. Os membros da estrutura devem ser: parte real, parte imaginária, módulo e ângulo em radianos da forma polar do número compleo. Os números devem ser lidos a partir da entrada padrão, informando-se em seguida a operação a ser realiada: adição, subtração, multiplicação ou divisão. ) Faça um programa em C que leia de um arquivo teto um conjunto de referências bibliográficas com o seguinte formato: Kernighan, B. W. e Ritchie, D. M. A Linguagem C de Programacao Editora Campus
986 Deve-se criar um arranjo de estruturas que armaene estes dados e que permita a busca de livros a partir do nome do autor, do título do livro ou do nome da editora. Uma ve localiado o livro, todos os dados referentes devem ser eibidos na tela. 5) Escreva um programa que contenha uma estrutura denominada esfera, cujos membros são raio, centro, área superficial e volume. Como dados de entrada, devem ser fornecidos o raio e as coordenadas do centro da esfera. Este programa deve conter uma função que receba um ponteiro da estrutura do tipo esfera e, a partir do raio, calcule a área superficial e o volume. 6) Para a estrutura esfera da questão anterior, elabore uma função que receba como argumento o ponteiro da estrutura do tipo esfera e as coordenadas de um ponto qualquer. Esta função deverá retornar VERDADEIRO se o ponto estiver contido no interior da esfera e FALSO, caso contrário. 7) Implemente uma pilha de cadeia de caracteres permitindo a eecução das seguintes operações: inserção de um elemento e remoção de um ou todos os elementos da pilha. 8) Dadas duas listas encadeadas, referenciadas por lista e lista, cujos elementos estejam em ordem crescente, escreva um algoritmo que intercale estas listas, formando uma única lista com os elementos em ordem estritamente crescente, e sem repetições. A lista resultante deve ser referenciada por lista (A lista deve ser formada pelas células que faiam parte de lista ou de lista - ao final, lista e lista devem estar vaias). Não se esqueca de devolver para a lista livre as células que não são mais utiliadas. Eemplo: 9) Escreva um algoritmo que inverte uma lista encadeada simples dada, referenciada por lista. A lista resultante deve também ser referenciada por lista e deve conter as mesmas células da lista
original (ou seja, a primeira célula da nova lista é a última da lista dada, a segunda é a penúltima da lista dada, e assim por diante). Eemplo: