[C] Problema con fracciones

Iniciado por padi22, 10 Enero 2018, 05:07 AM

0 Miembros y 1 Visitante están viendo este tema.

padi22

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]
}

MAFUS

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.

padi22

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 :D

MAFUS

Puedes poner un ejemplo del caso dónde solo se escribe el numerador?

padi22

#4


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

MAFUS

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.