Foro de elhacker.net

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


Código
  1. #include<stdio.h>
  2.  
  3. int main ()
  4. {
  5. int a,b;
  6. int solucion;
  7. char opcion,salir;
  8.  
  9. system("cls");
  10. printf("introduzca el valor del numero a:  ");
  11. scanf("%i",&a);
  12.  
  13. printf("introduzca el valor del numero b:  ");
  14. scanf("%i",&b);
  15.  
  16. printf("\n\nelija el tipo de operador que desee utilizar ingresando la opcion:  \n");
  17. printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
  18. printf("º   1)  AND      º\n");
  19. printf("º   2)  OR       º\n");
  20. printf("È%ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
  21.  
  22. scanf("%s",&opcion);
  23.  
  24. switch(opcion)
  25. {
  26.  
  27. case '1':
  28. solucion = ((a<b)&&(a>b));
  29. printf("\nla solucion de ( ( %i < %i ) && ( %i > %i ) )  es:  %i",a,b,a,b,solucion);
  30. break;
  31.  
  32. case '2':
  33. solucion= ((a<b)||(a>b));
  34. printf("\nla solucion de ( ( %i < %i ) || ( %i > %i ) ) es:   %i",a,b,a,b,solucion);
  35.  
  36. break;
  37.  
  38. default:
  39. printf("\nopcion invalida.");
  40.  
  41.  
  42. }
  43. getch();
  44. return main();
  45. }
  46.  


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
Código
  1. #include<stdio.h>
  2.  
  3. int main ()
  4. {
  5. int a,b;
  6. int solucion, opcion;
  7.  
  8. system("cls");
  9. printf("introduzca el valor del numero a:  ");
  10. scanf("%i",&a);
  11.  
  12. printf("introduzca el valor del numero b:  ");
  13. scanf("%i",&b);
  14.  
  15. printf("\n\nelija el tipo de operador que desee utilizar ingresando la opcion:  \n");
  16. printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
  17. printf("º   1)  AND      º\n");
  18. printf("º   2)  OR       º\n");
  19. printf("È%ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
  20.  
  21. scanf("%i",&opcion);
  22.  
  23. switch(opcion)
  24. {
  25.  
  26. case 1:
  27. solucion = ((a<b)&&(a>b));
  28. printf("\nla solucion de ( ( %i < %i ) && ( %i > %i ) )  es:  %i",a,b,a,b,solucion);
  29. break;
  30.  
  31. case 2:
  32. solucion= ((a<b)||(a>b));
  33. printf("\nla solucion de ( ( %i < %i ) || ( %i > %i ) ) es:   %i",a,b,a,b,solucion);
  34.  
  35. break;
  36.  
  37. default:
  38. printf("\nopcion invalida.");
  39.  
  40.  
  41. }
  42. getch();
  43. return main();
  44. }


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