Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: padi22 en 10 Enero 2018, 05:07 am



Título: [C] Problema con fracciones
Publicado por: padi22 en 10 Enero 2018, 05:07 am
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

Código:
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]
}


Título: Re: [C] Problema con fracciones
Publicado por: MAFUS en 10 Enero 2018, 05:42 am
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.


Título: Re: [C] Problema con fracciones
Publicado por: padi22 en 10 Enero 2018, 21:27 pm
Estaba generando problemas al poner || en los if

Código:
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 :D


Título: Re: [C] Problema con fracciones
Publicado por: MAFUS en 10 Enero 2018, 21:46 pm
Puedes poner un ejemplo del caso dónde solo se escribe el numerador?


Título: Re: [C] Problema con fracciones
Publicado por: padi22 en 10 Enero 2018, 22:09 pm
(http://s2.subirimagenes.com/otros/9831334error.jpg)

Así dices?, acabo de notar que me mande una error jaja

Ahora si

(https://preview.ibb.co/mOv46m/error.png)

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


Título: Re: [C] Problema con fracciones
Publicado por: MAFUS en 11 Enero 2018, 00:50 am
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.