Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Ed en 15 Junio 2017, 23:07 PM

Título: problema al imprimir el resultado en un programa en C
Publicado por: Ed en 15 Junio 2017, 23:07 PM
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();
}
Título: Re: problema al imprimir el resultado en un programa en C
Publicado por: MAFUS en 16 Junio 2017, 02:22 AM
¿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(;;)
Título: Re: problema al imprimir el resultado en un programa en C
Publicado por: Ed en 16 Junio 2017, 02:50 AM
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...
Título: Re: problema al imprimir el resultado en un programa en C
Publicado por: MAFUS en 16 Junio 2017, 07:00 AM
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.
Título: Re: problema al imprimir el resultado en un programa en C
Publicado por: Serapis en 16 Junio 2017, 14:20 PM
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...
Título: Re:gracias ... ya me ha funcionado al cambiar todas la svariables a tipo entero.
Publicado por: Ed en 17 Junio 2017, 07:12 AM

#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
---------------------------------------------------------------------