8 de novembro de 2010

Algoritmo e Programação: Lista 4

Todos os programas foram desenvolvidos na linguagem de programação C, e sem utilizar diretivas específicas de sistemas operacionais, como system("pause"), getch( ) ou conio.h. Nenhum dos testes estão impressas mensagens com solicitação de dados ao usuário.


1. Escreva um programa que recebe dois números inteiros e imprima na tela a soma destes números.



view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n1,n2,soma;
  5. scanf("%d%d",&n1,&n2);
  6. soma=n1+n2;
  7. printf("%d",soma);
  8. return 0;
  9. }


2. Escreva um programa que recebe dois n umeros inteiros e imprima na tela a subtra c~ao do maior pelo menor.

view plaincopy to clipboard print:
  1. #include <stdio.h>
  2. int main(){
  3. int n1,n2,sub;
  4. scanf("%d%d",&n1,&n2); 
  5. if(n1>n2){
  6. sub=n1-n2;
  7. }
  8. else sub=n2-n1;
  9. printf("%d",sub);
  10. return 0;
  11. }

3. Escreva um programa que recebe um inteiro e imprima "s" se ele for divis vel por 11 ou "n" caso contr ario.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. int n;
  6. scanf("%d",&n);
  7.  
  8. if(n%11==0){
  9. printf("S");
  10. }
  11. else printf("N");
  12.  
  13. return 0;
  14. }

4. Escreva um programa que recebe 2 números reais como entrada e imprima a relação entre eles: se são "iguais", "menor que" ou "maior que".

view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. float n1,n2;
  6. scanf("%f%f",&n1,&n2);
  7.  
  8. if(n1>n2){ printf("%.f maior que %.f",n1,n2);}
  9. else if(n1<n2){ printf("%.f menor que %.f",n1,n2);}
  10. else printf("iguais");
  11.  
  12. return 0;
  13. }

5. Escreva um programa que recebe 3 numeros reais e imprima o menor e o maior deles.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n1,n2,n3;
  5. scanf("%d%d%d",&n1,&n2,&n3);
  6. if (n1>n2 && n1>n3){ printf("%d maior\n",n1);}
  7. if (n2>n1 && n2>n3){ printf("%d maior\n",n2);}
  8. if (n3>n1 && n3>n2){ printf("%d maior\n",n3);}
  9. if (n1<n2 && n1<n3){ printf("%d menor\n",n1);}
  10. if (n2<n1 && n2<n3){ printf("%d menor\n",n2);}
  11. if (n3<n1 && n3<n2){ printf("%d menor\n",n3);}
  12. return 0;

6. Escreva um programa que recebe 3 números inteiros e imprima eles em ordem crescente.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){

  4. int a,b,c,d;
  5. scanf("%d%d%d",&a,&b,&c);

  6. if(a > b)
  7. {
  8. d = a;
  9. a = b;
  10. b = d;
  11. }

  12. if(a > c)
  13. {
  14. d = a;
  15. a = c;
  16. c = d;
  17. }

  18. if(b > c)
  19. {
  20. d = b;
  21. b = c;
  22. c = d;
  23. }
  24. printf("%d %d %d\n",a,b,c);

  25. return 0;
  26. }

7. Escreva um programa que recebe como entrada o raio de um círculo e imprima o diâmetro, o per metro e a área desse círculo (considere = 3:14159).

view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. float r,diam,area,per,pi=3.14159;
  5. scanf("%f",&r);
  6. diam = 2*r;
  7. per = pi*diam;
  8. area = pi*r*r;
  9. printf("%.2f\n%.2f\n%.2f\n",diam,per,area);
  10. return 0;
  11. }


8. Escreva um programa que recebe 4 números e imprima a média entre estes números com precisão de duas casas decimais.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. float n1,n2,n3,n4,media;
  5. scanf("%f%f%f%f",&n1,&n2,&n3,&n4);
  6. media= (n1+n2+n3+n4)/4;
  7. printf("%.2f\n",media);
  8. return 0;
  9. }


9. Escreva um programa que recebe um inteiro n e calcule e imprima a soma dos n primeiros números naturais.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n,soma=0;
  5. int i=0;
  6. scanf("%d",&n);
  7. for(i;i<n;i++){
  8. soma=soma+i;
  9. }
  10. printf("%d\n",soma);
  11. return 0;
  12. }

10. Escreva um programa que recebe um inteiro n e calcule e imprima a multiplica ção de todos os n umeros pares de 1 at e n.

