Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2013, 08:49
xignasix
 
Fecha de Ingreso: enero-2013
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Quien me corrige el programa?

El programa cuando lo compilo funciona pero el resultado no es correcto. Yo pongo el primer dato y luego el segundo pero el resultado sale como le da la gana. No busco que me digan como hacer el programa mas compacto o mejor. Solo busco que me ayuden a que funcione.
Es un programa para conseguir el Maximo comun divisor de 2 numeros a partir del algoritmo de euclides. Los printf estan en catalan pero el resto es c. bueno, aqui dejo el codigo.

Código C:
Ver original
  1. #include<stdio.h>
  2.  
  3. int euclides (x,y){
  4.     if (x>y){
  5.         int a;
  6.         a=x/y;
  7.         if (a!=0){
  8.             int b;
  9.             b=y/a;
  10.             if (b!=0){
  11.                 int c;
  12.                 c=a/b;
  13.                 if (c!=0){
  14.                     int d;
  15.                     d=b/c;
  16.                     if (d!=0){
  17.                         int e;
  18.                         e=c/d;
  19.                         if (e!=0){
  20.                             int f;
  21.                             f=d/e;
  22.                             if (f!=0){
  23.                                 int g;
  24.                                 g=e/f;
  25.                                 if (g!=0){
  26.                                     int h;
  27.                                     h=f/g;
  28.                                     if (h!=0){
  29.                                         int i;
  30.                                         i=g/h;
  31.                                         if (i!=0){
  32.                                             int j;
  33.                                             j=h/i;
  34.                                             if (j!=0){
  35.                                                 return 0;
  36.                                             }
  37.                                             else{
  38.                                                 return j;
  39.                                             }
  40.                                         }
  41.                                         else{
  42.                                             return i;
  43.                                         }
  44.                                     }
  45.                                     else{
  46.                                         return h;
  47.                                     }
  48.                                 }
  49.                                 else{
  50.                                     return g;
  51.                                 }
  52.                             }
  53.                             else{
  54.                                 return f;
  55.                             }
  56.                         }
  57.                         else{
  58.                             return e;
  59.                         }
  60.                     }
  61.                     else{
  62.                         return d;
  63.                     }
  64.                 }
  65.                 else{
  66.                     return c;
  67.                 }
  68.             }
  69.             else{
  70.                 return b;
  71.             }
  72.         }
  73.         else{
  74.             return a;
  75.         }
  76.     }
  77.     else {
  78.         int a;
  79.         a=y/x;
  80.         if (a!=0){
  81.             int b;
  82.             b=x/a;
  83.             if (b!=0){
  84.                 int c;
  85.                 c=a/b;
  86.                 if (c!=0){
  87.                     int d;
  88.                     d=b/c;
  89.                     if (d!=0){
  90.                         int e;
  91.                         e=c/d;
  92.                         if (e!=0){
  93.                             int f;
  94.                             f=d/e;
  95.                             if (f!=0){
  96.                                 int g;
  97.                                 g=e/f;
  98.                                 if (g!=0){
  99.                                     int h;
  100.                                     h=f/g;
  101.                                     if (h!=0){
  102.                                         int i;
  103.                                         i=g/h;
  104.                                         if (i!=0){
  105.                                             int j;
  106.                                             j=h/i;
  107.                                             if (j!=0){
  108.                                                 return 0;
  109.                                             }
  110.                                             else{
  111.                                                 return j;
  112.                                             }
  113.                                         }
  114.                                         else{
  115.                                             return i;
  116.                                         }
  117.                                     }
  118.                                     else{
  119.                                         return h;
  120.                                     }
  121.                                 }
  122.                                 else{
  123.                                     return g;
  124.                                 }
  125.                             }
  126.                             else{
  127.                                 return f;
  128.                             }
  129.                         }
  130.                         else{
  131.                             return e;
  132.                         }
  133.                     }
  134.                     else{
  135.                         return d;
  136.                     }
  137.                 }
  138.                 else{
  139.                     return c;
  140.                 }
  141.             }
  142.             else{
  143.                 return b;
  144.             }
  145.         }
  146.         else{
  147.             return a;
  148.         }
  149.     }
  150. }
  151.  
  152. int main(){
  153.     fflush(stdin);
  154.     int o, w, resultat;
  155.     printf("INSTRUCCIONES \n1r escriure el primer numero i clicar enter \n2n escriure el segon numero i tornar a clicar enter \nSi el resultat es 0 vol dir que s'han hagut de fer més de 10 divisions i no s'ha trobat el MCD \n \n");
  156.     printf("1r numero: \n");
  157.     fflush(stdin);
  158.     scanf("%d",&o);
  159.     printf("\n 2n numero: \n");
  160.     fflush(stdin);
  161.     scanf("%d",&w);
  162.     resultat=euclides(o,w);
  163.     printf("\n El Maxim Comu Divisor de %g ",o);
  164.     printf("i %g=",w);
  165.     printf(" %g",resultat);
  166.     system("pause");
  167.     return 0;
  168. }

P.D. el primer if i el primer else de la funcion es por que si X es mas grande que Y las dos o tres primeras operaciones son diferentes que si Y es mas grande que X