Вы находитесь на странице: 1из 5

Lista de Exerccios de Algoritmos - 04

Para cada um dos exerccios abaixo, faa um programa (em laboratrio) que teste a funo. Funes e estruturas bsicas 1. Faa uma funo que recebe a idade de uma pessoa em anos, meses e dias e retorna essa idade expressa em dias. 2. Faa uma funo que recebe a mdia final de um aluno por parmetro e retorna o seu conceito, conforme a tabela abaixo:
Nota de 0 a 49 de 50 a 69 de 70 a 89 de 90 a 100 Conceito D C B A

3. Faa uma funo que recebe por parmetro o raio de uma esfera e calcula o seu volume (v = 4/3.P .R3). 4. Escrever uma funo int contaimpar(int n1, int n2) que retorna o nmero de inteiros impares que existem entre n1 e n2 (inclusive ambos, se for o caso). A funo deve funcionar inclusive se o valor de n2 for menor que n1.
n=contaimpar(10,19); /* n recebe 5 (11,13,15,17,19) */ n=contaimpar(5,1); /* n recebe 3 (1,3,5) */

5. Escrever uma funo void estacao(int dia, int mes), que exibe no vdeo qual a estao do ano da data passada por parmetro. Lembrando que a primavera comea no dia 23 de setembro, o vero em 21 de dezembro, o outono em 21 de maro e o inverno em 21 de junho.
estacao(25,10); /* 25/10 primavera. */ estacao(29,12); /* 29/12 vero. */

6. Escrever uma funo int divisao(int dividendo, int divisor, int *resto), que retorna a diviso inteira (sem casas decimais) de dividendo por divisor e armazena no parmetro resto, passado por referncia, o resto da diviso.
int r, d, d = divisao(5, 2, &r); printf("Resultado:%d Resto:%d", d, r); /* Resultado:2 Resto:1 */

7. Escrever uma funo long somaintervalo(int n1, int n2) que retorna a soma dos nmeros inteiros que existem entre n1 e n2 (inclusive ambos). A funo deve funcionar inclusive se o valor de n2 for menor que n1.
n=somaintervalo(3, 6); /* n recebe 18 (3 + 4 + 5 + 6) */ n=somaintervalo(5,5); /* n recebe 10 (5 + 5) */ n=somaintervalo(-2,3); /* n recebe 3 (-2 + -1 + 0 + 1 + 2 + 3) */ n=somaintervalo(4, 0); /* n recebe 10 (4 + 3 + 2 + 1 + 0) */

8. Escreva uma funo que receba como parmetro um valor n inteiro e positivo e que calcule a seguinte soma:
S := 1 + 1/2 + 1/3 + 1/4 + ... + 1/n

A funo dever retornar o valor de S

Funes e Vetores 9. Escrever uma funo que receba um vetor com 10 valores e retorne quantos destes valores so negativos. 10. Implemente uma funo que retorne o maior elemento de um vetor de inteiros de tamanho 10. 11. Implemente uma funo que retorne o menor elemento de um vetor de inteiros de tamanho 10. 12. Implemente uma funo que ordene um vetor de inteiros de tamanho 10. 13. Implemente uma funo que, dado um valor, retorne se esse valor pertence ou no a um vetor de inteiros de tamanho 10. 14. Implemente uma funo que retorne a mdia dos valores armazenados em um vetor de inteiros de tamanho 10. 15. Escrever uma funo long somavet(int *vetor, int tamanho), que recebe por parmetro o endereo (ponteiro) de um vetor de inteiros e o seu tamanho e retorna a soma de seus elementos.
int lista[4]={100, 20, 10, 5}; long total; total = somavet(lista, 4);

/* total recebe 135 */

16. Escrever a funo void copiaate(char *destino, char *origem, int parar) que copia para a string destino os caracteres da string origem que esto antes da primeira ocorrncia do caracter parar ou at o final de origem, se parar no for encontrado.
char str[80]; copiaate(str, "testando a funcao", 'a'); /* str recebe "test" */ copiaate(str, "testando a funcao", 'u'); /* str recebe "testando a f" */ copiaate(str, "testando a funcao", 'c'); /* str recebe "testando a fun" */

17. Escrever uma funo int so_positivo(int *vetor, int tamanho), que substitui por zero todos os nmeros negativos do vetor passado por parmetro, sendo que o nmero de elementos do vetor passado para a funo no parmetro tamanho. A funo deve retornar o nmero de valores que foram substitudos.
int v[5] = {3, -5, 2, -1, 4}; tr = so_positivo(v,5); printf("%d", tr); /* 2 */

Funes e Matrizes 18. Faa uma funo que recebe, por parmetro, uma matriz A(5,5) e retorna a soma dos seus elementos. 19. Faa uma funo que recebe, por parmetro, uma matriz A(6,6) e retorna a soma dos elementos da sua diagonal principal e da sua diagonal secundria.

