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#include<stdio.h>
int euclides (x,y){
if (x>y){
int a;
a=x/y;
if (a!=0){
int b;
b=y/a;
if (b!=0){
int c;
c=a/b;
if (c!=0){
int d;
d=b/c;
if (d!=0){
int e;
e=c/d;
if (e!=0){
int f;
f=d/e;
if (f!=0){
int g;
g=e/f;
if (g!=0){
int h;
h=f/g;
if (h!=0){
int i;
i=g/h;
if (i!=0){
int j;
j=h/i;
if (j!=0){
return 0;
}
else{
return j;
}
}
else{
return i;
}
}
else{
return h;
}
}
else{
return g;
}
}
else{
return f;
}
}
else{
return e;
}
}
else{
return d;
}
}
else{
return c;
}
}
else{
return b;
}
}
else{
return a;
}
}
else {
int a;
a=y/x;
if (a!=0){
int b;
b=x/a;
if (b!=0){
int c;
c=a/b;
if (c!=0){
int d;
d=b/c;
if (d!=0){
int e;
e=c/d;
if (e!=0){
int f;
f=d/e;
if (f!=0){
int g;
g=e/f;
if (g!=0){
int h;
h=f/g;
if (h!=0){
int i;
i=g/h;
if (i!=0){
int j;
j=h/i;
if (j!=0){
return 0;
}
else{
return j;
}
}
else{
return i;
}
}
else{
return h;
}
}
else{
return g;
}
}
else{
return f;
}
}
else{
return e;
}
}
else{
return d;
}
}
else{
return c;
}
}
else{
return b;
}
}
else{
return a;
}
}
}
int main(){
int o, w, resultat;
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"); resultat=euclides(o,w);
printf("\n El Maxim Comu Divisor de %g ",o
); return 0;
}
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