| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
ciber5
Registrado: 11 Nov 2007 Mensajes: 2
| Publicado: 11/11/2007 10:11 pm | | | Título: Perdida de digitos significantes |
| Disculpen la intromisión pero necesito ayuda con este programa, y es que ya busque como corregir los errores pero aun no encuentro una respuesta que me sirva, y es que tal vez sea tan simple que no me doy cuenta yo mismo. Pero bueno el problema esta en que en las partes que estan señaladas del programa me ocacionan un warning, que no es error con el cual no se ejecute el programa, pero quisiera de todas formas eliminar esos warning, y es que lo que aparece en el compilador Borland C es el mensaje siguiente: ""Conversion may lose significant digits"". y pues busque en libros y pues no obtengo buenos resultados. Gracias por la atención.
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <iostream.h> typedef unsigned char uchar; char Menu(void); char Opciones(char op); AND(); OR(); NOT();
main() { char op; do { op=Menu(); Opciones(op); }while(op!=0); }
char Menu() { char c; clrscr(); gotoxy(20,2); printf("\"Menu\""); printf("\n\nElija la operacion logica a realizar:"); printf("\n1 - AND"); printf("\n2 - OR"); printf("\n3 - NOT o Complemento"); printf("\nS - Para Salir"); printf("\n\n\tSeleccione una opcion: "); c = getch(); -------------------------- /////////Warning////////// return c; }
char Opciones(char op) { switch(op) { case '1': AND(); break; case '2': OR(); break; case '3': NOT(); break; case 'S': case 's': char respuesta; clrscr(); gotoxy(18,6); printf("Usted esta saliendo del menu..."); gotoxy(20,16); printf("Realmente deseas salir? (s/n): "); gotoxy(51,16); fflush(stdin); cscanf("%c",&respuesta); if(toupper(respuesta)=='N') { break; } else(toupper(respuesta)=='S'); { getche(); exit(0); } default: clrscr(); gotoxy(26,10); printf("!!!OPCION INVALIDA!!!!"); gotoxy(16,20); printf("\"Por favor tecle una opcion que si corresponda\""); } getch(); return op; }
AND() { clrscr(); uchar a,b,c; int x; printf("\n\tOperador Logico AND\n"); printf("\n\Valor de a: "); scanf("%d",&x); a=(uchar)x; printf("\nValor de b: "); scanf("%d",&x); b=(uchar)x; c=a&b; printf("\n\tResultado: %d",(int)c); printf("\n\n\n\t\"Presione una tecla para regresar al menu\""); return 0; }
OR() { clrscr(); uchar a,b,c; int x; printf("\n\tOperador Logico OR\n"); printf("\n\Valor de a: "); scanf("%d",&x); a=(uchar)x; printf("\nValor de b: "); scanf("%d",&x); b=(uchar)x; c=a|b; printf("\n\tResultado: %d",(int)c); printf("\n\n\n\t\"Presione una tecla para regresar al menu\""); return 0; }
NOT() { clrscr(); uchar a,c; int x; printf("\n\tOperador Logico NOT o Complemento\n"); printf("\n\Valor de a: "); scanf("%d",&x); a=(uchar)x; c=~a; -------------------------- /////////Warning////////// printf("\n\tResultado: %d",(int)c); printf("\n\n\n\t\"Presione una tecla para regresar al menu\""); return 0; } |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 3770 Ubicación: Mexico
| Publicado: 12/11/2007 8:17 am | | | Título: |
| Si estas trabajando en C++ los nombres correctos de los headers (usualmente archivos de inclusion) son:
| Código: | #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cctype> |
El primer mensaje de advertencia se debe a que el valor de retorno de la funcion getch es de tipo int y tu estas almacenando este en una variable de tipo char. Para solucionar este error basta con cambiar el tipo de la variable "c" a int.
El segundo se debe a que las operaciones a nivel de bits (and, or y xor) resultan, como minimo, en un valor de tipo int sin importar si los argumentos sean (o puedan ser) mas "pequeños" como usualmente sucede con los tipos char y short. La solucion aqui tambien es cambiar el tipo de la variable "c" de unsigned char a int
El programa tiene otras deficiencias que deberian generar mensajes de advertencia como el uso de nombres de headers obsoletos, no indicar el tipo de retorno de las funciones, etc.
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
| | Volver arriba | |  | ciber5
Registrado: 11 Nov 2007 Mensajes: 2
| Publicado: 12/11/2007 5:04 pm | | | Título: |
| | Muchas gracias por la ayuda, mas clara que en los libros que encontre. Ya pude resolver esos mensajes de emergencia gracias a su ayuda. Exactamente cambiando las variables por int, se solucionaron estos warning. Disculpen que haya sido algo tan sencillo pero pues, no podia resolverlo. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |