problema al imprimir el resultado en un programa en C

Iniciado por Ed, 15 Junio 2017, 23:07 PM

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

Ed

Aqui el codigo... compila bien... pero no ejecuta como se esperaba >:(



#include<stdio.h>

int main ()
{
int a,b;
int solucion;
char opcion,salir;

system("cls");
printf("introduzca el valor del numero a:  ");
scanf("%i",&a);

printf("introduzca el valor del numero b:  ");
scanf("%i",&b);

printf("\n\nelija el tipo de operador que desee utilizar ingresando la opcion:  \n");
printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
printf("º   1)  AND      º\n");
printf("º   2)  OR       º\n");
printf("È%ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");

scanf("%s",&opcion);

switch(opcion)
{

case '1':
solucion = ((a<b)&&(a>b));
printf("\nla solucion de ( ( %i < %i ) && ( %i > %i ) )  es:  %i",a,b,a,b,solucion);
break;

case '2':
solucion= ((a<b)||(a>b));
printf("\nla solucion de ( ( %i < %i ) || ( %i > %i ) ) es:   %i",a,b,a,b,solucion);

break;

default:
printf("\nopcion invalida.");


}
getch();
return main();
}

MAFUS

¿Qué te sale y qué esperabas?

Muy mal por el return main();
En su lugar usa bucles infinitos, si quieres, como el while(1) o for(;;)

Ed

me aparece asi: 
------------------------------------------------------------
introduzca el valor del numero a:  1
introduzca el valor del numero b:  2


elija el tipo de operador que desee utilizar ingresando la opcion:
╔════════════════╗
║   1)  AND               ║
║   2)  OR                 ║
╚════════════════╝
2

la solucion de ( ( 1 < 0 ) || ( 1 > 0 ) ) es:   1
-------------------------------------------------------
el probleme esta en que no me aparece el numero que le asigne a la variable "b"... en este caso se supone que es 2... pero me imprime un cero...

MAFUS

Parece que tienes un problema de desbordamiento de memoria.
Básicamente opcion es un char, y así la tratas en los case, pero cuando la capturas lo haces como una cadena en el scanf. El compilador captura una cadena, que en tu caso serán 2 caracteres, el segundo un 0. pero como solo tienes espacio para uno así que ese 0 tiene que ir a algun sitio y, tal como tu compilador ha dispuesto las variables en memoria, va a sobrescribir b.

Serapis

Recuerda que el resultado de una expresión buleana es un buleano:
22 es mayor que 5 ? Respuesta: TRUE
234 es igual que 160 ? FALSO

Tu puedes formatear TRUE o FALSE para que arroje otro valor...

Ed


#include<stdio.h>

int main ()
{
int a,b;
int solucion, opcion;

system("cls");
printf("introduzca el valor del numero a:  ");
scanf("%i",&a);

printf("introduzca el valor del numero b:  ");
scanf("%i",&b);

printf("\n\nelija el tipo de operador que desee utilizar ingresando la opcion:  \n");
printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
printf("º   1)  AND      º\n");
printf("º   2)  OR       º\n");
printf("È%ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");

scanf("%i",&opcion);

switch(opcion)
{

case 1:
solucion = ((a<b)&&(a>b));
printf("\nla solucion de ( ( %i < %i ) && ( %i > %i ) )  es:  %i",a,b,a,b,solucion);
break;

case 2:
solucion= ((a<b)||(a>b));
printf("\nla solucion de ( ( %i < %i ) || ( %i > %i ) ) es:   %i",a,b,a,b,solucion);

break;

default:
printf("\nopcion invalida.");


}
getch();
return main();
}



aqui como ahora me aparece:
------------------------------------------------------------------------
valor del numero a:  3
introduzca el valor del numero b:  8


elija el tipo de operador que desee utilizar ingresando la opcion:
╔════════════════╗
║   1)  AND                   ║
║   2)  OR                     ║
╚════════════════╝
2

la solucion de ( ( 3 < 8 ) || ( 3 > 8 ) ) es:   1
---------------------------------------------------------------------