IvoSilva

[PROG1] Ficha 11 | Exercício 1

Jan 12th, 2012
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.99 KB | None | 0 0
  1. // Header
  2.  
  3. int ler_polinomio(int poli[]) ;
  4. void escreve_polinomio(int poli[] , int grau) ;
  5. void adiciona_polinomios(int pol_A[] , int pol_B[] , int pol_R[] , int maior_grau) ;
  6. float calc(int pol_A[] , int grau , float x) ;
  7.  
  8. // Funções
  9.  
  10. #include <stdio.h>
  11. #define MAX_GRAU_POLI 10
  12. int power(int x , int grau)
  13. {
  14.     if (grau >= 1) return (x * power(x , --grau)) ;
  15.     else return (1) ;
  16. }
  17. int ler_polinomio(int poli[])
  18. {
  19.     int i ;
  20.     for (i = 0 ; i < 11 ; i++)
  21.     {
  22.         printf ("Escreva o coefiente de grau %d: " , i) ;
  23.         scanf ("%d" , &poli[i]) ;
  24.     }
  25.     for (i = 10 ; i >= 0 ; i--) if (poli[i] != 0) break ;
  26.     return i ;
  27. }
  28. void escreve_polinomio(int poli[] , int grau)
  29. {
  30.     int i ;
  31.     printf ("Polinómio:") ;
  32.     for (i = grau ; i >= 0 ; i--) printf (" %dx^%d" , poli[i] , i) ;
  33.     printf ("\n") ;
  34.  }
  35. void adiciona_polinomios(int pol_A[] , int pol_B[] , int pol_R[] , int maior_grau)
  36. {
  37.     int i ;
  38.     printf ("Soma de polinómios:\n") ;
  39.     printf ("Primeiro polinómio:") ;
  40.     for (i = 10 ; i > 0 ; i--) printf (" %dx%d" , pol_A[i] , i) ;
  41.     printf ("\nSegundo polinómio :") ;
  42.     for (i = 10 ; i > 0 ; i--) printf (" %dx%d" , pol_B[i] , i) ;
  43.     printf ("\nSoma dos dois polinómios com grau = %d :" , maior_grau) ;
  44.     for (i = maior_grau ; i >= 0 ; i--)
  45.     {
  46.         pol_R[i] = pol_A[i] + pol_B[i] ;
  47.         printf (" %dx^%d" , pol_R[i] , i) ;
  48.     }
  49.     printf ("\n") ;
  50. }
  51. float calc(int pol_A[] , int grau , float x)
  52. {
  53.     int i , soma = 0 ;
  54.     for (i = 10 ; i >= 0 ; i--) soma += pol_A[i] * power(x , i) ;
  55.     return soma ;
  56. }
  57.  
  58. // Programa
  59.  
  60. #include <stdio.h>
  61. #include "header.h"
  62. #define MAX_GRAU_POLI 10
  63. void main()
  64. {
  65.     int op , poli[MAX_GRAU_POLI] , pol_A[MAX_GRAU_POLI] , pol_B[MAX_GRAU_POLI] , pol_R[MAX_GRAU_POLI] , grau , grauA , grauB , x ;
  66.     while (op != 5)
  67.     {
  68.         printf ("1. Ler polinómio ;\n") ;
  69.         printf ("2. Escreve polinómio ;\n") ;
  70.         printf ("3. Soma de dois polinómios ;\n") ;
  71.         printf ("4. Calcular para um dado valor de 'x' ;\n") ;
  72.         printf ("5. Sair ;\n") ;
  73.         printf ("Opção : ") ;
  74.         scanf ("%d" , &op) ;
  75.         system ("clear") ;
  76.         switch (op)
  77.         {
  78.             case 1 : grau = ler_polinomio(poli) ;
  79.                      continue ;
  80.             case 2 : escreve_polinomio(poli , grau) ;
  81.                      continue ;
  82.             case 3 : grauA = ler_polinomio(pol_A) ;
  83.                      grauB = ler_polinomio(pol_B) ;
  84.                      if (grauA > grauB) grau = grauA ;
  85.                      else grau = grauB ;
  86.                      adiciona_polinomios(pol_A , pol_B , pol_R , grau) ;
  87.                      continue ;
  88.             case 4 : printf ("Valor de x : ") ;
  89.                      scanf ("%d" , &x) ;
  90.                      grau = ler_polinomio(poli) ;
  91.                      printf ("Resultado : %.2f\n" , calc(poli , grau , x)) ;
  92.                      continue ;
  93.             case 5 : break ;
  94.             system ("clear") ;
  95.         }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment