ENGENHARA DE TELECOMUNCAES 3 LSTA DE EXERCCOS - ALGORTMOS E ESTRUTURA DE DADOS Antonio Martins de Araujo Neto Ouro Branco 16/06/2014 1) Corrija os erros de compilao do cdigo abaixo: Resposta: #include <stdio.h> #include <stdlib.h> int main() { int inteiro, variavel1 = 5; float outra_variavel = 3.14; char ch = 's', email = 'noname@example.com'; inteiro = 2 * variavel1 + 1; if(ch == 's') printf("sim\n"); else printf("nao\n"); int i; scanf("%d", &i); while (i < 10) printf("%d ", i++); for (i = 0; i < 10; i++) printf("aaa\n"); } 2) Corrija os erros de compilao do cdigo abaixo: Resposta: #include <stdio.h> #include <stdlib.h> int funcao1(int a) { int b = 0, c = 0, d = 0; b = a % 2; c = a * b; d = (c * 2) + 1; return d; } int main() { int variavel, res; printf("Entre com o valor a calcular:\n"); scanf("%d", &variavel); res = funcao1(variavel); printf("O valor de x e: %d\n", res); } 3) Crie uma funo que receba o valor de e calcule! f"x) # x$ % &x Resposta: #include <stdio.h> #include <stdlib.h> #include <math.h> int funcao(int a) { int b = 0; b = pow(a, 2) + (4 * a); return b; } int main() { int variavel; printf("Entre com o valor a calcular:\n"); scanf("%d", &variavel); printf("O resultado da funcao de x^2 + 4.x eh: %d\n", funcao(variavel)); } &) Crie uma funo que receba o valor de x e calcule: Resposta: #include <stdio.h> #include <stdlib.h> #include <math.h> float funcao(float a) { float b = 0.0; b = pow(2.718, 2*a) - pow(a,5) + (a - 2)/sin(a); return b; } int main() { float variavel, res; printf("Entre com o valor a calcular:\n"); scanf("%f", &variavel); res = funcao(variavel); printf("A funcao de e^2*x - x^5 + (x - 2)/sen(x) eh: %f\n", res); } ') Crie uma funo que receba o valor de x e ( e calcule: f"x! () # x$ ) ($ % ': Resposta: #include <stdio.h> #include <stdlib.h> #include <math.h> int funcao(int a, int b) { int c = 0; c = pow(a, 2) - pow(b, 2) + 5; return c; } int main() { int v1, v2, res; printf("Entre com o valor de x:\n"); scanf("%d", &v1); printf("Entre com o valor de y:\n"); scanf("%d", &v2); res = funcao(v1, v2); printf("O resultado da funcao x^2 - y^2 + 5 eh: %d\n", res); } *) +screva uma funo que receba o raio de uma esfera e retorne o seu volume Resposta: #include <stdio.h> #include <stdlib.h> #include <math.h> float volume_esfera(float a) { float b = 0.0; b = 1.3333333333333 * M_P * pow(a, 2); return b; } int main() { float v1, res; printf("Entre com o valor do raio:\n"); scanf("%f", &v1); res = volume_esfera(v1); printf("O volume eh = %f\n", res); } ,) +screva uma funo que receba um ano a partir de -'.3 e determine em que dia ser/ "ou foi) a p/scoa naquele ano0 Resposta: #include <stdio.h> #include <stdlib.h> #include <string.h> int pascoa(int ano) { int dia; int a, b, c, d, e, k, m, n, p, q; a = ano % 19, b = ano % 4, c = ano % 7, k = ano / 100; q = (3 * k + 3)/4, p = (8 * k + 13)/25, m = (15 + q - p)%30; d = (19 * a + m)%30, n = (4 + q)%7, e = (2 * b + 4 * c + 6 * d + n)%7 ; if (d + e <= 9) { dia = 22 + d + e; printf("Dia %d de ", dia); printf("Marco\n"); } else if (d == 29 && e==6) { printf("Dia 19 de "); printf("Abril\n"); } else if (d == 28 && e == 6 && a > 10) { printf("Dia 18 de "); printf("Abril\n"); } else { dia = d + e -9; printf("Dia %d de ", dia); printf("Abril\n"); } system("PAUSE"); return 0; } int main() { int ano; printf("nsira o ano que deseja saber o dia da pascoa: \n"); scanf("%d", &ano); while (ano < 1583) { printf("nsira o ano que deseja saber o dia da pascoa: \n"); scanf("%d", &ano); } printf("%d", pascoa(ano)); return 0; } .) 1m n2mero 3 dito perfeito se ele 3 igual 4 soma de seus divisores! excetuando ele prprio0 "+x0: * 3 perfeito! pois * # - % 2 % 3)0 +screva uma funo que determine se um n2mero 3 perfeito0 +la deve retornar - em caso verdadeiro! e 5ero caso contr/rio0 Resposta: #include <stdio.h> #include <stdlib.h> int perfeito(int a) { int i, soma = 0; for (i = 1; i <= a; i++) { while(i < a) { if(a % i == 0) { soma += i; } i++; }if (soma == a) return 1; else return 0; } } int main() { int n; printf("Se o numero for perfeito, ou seja a soma de seus divisores eh igual a ele mesmo, a saida eh 1, caso contrario a saida eh 0.\n\n"); printf("Qual o numero a verificar se eh perfeito?\n "); scanf("%d", &n); printf("%d", perfeito(n)); } 6) 7 expanso da s3rie de 8a(lor da funo e x em torno de a # 9 3 dada pela frmula: Crie uma funo que determine o valor de e x usando a s3rie de 8a(lor at3 a & ordem0 Como exemplo! calcule o valor para x # 9! x # 902! e x # 903 e x # -0 Compare o resultado com o valor obtido pela funo exp em C e verifique o erro obtido0 Resposta: #include <stdio.h> #include <stdlib.h> #include <math.h> float taylor(float x) { float a; a = 1 + x + pow(x, 2)/2 + pow(x, 3)/6 + pow(x,4)/24; return a; } int main() { float x; printf("Entre com o valor a calcular a serie de taylor e^x: \n"); scanf("%f", &x); printf("O resultado eh %f\n", taylor(x)); return 0; } X = 0 - sada: 1.000000 X = 0.2 - sada: 1.221400 X = 0.3 - sada: 1.349838 X = 1 - sada: 2.708333 Com a funo e x utilizando o valor de 2,718 ela ficam muito prximas uma da outra, ou seja, o e x chega a aproximar-se demais da srie de Taylor, conforme mostram os resultados acima. -9) +m derivada o c/lculo de uma funo 3 definido como: Crie uma funo em C que receba os valores de a e : e calcule a derivada da funo f"x) # x 3 ) 3 x Resposta: #include <stdio.h> #include <stdlib.h> #include <math.h> float derivada(float a, float h) { float resultado; resultado = (pow(a+h, 3) - pow(3, a + h)) - pow(a, 3) + pow (3,a)/h; return resultado; } int main() { float a, h; printf("Entre com os valor de a: \n"); scanf("%f", &a); printf("Entre com os valor de h: \n"); scanf("%f", &h); printf("%f\n", derivada(a, h)); return 0; } --) Corrija o erro do cdigo abaixo e escreva o que ele imprime na sa;da "compile)o em C%%): Resposta: #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; void funcao1(int a) { a = 3; } void funcao2(int a) { a = 5; } int main() { int a = 2; printf("%d\n", a); funcao1(a); printf("%d\n", a); funcao2(a); printf("%d\n", a); funcao2(3); } <a;da: 2 2 2 -2) Crie uma funo recursiva que escreva os d;gitos de um n2mero0 =or exemplo: +ntrada: *.60 <a;da: seis oito nove Resposta: #include <stdio.h> #include <stdlib.h> void escreve(int N) { if (N < 10) { switch(N) { case 1: printf("um "); break; case 2: printf("dois "); break; case 3: printf("tres "); break; case 4: printf("quatro "); break; case 5: printf("cinco "); break; case 6: printf("seis "); break; case 7: printf("sete "); break; case 8: printf("oito "); break; case 9: printf("nove "); break; case 0: printf("zero "); break; } } else { escreve(N/10); int = N%10; switch() { case 1: printf("um "); break; case 2: printf("dois "); break; case 3: printf("tres "); break; case 4: printf("quatro "); break; case 5: printf("cinco "); break; case 6: printf("seis "); break; case 7: printf("sete "); break; case 8: printf("oito "); break; case 9: printf("nove "); break; case 0: printf("zero "); break; } } } int main() { int N; printf("Entre como valor: "); scanf("%d", &N); escreve(N); } -3) Crie uma funo que preenc:a com n2meros aleatrios um vetor0 1tili5a as fun>es rand e srand em C0 Resposta: #include <stdio.h> #include <stdlib.h> #define LM 500 void imprime_vetor(int vetor[], int t) { int i; for (i = 0; i < t; i++) printf("%d ", vetor[i]); printf("\n"); } void vetor_aleatorio(int vetor[], int t) { int i, a; printf("Entre com o valor semente: "); scanf("%d", &a); srand(a); for (i = 0; i < t; i++) { int r = rand(); vetor[i] = r; } } int main() { int vetor[LM], b; while(b > LM); { printf("Entre com um tamanho valido do vetor: \n"); scanf("%d", &b); } vetor_aleatorio(vetor, b); imprime_vetor(vetor, b); return 0; } -&) Crie uma funo que preenc:a com n2meros aleatrios inteiros de 9 a -99 um vetor0 Resposta: #include <stdio.h> #include <stdlib.h> void imprime_vetor(int vetor[], int t) { int i; for (i = 0; i < t; i++) printf("%d ", vetor[i]); printf("\n"); } void vetor_aleatorio(int vetor[], int t) { int i, a; printf("Entre com o valor semente: "); scanf("%d", &a); srand(a); for (i = 0; i < t; i++) { int r = rand(); while (r > 100) r = rand(); vetor[i] = r; } } int main() { int vetor[10]; vetor_aleatorio(vetor, 10); imprime_vetor(vetor, 10); return 0; } -') Crie uma funo que receba um vetor de n2meros inteiros de 9 a -99 e some todos os n2meros pares0 Resposta: #include <stdio.h> #include <stdlib.h> #define LM 500 void imprime_vetor(int vetor[], int t) { int i, soma = 0, j; printf("\n"); for (i = 0; i < t; i++) { printf("%d ", vetor[i]); } printf("\n"); for (j = 0; j < t; j++) { if(vetor[j]%2 == 0) { soma += vetor[j]; } } printf("\nA Soma dos vetores pares eh: %d", soma); } void vetor_aleatorio(int vetor[], int t) { int i, a; printf("Entre com o valor semente: "); scanf("%d", &a); srand(a); for (i = 0; i < t; i++) { int r = rand(); while (r > 100) r = rand(); vetor[i] = r; } } int main() { int vetor[LM], b, j, soma = 0; while(b > LM); { printf("Entre com um tamanho valido do vetor: "); scanf("%d", &b); printf("\n"); } vetor_aleatorio(vetor, b); imprime_vetor(vetor, b); return 0; } -*) Crie uma funo que receba tr?s vetores u! v! e w! todos de taman:o 3 e calcule o produto vetorial u # v x w Resposta: #include <stdio.h> #include <stdlib.h> void imprime_vetor(int vetor1[3], int vetor2[3], int vetor3[3]) { int i; printf("Vetor V: "); for (i = 0; i < 3; i++) { printf("%d ", vetor1[i]); } printf("\n\n"); printf("Vetor W: "); for (i = 0; i < 3; i++) { printf("%d ", vetor2[i]); } printf("\n\n"); printf("O produto de Vetor V x Vetor W = Vetor U\n\n"); printf("Vetor U: "); for (i = 0; i < 3; i++) { printf("%d ", vetor3[i]); } } void produto(int vetor1[3], int vetor2[3], int vetor3[3]) { int i, a, b; printf("Entre com o valor semente para escoha do valores do vetor1: "); scanf("%d", &a); srand(a); for (i = 0; i < 3; i++) { int r = rand(); vetor1[i] = r; } printf("Entre com o valor semente para escoha do valores do vetor2: "); scanf("%d", &b); srand(b); for (i = 0; i < 3; i++) { int r = rand(); vetor2[i] = r; } printf("\n"); for (i = 0; i < 3; i++) { vetor3[i] = vetor1[i] * vetor2[i]; } } int main() { int vetor1[3], vetor2[3], vetor3[3]; produto(vetor1, vetor2, vetor3); imprime_vetor(vetor1, vetor2, vetor3); return 0; } -,) Crie uma funo que receba dois vetores! um vetor de entrada! contendo n2meros inteiros aleatrios e outro de sa;da0 +le deve conter os & maiores valores presentes no vetor de entrada0 Resposta: #include <stdio.h> #include <stdlib.h> #define LM 500 void imprime_vetor(int vetor[], int vetor2[], int t) { int i, j; printf("Vetor 1: "); for (i = 0; i < t; i++) { printf("%d ", vetor[i]); } printf("\n\n"); printf("Vetor 2: "); for (j = 1; j < 5; j++) { printf("%d ", vetor2[j]); } } void vetor_aleatorio2(int vetor1[], int vetor2[3], int t) { int i, a; printf("Entre com o valor semente para escoha do valores: "); scanf("%d", &a); srand(a); for (i = 0; i < t; i++) { int r = rand(); vetor1[i] = r; } vetor2[1] = vetor1[1]; printf("\n"); for (i = 0; i < t; i++) { if(vetor1[i] >= vetor2[1]) { vetor2[2] = vetor2[1]; vetor2[1] = vetor1[i]; } else if(vetor1[i] < vetor2[1] && vetor1[i] >= vetor2[2]) { vetor2[3] = vetor2[2]; vetor2[2] = vetor1[i]; } else if(vetor1[i] < vetor2[2] && vetor1[i] >= vetor2[3]) { vetor2[4] = vetor2[3]; vetor2[3] = vetor1[i]; } else if(vetor1[i] < vetor2[3] && vetor1[i] >= vetor2[4]) vetor2[4] = vetor1[i]; } } int main() { int vetor[LM], vetor2[4], b; while(b > LM); { printf("Entre com um tamanho valido do vetor: "); scanf("%d", &b); printf("\n"); } vetor_aleatorio2(vetor, vetor2, b); imprime_vetor(vetor, vetor2, b); return 0; } BBLOGRAFA ASCENCO, Ana F. G. CAMPOS, Edilene A. V.. Fundamentos da Programao de Computadores. 2 ed. So Paulo: Pearson Prentice Hall, 2007. SOFFNER, Renato. Algoritmos e programao em linguagem C. 1 ed. - So Paulo: Saraiva, 2013.