obs.: uma declaração como int, pode possuir apenas 16 bits, 32 bits ou 64 bits.



view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n,mult=1;
  5. int i=1;
  6. scanf("%d",&n);
  7. for(i;i<=n;i++)
  8. {
  9. if(i%2==0){
  10. mult=mult*i;
  11. }
  12. }
  13. printf("%d\n",mult);
  14. return 0;
  15. }


11. Escreva um programa que recebe um número x e um inteiro positivo n e imprima o resultado de x'n sem utilizar funções da biblioteca matemática.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int i, j;
  5. int x, n, result, aux;
  6. scanf("%d%d", &x,&n);
  7. if(n == 0) {
  8. result = 1;
  9. } else {
  10. result = x;
  11. for(i = 1; i < n; i++) 
  12. {
  13. aux = 0;
  14. for(j = 1; j <= x; j++)
  15. {
  16. aux = aux + result;
  17. }
  18. result = aux;
  19. }
  20. }
  21. printf("%d\n", result);
  22. return 0;
  23. }

12. Escreva um programa que recebe um inteiro n e imprima o fatorial de n.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int i;
  5. int x, result=1, aux;
  6.  
  7. scanf("%d", &x);  
  8.  
  9. for(i = 1; i <= x; i++) 
  10. {
  11. aux=i;
  12. result=result*i; 
  13. }  
  14. printf("%d\n", result);
  15. return 0;
  16. }

13. Escreva um programa que recebe uma sequência de números inteiros e imprima a soma destes números. Seu programa deve parar de ler novos números e imprimir a soma quando ler o número 0.

view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {  
  4. int n,result=0;
  5. do{
  6. scanf("%d",&n);
  7. result+=n;
  8. }while(n!=0);
  9. printf("%d\n", result);
  10. return 0;
  11. }

14. Escreva um programa que recebe n números, calcule a média entre eles e imprima quais destes números estão acima da média e quais estão abaixo da média. Seu programa deve primeiramente ler a quantidade de números (n) e imprimir primeiro aqueles que estão acima da média e depois os que estão abaixo da média na mesma ordem em que eles ocorrem no vetor.


Obs.: O código aceita somente números inteiros!



view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n,cont,i=0;
  6. float media;
  7. scanf("%d",&n);
  8. int vet[n]; 
  9. for(cont=0;cont<n;cont++)
  10. {
  11. scanf("%d",&vet[cont]);
  12. i=i+vet[cont];
  13. }
  14.  
  15. printf("\n");
  16. media = i/cont;
  17. for(cont=0;cont<n;cont++)
  18. {
  19. if (vet[cont]>media)
  20. {
  21. printf("%d\n",vet[cont]);
  22. }
  23. }
  24.  
  25. printf("\n");
  26. for(cont=0;cont<n;cont++)
  27. {
  28. if (vet[cont]<media)
  29. {
  30. printf("%d\n",vet[cont]);
  31. }
  32. }
  33. return 0;
  34. }

15. Escreva um programa que recebe n números e imprima estes números na ordem inversa em que foram digitados. Seu programa deve primeiramente ler a quantidade de números (n).


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n,cont,i=0;
  6. scanf("%d",&n);
  7. int vet[n]; 
  8. for(cont=0;cont<n;cont++)
  9. {
  10. scanf("%d",&vet[cont]);
  11. }
  12. for(cont=n-1;cont>=0;cont--)
  13. {
  14. printf("\n%d",vet[cont]);
  15. }
  16. printf("\n");
  17. return 0;
  18. }


16. Escreva um programa que recebe n números e imprima a soma dos números que estão nos índices pares do vetor. Seu programa deve primeiramente ler a quantidade de números (n).



view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n,cont,soma=0;
  6. scanf("%d",&n);
  7. int vet[n];
  8. for(cont=0;cont<n;cont++)
  9. {
  10. scanf("%d",&vet[cont]);
  11. if (cont%2==0) {
  12. soma=soma+vet[cont];
  13. }
  14. }
  15. //mostra os valores do vetor com o valor digitado
  16. /*for(cont=0;cont<n;cont++)
  17. {
  18. printf("vetor[%d]=%d\n",cont,vet[cont]);
  19. }*/
  20. printf("%d\n",soma);
  21. return 0;
  22. }

17. Escreva um programa que recebe n números, armazene-os em um vetor e depois lê mais um número e imprima "s" se este n úmero está no vetor ou "n" caso contrário.

