Prévia do material em texto
Atividade Introdução à Informática – 4 Bimestre - 2015 Para cada exercício elaborar a implementação em C. 1. Faça uma função que recebe por parâmetro um número inteiro que corresponde a um mês do ano e exiba o nome, por extenso, do respectivo mês (ex: 1 Janeiro). Implemente na função main o código necessário para a utilização dessa nova função. 2. Faça uma função que recebe por parâmetro um valor inteiro e positivo e retorna 1 caso o valor seja primo e 0 caso não seja. Implemente na função main o código necessário para a utilização dessa nova função. 3. Faça uma função chamada MMC que calcule o Mínimo Múltiplo Comum de dois números inteiros positivos dados. Implemente na função main o código necessário para a utilização dessa nova função. Sugestão: utilize a função primo desenvolvida no exercício anterior. 4. Faça quatro funções que calculem a soma, a soma dos pares, a soma dos ímpares e a média dos n primeiros números inteiros positivos. Implemente na função main o código necessário para a utilização dessas novas funções. 5. Faça uma função que verifique se um valor é perfeito ou não. Um valor é dito perfeito quando ele é igual a soma dos seus divisores excetuando ele próprio. (Ex: 6 é perfeito, 6 = 1 + 2 + 3, que são seus divisores). A função deve retornar 1 caso o valor seja perfeito e 0 em caso contrário. Implemente na função main o código necessário para a utilização dessa nova função. 6. Faça uma função com a seguinte assinatura “int trocaChar(char ch1, char ch2);”, que substitua todas as ocorrências do caractere ch1 em f1 pelo caractere ch2 ( obs: a String f1 deve ser declarada como variável global). Implemente na função main o código necessário para a utilização dessa nova função. 7. Faça uma função que recebe a média final de um aluno por parâmetro e retorna o seu conceito, conforme a tabela abaixo. Implemente na função main o código necessário para a utilização dessa nova função. Nota Conceito de 0,0 a 2,4 E de 2,5 a 4,9 D de 5,0 a 6,9 C de 7,0 a 8,9 B de 9,0 a 10,0 A 8. Faça uma função que recebe, por parâmetro, dois valores X e Z e retorna X z . Implemente na função main o código necessário para a utilização dessa nova função. Obs: não utilizar funções ou operadores de potência prontos. 9. Faça uma função chamada ApenasConsoantes() que lê uma String (variável global) e substitui todos as vogais por espaço. Implemente na função main o código necessário para a leitura da String e utilizando essa nova função exibir a String resultante. 10. Faça uma função que recebe por parâmetro o raio de uma esfera e retorne o seu volume (v = 4/3.PI.R 3 ). Implemente na função main o código necessário para a utilização dessa nova função. 11. Faça uma função que recebe a idade de uma pessoa em anos, meses e dias e retorna essa idade expressa em dias (considerar: ano = 365 dias e mês = 30 dias). Implemente na função main o código necessário para a utilização dessa nova função. 12. Faça um programa que leia as medidas dos lados de um triângulo e a partir desses valores exibe a sua classificação. O programa deve aceitar apenas valores positivos para as medidas dos lados. Para obter o código da classificação utilize a função TipoTriangulo que retorna: 0 não formam um triângulo. 1 triângulo equilátero. 2 triângulo isósceles. 3 triângulo escaleno. 13. Um problema tradicional é o de encontrar o enésimo termo da série de Fibonacci. As series de Fibonacci são de grande importância matemática, e a lei básica é que a partir do terceiro termo, todos os termos são a soma dos dois últimos. Os primeiros termos da sequência são: 1, 1, 2, 3, 5, 8, 13, 21, 34... O primeiro e o segundo termos são 1. O terceiro termo é 2 (1+1). O quarto termo é 3 (1+2). O quinto termo é 5 (2+3) ... Faça uma função que encontre o enésimo termo da sequência de Fibonacci. Implemente na função main o código necessário para a utilização dessa nova função. Atividade Introdução à Informática – 4 Bimestre 2015 Para cada exercício elaborar a implementação em C. 1.Façaumafunçãoquerecebeporparâmetroumnúmerointeiroquecorrespondea ummêsdoanoeexibaonome,porextenso,dorespectivomês(ex:1⇒ Janeiro). Implemente na função main o código necessário para a utilização dessa nova função. #include <stdio.h> #include <stdlib.h> #include <string.h> char* nomeMes(int mes) { char *meses[] = {"Janeiro","Fevereiro","Marco","Abril","Maio","Junho", "Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"}; return meses[mes 1]; } int main() { int mes = 0; printf("Digite o numero do mes, ex: Janeiro = 1.\n"); scanf("%d", &mes); if (mes < 1 | mes > 12) { printf("Valor invalido!"); } else { printf(nomeMes(mes)); } return 0; } 2. Faça uma função que recebe por parâmetro um valor inteiro e positivo e retorna1casoovalorsejaprimoe0casonãoseja.Implementenafunçãomain o código necessário para a utilização dessa nova função. #include <stdio.h> #include <stdlib.h> char* primo(int numero) { int indice, divisoes = 0; char* resultado; if (numero > 1) { for (indice = 1; indice <= numero; indice++) { if (numero % indice == 0) divisoes++; } if (divisoes == 2) { resultado = "1"; } else { resultado = "0"; } } return resultado; } int main() { int numero; printf("Informe um numero: "); scanf("%d", &numero); printf(primo(numero)); return 0; } 3. Faça uma função chamada MMC que calcule o Mínimo Múltiplo Comum de dois númerosinteirospositivosdados.Implementenafunçãomainocódigonecessário para a utilização dessa nova função. Sugestão: utilize a função primo desenvolvida no exercício anterior. // completar este aqui! int mmc(int num1, int num2) { int mmc, aux, i; for (i = 2; i <= num2; i++) { aux = num1 * i; if ((aux % num2) == 0) { mmc = aux; i = num2 + 1; } } return mmc; } 4. Faça quatro funções que calculem a soma, a soma dos pares, a soma dos ímpares e a média dos n primeiros números inteiros positivos. Implemente na função main o código necessário para a utilização dessas novas funções. #include <stdio.h> #include <stdlib.h> int soma_todos(int maximo) { int indice, total = 0; for (indice = 1; indice <= maximo; indice++) { total = total + indice; } return total; } int soma_pares(int maximo) { int indice, total = 0; for (indice = 1; indice <= maximo; indice++) { if (indice % 2 == 0) { total = total + indice; } } return total; } int soma_impares(int maximo) { int indice, total = 0; for (indice = 1; indice <= maximo; indice++) { if (indice % 2 == 1) { total = total + indice; } } return total; } float soma_media(int maximo) { float total = (float)soma_todos(maximo) / maximo; return total; } int main() { int maximo = 0; int result_soma, result_soma_pares, result_soma_impares = 0; float result_soma_media; printf("Digite um numero inteiro positivo: "); scanf("%d", &maximo);if (maximo < 0) { printf("Valor nao pode ser negativo!"); } else { result_soma = soma_todos(maximo); printf("Resultado da soma: %d", result_soma); result_soma_pares = soma_pares(maximo); printf("\nResultado da soma dos pares: %d", result_soma_pares); result_soma_impares = soma_impares(maximo); printf("\nResultado da soma dos impares: %d", result_soma_impares); result_soma_media = soma_media(maximo); printf("\nResultado da soma da media: %7.3f", result_soma_media); } return 0; } 5.Façaumafunçãoqueverifiqueseumvaloréperfeitoounão.Umvalorédito perfeito quando ele é igual a soma dos seus divisores excetuando ele próprio. (Ex: 6 é perfeito, 6 = 1 + 2 + 3, que são seus divisores). A função deve retornar 1 caso o valor seja perfeito e 0 em caso contrário. Implemente na função main o código necessário para a utilização dessa nova função. #include <stdio.h> #include <stdlib.h> char* perfeito(int numero) { char* resultado; int indice, soma = 0; for (indice = 1; indice < numero; indice++) { if (numero % indice == 0) { soma = soma + indice; } } if (soma == numero) { resultado = "1"; } else { resultado = "0"; } return resultado; } int main() { int numero = 0; char* resultado; printf("Digite um numero: "); scanf("%d", &numero); if (numero < 0) { printf("Valor nao pode ser negativo!"); } else { resultado = perfeito(numero); printf("Resultado: "); printf(resultado); } return 0; } 6. Faça uma função com a seguinte assinatura “int trocaChar(char ch1, char ch2);”, que substitua todas as ocorrências do caractere ch1 em f1 pelo caractere ch2 (obs: a String f1 deve ser declarada como variável global). Implemente na função main o código necessário para a utilização dessa nova função. #include <stdio.h> #include <stdlib.h> #include <string.h> char f1[]; int trocaChar(char ch1, char ch2) { int indice; int total = strlen(f1); for (indice = 1; indice <= total; indice++) { if (f1[indice] == ch1) { f1[indice] = ch2; } } return 0; } int main() { char ch1, ch2; printf("Digite uma palavra: \n"); scanf("%s", &f1); fflush(stdin); printf("Digite a letra a ser substituida: \n"); scanf("%c", &ch1); fflush(stdin); printf("Digite a letra substituta: \n"); scanf("%c", &ch2); fflush(stdin); printf("Resultado: "); trocaChar(ch1, ch2); printf("%s", f1); return 0; } 7.Façaumafunçãoquerecebeamédiafinaldeumalunoporparâmetroeretorna o seu conceito, conforme a tabela abaixo. Implemente na função main o código necessário para a utilização dessa nova função. Nota Conceito de 0,0 a 2,4 E de 2,5 a 4,9 D de 5,0 a 6,9 C de 7,0 a 8,9 B de 9,0 a 10,0 A #include <stdio.h> #include <stdlib.h> char media_final(float media) { char conceito; if (media >= 0.0 & media <= 2.4) { conceito = 'E'; } else if (media >= 2.5 & media <= 4.9) { conceito = 'D'; } else if (media >= 5.0 & media <= 6.9) { conceito = 'C'; } else if (media >= 7.0 & media <= 8.9) { conceito = 'B'; } else if (media >= 9.0 & media <= 10.0) { conceito = 'A'; } return conceito; } int main() { float media; printf("Digite a media do aluno: \n"); scanf("%f", &media); fflush(stdin); if (media > 0) { printf("Conceito: "); printf("%c", media_final(media)); } else { printf("Media nao pode ser negativa!"); } return 0; } 8. Faça uma função querecebe,porparâmetro,doisvaloresXeZeretornaXZ. Implemente na função main o código necessário para a utilização dessa nova função. Obs: não utilizar funções ou operadores de potência prontos. #include <stdio.h> #include <stdlib.h> int potencia(int base, int expoente) { int contador, resultado = 1; for (contador = 1; contador <= expoente; contador++) { resultado = resultado * base; } return resultado; } int main() { int base, expoente, resultado = 0; printf("Digite o numero da base:\n"); scanf("%d", &base); printf("Digite o numero do expoente:\n"); scanf("%d", &expoente); if (base < 0) { printf("Valor da base nao pode ser negativo!"); } if (expoente < 0) { printf("Valor do expoente nao pode ser negativo!"); } else { resultado = potencia(base, expoente); printf("Resultado %d", resultado); } return 0; } 9. Faça uma função chamada ApenasConsoantes() que lê uma String (variável global) e substitui todos as vogais por espaço. Implemente na função main o códigonecessárioparaaleituradaStringeutilizandoessanovafunçãoexibir a String resultante. //Obs.: este não foi testado! #include <stdio.h> #include <stdlib.h> #include <string.h> char* apenasConsoantes(char* palavra) { char* vogais[] = {"a", "e", "i", "o", "u"}; int i; int j; for (i = 1; i <= strlen(palavra); i++) { for (j = 1; j <= strlen(vogais); j++) { if (palavra[i] == vogais[j]) { palavra[i] == " "; break; } } } return palavra; } int main() { char* palavra; printf("Digite uma palavra com vogais: \n"); scanf("%s", &palavra); fflush(stdin); printf("Palavra sem vogais: %s", apenasConsoantes(palavra)); return 0; } 10. Faça uma função que recebe por parâmetro o raio de uma esfera e retorne o seu volume (v = 4/3.PI.R3). Implemente na função main o código necessário para a utilização dessa nova função. #include <stdio.h> #include <stdlib.h> #include <math.h> float potencia(float base, int expoente) { int contador = 1; float resultado = 1; for (contador = 1; contador <= expoente; contador++) { resultado = resultado * base; } return resultado; } float volume(float raio) { float resultado = (4.0/3.0) * M_PI * potencia(raio, 3); return resultado; } int main() { float raio = 0.0; printf("Digite o raio da esfera: \n"); scanf("%f", &raio); if (raio < 0) { printf("Raio invalido!"); return 0; } fflush(stdin); printf("Volume da esfera: %7.3f", volume(raio)); return 0; } 11. Faça uma função que recebe a idade de uma pessoa em anos, meses e dias e retorna essa idade expressa em dias (considerar: ano = 365 dias e mês = 30 dias). Implemente na função main o código necessário para a utilização dessa nova função. #include <stdio.h>#include <stdlib.h> int total_dias(int anos, int meses, int dias) { int resultado = anos * 365 + meses * 30 + dias; return resultado; } int main() { int anos, meses, dias = 0; printf("Digite quantos anos a pessoa possui: \n"); scanf("%d", &anos); if (anos < 0) { printf("Valor invalido!"); return 0; } fflush(stdin); printf("Agora digite os meses que a pessoa possui: \n"); scanf("%d", &meses); if (meses < 0) { printf("Valor invalido!"); return 0; } fflush(stdin); printf("Agora digite os dias que a pessoa possui: \n"); scanf("%d", &dias); if (dias < 0) { printf("Valor invalido!"); return 0; } fflush(stdin); printf("Total de dias: %d", total_dias(anos, meses, dias)); return 0; } 12. Faça um programa que leia as medidas dos ladosdeumtriânguloeapartir desses valores exibe a sua classificação. O programa deve aceitar apenas valores positivos para as medidas dos lados. Para obter o código da classificação utilize a função TipoTriangulo que retorna: 0 ⇒ não formam um triângulo. 1 ⇒ triângulo equilátero. 2 ⇒ triângulo isósceles. 3 ⇒ triângulo escaleno. #include <stdio.h> #include <stdlib.h> int tipoTriangulo(int la, int lb, int lc) { int resultado; if (la == 0 | lb == 0 | lc == 0) { resultado = 0; } else if (la == lb & lb == lc & lc == la) { resultado = 1; } else if ((la == lb & lc != la) | (lb == lc & la != lb) | (lc == la & lb != lc)) { resultado = 2; } else if (la != lb & lb != lc & lc != la) { resultado = 3; } return resultado; } int main() { int la, lb, lc; printf("Digite a medida do lado A do triangulo: \n"); scanf("%d", &la); if (la < 0) { printf("Medida invalida!"); return 0; } fflush(stdin); printf("Digite a medida do lado B do triangulo: \n"); scanf("%d", &lb); if (lb < 0) { printf("Medida invalida!"); return 0; } fflush(stdin); printf("Digite a medida do lado C do triangulo: \n"); scanf("%d", &lc); if (lc < 0) { printf("Medida invalida!"); return 0; } fflush(stdin); printf("Classificacao: %d", tipoTriangulo(la, lb, lc)); return 0; } 13. Um problema tradicional é o de encontrar o enésimo termo da série de Fibonacci.AsseriesdeFibonaccisãodegrandeimportânciamatemática,ealei básica é que a partir do terceiro termo, todos os termos são a soma dos dois últimos.Osprimeirostermosdasequênciasão:1,1,2,3,5,8,13,21,34... Oprimeiroeosegundotermossão1.Oterceirotermoé2(1+1).Oquartotermo é3(1+2).Oquintotermoé5(2+3)...Façaumafunçãoqueencontreoenésimo termo da sequência de Fibonacci.Implementenafunçãomainocódigonecessário para a utilização dessa nova função. #include<stdio.h> int Fibonacci(int); main() { int n, i = 0, c; printf("Digite um numero para encontrar o enésimo termo da série de Fibonacci: \n"); scanf("%d",&n); printf("Fibonacci serie: \n"); for ( c = 1 ; c <= n ; c++ ) { printf("%d\n", Fibonacci(i)); i++; } return 0; } int Fibonacci(int n) { if ( n == 0 ) return 0; else if ( n == 1 ) return 1; else return ( Fibonacci(n1) + Fibonacci(n2) ); }