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();
}
¿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(;;)
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...
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.
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...
#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
---------------------------------------------------------------------