view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n,search,cont;
  6. int val=0;
  7. scanf("%d",&n)
  8. int vet[n];
  9. for(cont=0;cont<n;cont++)
  10. {
  11. scanf("%d",&vet[cont]);
  12. }
  13. scanf("%d",&search);
  14. for(cont=0;cont<n;cont++)
  15. {
  16. if(vet[cont]==search)
  17. {
  18. val=1;
  19. }
  20. }
  21. if (val==1){ printf("s\n");}
  22. else printf("n\n");
  23. return 0;
  24. }


18. Escreva um programa que leia os números de uma matriz quadrada N x N (seu programa deve ler a dimensão N da matriz antes de tudo) e imprima a soma dos elementos da diagonal principal da matriz.

view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n,cont,soma=0;
  6. int l,c; //linha e coluna
  7. scanf("%d",&n);
  8. int mat[n][n]; 
  9. for(l=0;l<n;l++)
  10. {
  11. for (c=0;c<n;c++)
  12. {
  13. scanf("%d",&mat[l][c]);
  14. }
  15. }
  16. // o comentado imprime a matriz na tela
  17. /*printf("\n");
  18. for(l=0;l<n;l++)
  19. { printf("\n");
  20. for (c=0;c<n;c++)
  21. {
  22. printf("%d ",mat[l][c]);
  23. }
  24. }
  25. */
  26. for(l=0;l<n;l++)
  27. {
  28. for (c=0;c<n;c++)
  29. {
  30. if (l==c){soma+=mat[l][c];}
  31. }
  32. }
  33. printf("\n%d\n ",soma);
  34. return 0;
  35. }

19. Escreva um programa que recebe duas matrizes de mesma dimensão N x M (seu programa deve ler as dimensões N e M da matriz antes de tudo) e imprima a soma destas matrizes.


view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n,m, cont;
  6. int l,c;
  7. scanf("%d%d",&n,&m);
  8. int mat1[n][m],mat2[n][m],mat_soma[n][m];

  9. for(l=0;l<n;l++)
  10. {
  11. for (c=0;c<m;c++)
  12. {
  13. scanf("%d",&mat1[l][c]);
  14. }
  15. }
  16. for(l=0;l<n;l++)
  17. {
  18. for (c=0;c<m;c++)
  19. {
  20. scanf("%d",&mat2[l][c]);
  21. }
  22. for(l=0;l<n;l++)
  23. {
  24. for (c=0;c<m;c++)
  25. {
  26. mat_soma[l][c]=mat1[l][c]+mat2[l][c];
  27. }
  28. printf("\n");
  29. // imprime o valor das matrizes na tela
  30. /*for(l=0;l<n;l++)
  31. {
  32. printf("\n");
  33. for (c=0;c<m;c++)
  34. {
  35. printf("%d ",mat1[l][c]);
  36. }
  37. }
  38. printf("\n");
  39. for(l=0;l<n;l++)
  40. {
  41. printf("\n");
  42. for (c=0;c<m;c++)
  43. {
  44. printf("%d ",mat2[l][c]);
  45. }
  46. */
  47. for(l=0;l<n;l++)
  48. {
  49. printf("\n");
  50. for (c=0;c<m;c++)
  51. {
  52. printf("%d ",mat_soma[l][c]);
  53. }
  54. }
  55. return 0;
  56. }

20. Uma matriz quadrada é chamada triangular superior quando todos os elementos abaixo da diagonal principal são iguais a zero. Escreva um programa que lê uma matriz N x N e imprima "s" se ela e triangular superior ou "n" caso contrário.



view plaincopy to clipboard print:
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int n;
  5. int l,c;
  6. scanf("%d",&n);

  7. int mat[n][n];

  8. for(l=0;l<n;l++)
  9. {
  10. for (c=0;c<n;c++)
  11. {
  12. scanf("%d",&mat[l][c]);
  13. }
  14. }

  15. for(l=0;l<n;l++)
  16. {
  17. for (c=0;c<n;c++)
  18. {
  19. if(l>c && mat[l][c]!=0)
  20. {
  21. printf("n\n");
  22. return 0;
  23. }
  24. }
  25. }
  26. printf("s\n");

  27. return 0;
  28. }

Todas as questões foram resolvidas e testadas por, caso haja alguma forma diferenciada que possa facilitar o algoritmo, deixem comentários.

0 comentários:

Postar um comentário

 
Design by @cleidimarviana | Bloggerized by Cleidimar Viana - Diário de Sistema