Título: Errores con el código de una calculadora simple Publicado por: petrusqui en 4 Marzo 2012, 22:22 pm Buneas =D
Primero presentarme en el foro, soy un adolescente de 16 años donde estoy estudiando bachillarato y ahora y desde siempre me interesa la programación. Pero solo desde unos meses me puse a estudiar en serio y he empezado con c/c++, eso si de libros y tutoriales de internet. Ya conocia este foro pero ahora me regitre porque es el unico donde veo mucha actividad en programación =P Bueno, con el código del lenguaje tengo dos problemas, uno es que al sumar dos números grandes no los suma bien, como por ejemplo 100000000000000000+100000000000000000, y la verdad no se porque. Y el otro problema que tengo es que no se me ocurre ninguna idea como poder cerrar la aplicación, porque el ultimo trozo del codigo no funciona o no lo he escrito bien =P Código: /*Esta aplicación ha sido creada por petrusqui */ ¿Una ultima pregunta, como pongo carácteres como "¿" que no pertenecen a ASCII? Saludos, petrusqui. Título: Re: Errores con el código de una calculadora simple Publicado por: Sagrini en 4 Marzo 2012, 23:03 pm Mmm... detalles:
1. No uses flush (). Lee las chinchetas 2. Declara main () como "int main (int argc, char *argv)". Es lo más correcto. 3. No uses tanto "scanf ()". Busca algo de fgetc (), getchar (), etc... Luego, eso es porque ocurre un integer overflow. Puedes intentar solucionarlo usando la palabra clave "long" a la hora de declarar x, y y resultado. Y lo otro... mira la tabla ascii. Prueba con: Código Título: Re: Errores con el código de una calculadora simple Publicado por: armizh en 4 Marzo 2012, 23:06 pm Para escribir el caracter "¿" haces:
Código http://es.wikipedia.org/wiki/P%C3%A1gina_de_c%C3%B3digos_850 (http://es.wikipedia.org/wiki/P%C3%A1gina_de_c%C3%B3digos_850) El problema al sumar los numeros es que 100000000000000000 es igual a 0x5D8A0000, que es un numero de 64 bits, por lo que en un PC de 32 bits no podras sumar. Si quieres cerrar la ventana podrias probar con retornar EXIT_SUCCESS. Código
Con eso se cierra la aplicacion. Tambien puedes retornar 0. PS: Yo tambien tengo 16 años xd Saludos Título: Re: Errores con el código de una calculadora simple Publicado por: Caballo_Alado en 4 Marzo 2012, 23:08 pm Código
el getch() capta solo un carácter, por ende no tiene sentido incluir la mayúscula pero ta >:D, para hacer que trabaje solo con s y n has Código (Aunque tampoco tenga sentido lo ultimo e.e) Título: Re: Errores con el código de una calculadora simple Publicado por: Sagrini en 4 Marzo 2012, 23:37 pm Se me olvidó contestar a eso jajaja
exit (0); / return 0; En caso de que estés dentro de otra función que no es main (), usa exit, ya que return vuelve a la función anterior. Por cierto, &c es incorrecto. es %c PS: Que mayores jejeje Título: Re: Errores con el código de una calculadora simple Publicado por: rir3760 en 4 Marzo 2012, 23:56 pm Y el otro problema que tengo es que no se me ocurre ninguna idea como poder cerrar la aplicación, porque el ultimo trozo del codigo no funciona o no lo he escrito bien =P Es por lo ultimo.Lo primero que debes hacer es evitar el uso de extensiones como la biblioteca conio de Borland, mas todavía cuando en tu programa su uso no es necesario. Con "el ultimo trozo del codigo no funciona" supongo te refieres a que el bucle (y por ende la aplicación) no finaliza aun cuando teclees un carácter distinto de 'S' y 's'. Ello se debe a que al utilizar el especificador "%c" este no ignora el espacio blanco y por ello (caso usual) se "traga" el avance de linea introducido después del segundo operando. Para solucionarlo solo tienes que agregar un espacio antes del especificador "%c", de esta forma: Código También se puede reducir de forma significativa el programa ya que todas las operaciones son comunes (petición de los operandos, solo varia la operación). Un saludo Título: Re: Errores con el código de una calculadora simple Publicado por: petrusqui en 5 Marzo 2012, 22:08 pm Mmm... detalles: 1. No uses flush (). Lee las chinchetas 2. Declara main () como "int main (int argc, char *argv)". Es lo más correcto. 3. No uses tanto "scanf ()". Busca algo de fgetc (), getchar (), etc... Luego, eso es porque ocurre un integer overflow. Puedes intentar solucionarlo usando la palabra clave "long" a la hora de declarar x, y y resultado. Y lo otro... mira la tabla ascii. Prueba con: Código 1. fflush() ya lo he quitado, como lo vi en el libro pensaba que era lo correcto. Gracias por el aviso. 2. ¿Si declaro int main (void) puede provocar algun error? 3. Gracias por el consejo, ¿pero si uso siempre la misma función puede pasar algo? 4. Muchisimas gracisa, aqui has resuelto mi problema con la suma de los dos numeros =D y tambien lo de los accentos :) Para escribir el caracter "¿" haces: Código http://es.wikipedia.org/wiki/P%C3%A1gina_de_c%C3%B3digos_850 (http://es.wikipedia.org/wiki/P%C3%A1gina_de_c%C3%B3digos_850) El problema al sumar los numeros es que 100000000000000000 es igual a 0x5D8A0000, que es un numero de 64 bits, por lo que en un PC de 32 bits no podras sumar. Si quieres cerrar la ventana podrias probar con retornar EXIT_SUCCESS. Código
Con eso se cierra la aplicacion. Tambien puedes retornar 0. PS: Yo tambien tengo 16 años xd Saludos Gracias por lo de los carácteres me ha ayudado muchsíssimo =D Por cierto mi PC es de 64 bits, creo que el problema fue por no poner el long double, diria. Y al final para cerrar la ventana he pusto return 0; Código
el getch() capta solo un carácter, por ende no tiene sentido incluir la mayúscula pero ta >:D, para hacer que trabaje solo con s y n has Código (Aunque tampoco tenga sentido lo ultimo e.e) Es por si el usuario pone "S" que no se le cierre la ventana, ya que c++ es case sensitive, aunque gracias por la ayuda =D Se me olvidó contestar a eso jajaja exit (0); / return 0; En caso de que estés dentro de otra función que no es main (), usa exit, ya que return vuelve a la función anterior. Por cierto, &c es incorrecto. es %c PS: Que mayores jejeje Gracias, me has ayudado mucho, ya se cierra la ventana =D Y en el código estaba escrito con %c Es por lo ultimo. Lo primero que debes hacer es evitar el uso de extensiones como la biblioteca conio de Borland, mas todavía cuando en tu programa su uso no es necesario. Con "el ultimo trozo del codigo no funciona" supongo te refieres a que el bucle (y por ende la aplicación) no finaliza aun cuando teclees un carácter distinto de 'S' y 's'. Ello se debe a que al utilizar el especificador "%c" este no ignora el espacio blanco y por ello (caso usual) se "traga" el avance de linea introducido después del segundo operando. Para solucionarlo solo tienes que agregar un espacio antes del especificador "%c", de esta forma: Código También se puede reducir de forma significativa el programa ya que todas las operaciones son comunes (petición de los operandos, solo varia la operación). Un saludo Gracias por la sugerenci, todavia no tengo dominado todas las bibliotecas =P Y tuviste razon tenia que poner un espacio, muchissimas gracias por cierto Esto del c++ tampoco es tan fácil... Sobre lo de reducir el código lo pense, pero ya que no tengo interfaz gráfica pense en dar un poco más de belleza al castellano =P GRACIAS A TODOS Título: Re: Errores con el código de una calculadora simple Publicado por: rir3760 en 6 Marzo 2012, 02:46 am 2. ¿Si declaro int main (void) puede provocar algun error? No.Si defines la función principal como "int main(void) ..." o "int main(int argc, char *argv[]) ..." el compilador debe aceptarla si o si. Con otras definiciones no hay (y ese es el problema) garantías. Algunos compiladores se quejan mediante un mensaje de advertencia si defines la función principal en la segunda forma sin utilizar, después, los argumentos en el programa (lo cual es correcto en el sentido de tener variables declaradas pero sin uso). Un saludo |