Autor
|
Tema: [Solucionado] Problema con Calculadora (Leído 4,067 veces)
|
Caster
|
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { int a,f; double s,d; printf("Elija una opcion: \n\n1.Sumar\n2.Restar\n3.Multiplicar\n4.Dividir\n\n"); scanf("%d" , &a); switch(a) { case 1: printf("\nIntroduzca el primer numero:\n\n"); scanf("%lf" , &s); printf("\nIntroduzca el segundo numero:\n\n"); scanf("%lf" , &d); printf("\nResultado: %lf\n" , s+d); break; case 2: printf("\nIntroduzca el primer numero:\n\n"); scanf("%lf" , &s); printf("\nIntroduzca el segundo numero:\n\n"); scanf("%lf" , &d); printf("\nResultado: %lf\n" , s-d); break; case 3: printf("\nIntroduzca el primer numero:\n\n"); scanf("%lf" , &s); printf("\nIntroduzca el segundo numero:\n\n"); scanf("%lf" , &d); printf("\nResultado: %lf\n" , s*d); break; case 4: printf("\nIntroduzca el primer numero:\n\n"); scanf("%lf" , &s); printf("\nIntroduzca el segundo numero:\n\n"); scanf("%lf" , &d); printf("\nResultado: %lf\n\n" , s/d); break; default: printf("Opcion incorrecta\n"); break; } system("PAUSE"); return 0; }
He creado esta calculadora, pero no se me ocurre como hacer para que cuando no se introduzca la opción correcta se haga algo. Ej: La acabo de poner a funcionar y si en vez de introducir un numero introduzco una letra hace lo que le da la gana y escribe resultados muy raros, y después también, si elijo la opción incorrecta(se ejecuta el default) pero nose como hacer para que vuelva al incio. PD: He probado con "goto" pero funciona mal y me gustaría prescindir de él. Gracias Edito: He cambiado algunas cosillas del código
|
|
« Última modificación: 26 Diciembre 2011, 18:46 pm por |Demon| »
|
En línea
|
|
|
|
Sagrini
|
#include <stdio.h> int main () { int a, b, opt; printf ("Calc 0.1 : Sagrini 2011 : 22-12-11\n"); printf ("Escribe dos numeros enteros: "); scanf ("%d %d", &a , &b ); printf ("Selecciona una opcion:\n1. Sumar\t3. Multiplicar\n2. Restar\t4. Dividir\n> "); scanf ("%d", &opt ); switch (opt) { case 1 : { a+=b; break; } case 3 : { a=a*b; break; } case 2 : { a-=b; break; } case 4 : { a=a/b; break; } default: { printf ("[!] Opcion elegida no valida\n\n"); return 1; } } printf ("Ans = %d\n\n", a ); return 0; }
El código es muy mejorable, podrías modificarlo para que reconociese si los valores A y B son correctos, podrías cambiar scanf por otra función más segura... etc. Te paso la pelota. ¡Te toca! Un saludo. Sagrini
|
|
|
En línea
|
|
|
|
|
Sagrini
|
La notación polaca inversa no se usa mucho, por lo que un programa que funcione con la notación polaca inversa será ineficiente y poco útil. Yo más bien sugeriría que modificase el programa para que reconociese las operaciones desde los argumentos de main ().
|
|
|
En línea
|
|
|
|
Caster
|
Eso era lo que yo quería preguntar, ¿como haces para que reconozca A y B cuando son incorrectos? Edito: Lo he cambiado, y he hecho este: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int op; double x,y,resultado; printf("Calc 1.0 > Preython < 2011\n\n"); printf("Introduce dos numeros:\n"); scanf("%lf %lf", &x , &y ); printf("\nElije una opcion:\n1.Sumar\t\t2.Restar\n3.Multiplicar\t4.Dividir\n>"); scanf("%d", &op ); switch (op) { case 1 : { resultado = x+y; break; } case 2 : { resultado = x-y; break; } case 3 : { resultado = x*y; break; } case 4 : { resultado = x/y; break; } default : { printf("[!] Opcion incorrecta [!]\n\n"); return 1; } } printf("Resultado > %lf\n", resultado ); return 0; }
Con este código, si cuando elijo la opción incorrecta, me escribe el texto y, automáticamente, se cierra. ¿Como podría hacerlo para que no se cerrase? ¿Lo que utilice para volver a empezar si se da la opción incorrecta también lo podré utilizar para crear un switch con opciones de salir y volver a empezar? Algo así: int a; printf("Opciones:\n1.Volver a empezar\t2.Salir\n"); scanf("%d", &a ); switch (a) { case 1 : { ir al incio; break; } case 2 : { return 0; break; } }
Saludos
|
|
« Última modificación: 22 Diciembre 2011, 17:56 pm por preython »
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
Cuando da la opción incorrecta se cierra porque tienes un return en el default. Con el return ya estás devolviendo un int y cerrando tu función, es decir, el main, y por ende, se cierra el programa. Debes quitar esa instrucción para que no se cierre. Y si quieres que empiece de vuelta, puedes meter todo en un while y preguntar al usuario si quiere seguir o no, si la respuesta es si, vuelve al while (elige una condición adecuada) y si no, sales!
|
|
|
En línea
|
|
|
|
Caster
|
Aqui está: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int op,a; double x,y,resultado; do{ printf("Calc 1.0 > Preython < 2011\n\n"); printf("Introduce dos numeros:\n"); scanf("%lf %lf", &x , &y ); printf("\nElije una opcion:\n1.Sumar\t\t2.Restar\n3.Multiplicar\t4.Dividir\n>"); scanf("%d", &op ); switch (op) { case 1 : { resultado = x+y; break; } case 2 : { resultado = x-y; break; } case 3 : { resultado = x*y; break; } case 4 : { resultado = x/y; break; } default : { printf("[!] Opcion incorrecta [!]\n\n");} } printf("Resultado > %lf\n\n", resultado ); printf("Opciones:\n1.>Volver a empezar\t2.>Salir\n"); }while( a==1); return 0; }
Pero hay varios problemas, si en los numeros introduzco una letra me va directamente a "system("PAUSE");" y se cierra. Si en las opciones introduzco el numero incorrecto me dice que lo meti mal y me deja volver a empezar, pero si meto una letra me va directamente a system(PAUSE) para cerrarse.
|
|
« Última modificación: 23 Diciembre 2011, 09:58 am por PrEyThOn »
|
En línea
|
|
|
|
|
Caster
|
Me podéis poner un ejemplo fácil con "fgets()", es que no lo entiendo. ¿Vale para números?
|
|
« Última modificación: 23 Diciembre 2011, 11:44 am por PrEyThOn »
|
En línea
|
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema Calculadora en Perl
Scripting
|
Xanz
|
2
|
3,413
|
11 Febrero 2011, 22:30 pm
por Shell Root
|
|
|
Problema con calculadora basica!!!!!!!!!!
Programación C/C++
|
prometheus48
|
4
|
3,403
|
9 Octubre 2011, 14:48 pm
por prometheus48
|
|
|
PROBLEMA calculadora
Programación C/C++
|
jorgerolli
|
0
|
1,580
|
3 Diciembre 2011, 03:12 am
por jorgerolli
|
|
|
[Solucionado] Problema al crear Calculadora
Programación C/C++
|
JosebaliX
|
7
|
3,243
|
15 Agosto 2014, 15:45 pm
por JosebaliX
|
|
|
problema con calculadora graficadora
Electrónica
|
01munrra
|
0
|
2,279
|
18 Octubre 2016, 05:48 am
por 01munrra
|
|