Autor
|
Tema: [C] Problema con fracciones (Leído 2,986 veces)
|
padi22
Desconectado
Mensajes: 3
|
No es el código final. Buenas gente, tengo un problema con mi código que no doy solucion, quiero que al poner fracciones si la persona no pone el segundo numero en ambas fracciones, el programa automáticamente le asigne 1, el problema es que no entiendo por que no lo hace, alguna idea? Gracias int main(){ int numero=0, resultado=0,numero3=0,numero2=0,resultado22=0,h=0;
printf("\nIngresa las fracciones en formato x/x"); printf("\nFa1/F1: "); scanf("%d/%d",&numero,&numero2); printf("\nFa2/Fa2: "); scanf("%d/%d",&numero3,&num.pote); resultado= (numero * numero3); if(numero2 == 0 || numero2 == 1){ resultado22=num.pote; printf("\n\nEl Resultado es = %d/%d",resultado,resultado22); }else if(num.pote == 0 || num.pote == 1){ resultado22=numero2; printf("\n\nEl Resultado es = %d/%d",resultado,resultado22); }else if(num.pote > 1 && numero2>1){ resultado22= numero2 * num.pote; printf("\n\nEl Resultado es = %d/%d",resultado,resultado22);
}[color=yellow][b]else if(numero2 == 0 && num.pote == 0){ resultado22=1; printf("\n\nEl Resultado es = %d/%d",resultado,resultado22);[/b][/color] }
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
scanf es un maldito y si le formateas una entrada espera que exactamente sea eso, no puedes saltarte nada, sino hará cosas muy raras.
Tú única solución es leer la entrada como si fuera una cadena y descifrarla tu a mano, si quieres que el programa se comporte como dices, claro.
|
|
|
En línea
|
|
|
|
padi22
Desconectado
Mensajes: 3
|
Estaba generando problemas al poner || en los if int main(){ fflush(stdin); printf("\nIngresa las fracciones en formato x/x"); printf("\nFa1/F1: "); scanf("%d/%d",&num.a,&num.b); printf("\nFa2/Fa2: "); scanf("%d/%d",&num.c,&num.d); num.h= (num.a * num.c); if(num.b == 0 && num.d == 0){ num.e=1; printf("\n\nEl Resultado es = %d/%d",num.h,num.e); }else if(num.d == 0){ num.e=num.b; printf("\n\nEl Resultado es = %d/%d",num.h,num.e); }else if(num.b == 0){ num.e=num.d; printf("\n\nEl Resultado es = %d/%d",num.h,num.e);
}else if (num.d >=1 && num.b >=1) { num.e=num.b*num.d; printf("\n\nEl Resultado es = %d/%d",num.h,num.e); }else{ printf("\nError."); } } ahora funciona como debe ser
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Puedes poner un ejemplo del caso dónde solo se escribe el numerador?
|
|
|
En línea
|
|
|
|
padi22
Desconectado
Mensajes: 3
|
Así dices?, acabo de notar que me mande una error jaja Ahora si no entiendo por que en las variables num.b y num.d, se guarda un dato y lo sigue usando y nunca se remplaza, tengo que poner despues de cada calculo que esos valores se remplacen por 1 :S
|
|
« Última modificación: 10 Enero 2018, 22:41 pm por padi22 »
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Ya que la variable num no forman parte de la función, por el comportamiento son globales, pues sí, mantendrán los datos que la función no modifica.
Ahora, cuando arregles eso, me gustaría ver unos ejemplos con denominadores a 0.
|
|
|
En línea
|
|
|
|
|
|