20. Faa uma funo que recebe, por parmetro, uma matriz A(7,6) e retorna a soma dos elementos da linha 5 e da coluna 3. 21. Faa uma funo que recebe, por parmetro, uma matriz A(6,6) e retorna o menor elemento da sua diagonal secundria. Funes e Strings 22. Escreva uma funo int contc(char *str, char c) que retorna o nmero de vezes que o caracter c aparece na string str, ambos passados como parmetros. char texto[]="EXEMPLO"; x=contc(texto,'E'); /* x recebe 2 */ x=contc(texto,'L'); /* x recebe 1 */ x=contc(texto,'W'); /* x recebe 0 */ 23. Escrever uma funo int ultima(char *string, char c) que retorna qual a ltima posio na string em que aparece o caracter c. Se o caracter no estiver na string, retornar -1. char str[]="teste"; int q; q=ultima(str, 't'); /* q recebe 3 */ q=ultima(str, 'x'); /* q recebe -1 */ 24. Escrever uma funo int contabranco(char *string), que retorna o nmero de espaos em branco contidos na string passada como parmetro. n = contabrancos(" a b c"); /* n recebe 3 */ n = contabrancos(" abc "); /* n recebe 2 */ n = contabrancos("abc"); /* n recebe 0 */ 25. Escrever uma funo void stringup(char * destino, char *origem), que copia todos os caracteres da string origem para destino, convertendo-os para maiscula. char s1[20], s2[20]="aula de c"; stringup(s1, s2); printf("%s", s1); /* AULA DE C */ 26. Escrever uma funo void ninvert(char *destino, char *origem, int num), que copia invertido para a string destino, os num primeiros caracteres da string origem. Se num for maior que o tamanho da string, copiar todos os caracteres. char s1[80] = "ABCDE"; char s2[80]; ninvert(s2, s1, 3); /* s2 = "CBA" */ ninvert(s2, s1, 10); /* s2 = "EDCBA" */ Funes e Structs 27. A partir do trecho de cdigo a seguir, complete o programa criando as funes que faltam.

#include <stdio.h> #include <string.h> typedef struct{ int matricula; float notas[3]; }Aluno; int main() { Aluno Turma[5]; float media; for(i=0; i< 5; i++) { LeAluno(.......); } ImprimeTurma(Turma); // funo que imprime os dados dos alunos for(i=0; i< 5; i++) { // funo que calcula a mdia das notas de um aluno media = CalculaMediaAluno(.......); printf("Aluno %d } return 0; } - Media = %f\n", Turma[i].matricula, media); // funo que l os dados do aluno

28. Crie uma estrutura ponto que representar um ponto no espao. Essa estrutura conter trs nmeros reais (x, y e z). Faa um programa que crie um vetor de estruturas com 5 pontos. Crie funes para: a) Ler os 5 Pontos; b) Imprimir os pontos lidos; c) Calcular a distncia de 2 pontos pelo seus indices; d) Calcular a distncia de todos os pontos consecutivos (primeiro com o segundo, segundo com o terceiro etc); Ao final, crie um menu que permita selecionar cada uma das funes acima. 29. Faa um programa para gerenciar uma biblioteca. Para tal, crie uma estrutura livro que conter os campos ttulo, autor, editora, ano e um inteiro chamado emprestado que servir para controlar se o livro est na biblioteca (valor 1) ou se est emprestado (valor 0). Crie tambm um campo codigo que receber um valor inteiro positivo nico representando o cdigo de cada livro. Crie na funo principal (main) um vetor de estruturas com capacidade para 500 livros. Inicialmente faa um loop e atribua -1 ao campo cdigo em todos os livros do vetor. O valor -1 representar uma posio disponvel no vetor. O programa dever fornecer um menu com as seguintes opes: a) Incluir livro (nessa opo sero lidos todos os campos de um livro na primeira posio disponvel do vetor); b) Listar livros (Exibe todos os livros cadastrados); c) Consulta livro (Exibe na tela as informaes de um livro especfico atravs de seu cdigo); d) Empresta livro (pede o cdigo do livro e caso esteja na biblioteca, executa o emprstimo) e) Recebe livro (altera o campo emprestado de zero para um. O acesso do livro feito atravs de seu cdigo). f) Lista livros emprestados. g) Lista livros disponveis para emprstimo. Todas as opes acima sero implementadas em funes apropriadas.

Funes e Recursividade 30. Faa uma funo recursiva para exibir na tela de 1 a 10. 31. Faa uma funo recursiva para exibir na tela os nmeros mpares de 1 a 30. 32. Faa uma funo recursiva para exibir os nmeros compreendidos entre a e b, sendo a e b parmetros da funo. Se a for menor que b, exiba uma mensagem de erro. 33. Pesquise a sequncia de Fibonacci e faa uma funo recursiva para exibir seus n primeiros termos, sendo n um parmetro da funo. 34. Faa uma funo recursiva que receba um vetor de nmeros reais e seu tamanho e retorne a soma de seus elementos. 35. Faa uma funo recursiva que receba um vetor de nmeros reais e seu tamanho e retorne o menor elemento deste vetor.

Вам также может понравиться