elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema al imprimir el resultado en un programa en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema al imprimir el resultado en un programa en C  (Leído 3,457 veces)
Ed

Desconectado Desconectado

Mensajes: 3


absorbente constante del conocimiento ;)


Ver Perfil
problema al imprimir el resultado en un programa en C
« 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.  


« Última modificación: 15 Junio 2017, 23:14 pm por Ed » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: problema al imprimir el resultado en un programa en C
« Respuesta #1 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(;;)


En línea

Ed

Desconectado Desconectado

Mensajes: 3


absorbente constante del conocimiento ;)


Ver Perfil
Re: problema al imprimir el resultado en un programa en C
« Respuesta #2 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...
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: problema al imprimir el resultado en un programa en C
« Respuesta #3 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.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: problema al imprimir el resultado en un programa en C
« Respuesta #4 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...
En línea

Ed

Desconectado Desconectado

Mensajes: 3


absorbente constante del conocimiento ;)


Ver Perfil
Re:gracias ... ya me ha funcionado al cambiar todas la svariables a tipo entero.
« Respuesta #5 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
---------------------------------------------------------------------
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines