| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
hipno_12
Registrado: 10 Oct 2007 Mensajes: 7
| Publicado: 10/10/2007 6:23 pm | | | Título: por favor ayuda con un programa en c++ |
| el problema es que al ejecutarlo no hace la suma todo lo demas si y a la hora de pedir si desea volver a hacer una operacion se sale a pesar de que la condicion sea verdadera /*calculadora simple*/ #include <stdio.h> #include <conio.h> main() {
int a,b,d,oper; float c;
printf("calculadora simple\n"); d==1;
printf("1suma\n"); printf("2resta\n"); printf("3multiplicacion\n"); printf("4division\n"); printf("¿que operacion quiere realizar? \n"); scanf("%d", &oper); { while(d==1) { if(oper==1) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf(" introduzca el segundo numero\n"); scanf("%d", &b); c = a + b; printf(" El resultado es: %f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); getch(); } }
if (oper==2) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf("introduzca el segundo numero\n"); scanf("%d", &b); c = a - b; printf(" El resultado es: %f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); } getch();
if (oper == 3) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf("introduzca el segundo numero\n"); scanf("%d", &b); c = a * b; printf(" El resultado es: %f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); } getch();
if(oper==4) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf(" introduzca el segundo numero\n"); scanf("%d", &b); c = a / b; printf(" El resultado es:%.1f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); getch();
} } } |
| | Volver arriba | |  | Lycoris
Registrado: 10 Oct 2007 Mensajes: 26
| Publicado: 10/10/2007 7:29 pm | | | Título: |
| hola, mira yo tambien soy principiante en C ! llevo unos dias practicando, bueno espero que te sirva mi pequeña ayuda.
no cambie mucho tu programa para que puedas comprender tus errores.
| Código: | // calculadora simple
#include <stdio.h> #include <conio.h> int main(){
int a,b,oper; char d; float c; volver: printf("\n Calculadora simple\n"); d=0; do{ printf("1.- Suma\n"); printf("2.- Resta\n"); printf("3.- Multiplicacion\n"); printf("4.- Division\n"); printf("\nQue operacion quiere realizar? : "); fflush(stdin); // Limpia el Buffer scanf("%d", &oper); }while(oper< 1 || oper > 4);
if(oper==1){
printf("\nIntroduzca el primer numero: "); scanf("%d", &a); printf("\nIntroduzca el segundo numero: "); scanf("%d", &b); c = a + b; printf(" El resultado es: %1.f\n", c); printf("\nDesea hacer otra opreracion presione? S/N: "); scanf("%s",&d); system("cls"); }
if(d=='s' || d=='S'){
goto volver;
} if(d=='n' || d=='N'){ printf("\n Adios"); }
if (oper==2){
printf("\nIntroduzca el primer numero: "); scanf("%d", &a); printf("\nIntroduzca el segundo numero: "); scanf("%d", &b); c = a - b; printf(" El resultado es: %1.f\n", c); printf("\nDesea hacer otra opreracion presione? S/N: "); scanf("%s",&d); system("cls"); }
if(d=='s' || d=='S'){
goto volver; } if(d=='n' || d=='N'){ printf("\n Adios"); }
if (oper == 3) { printf("\nIntroduzca el primer numero: "); scanf("%d", &a); printf("\nIntroduzca el segundo numero: "); scanf("%d", &b); c = a * b; printf(" El resultado es: %1.f\n", c); printf("\nDesea hacer otra opreracion presione? S/N: "); scanf("%s",&d); system("cls"); }
if(d=='s' || d=='S'){
goto volver; }
if(d=='n' || d=='N'){ printf("\n Adios"); }
if(oper==4){
printf("\nIntroduzca el primer numero: "); scanf("%d", &a); printf("\nIntroduzca el segundo numero: "); scanf("%d", &b); c = a / b; printf(" El resultado es:%.2f\n", c); printf("\nDesea hacer otra opreracion presione? S/N: "); scanf("%s",&d);
system("cls");
}
if(d=='s' || d=='S'){
goto volver; }
if(d=='n' || d=='N'){ printf("\n Adios"); } }
|
Puedo tener muchos errores igual !!! |
| | Volver arriba | |  | digies
Registrado: 18 Nov 2005 Mensajes: 379 Ubicación: Cono Sur
| Publicado: 11/10/2007 6:35 am | | | Título: |
| Hola
Si eres principiante en C, te convendría no utilizar librerías no estándar hasta que no manejes con un poco más de soltura el lenguaje. Viendo un poco tu código hay un error en el d==1, esto es una comparación y no una asignación. Una versión estándar sería:
| Código: | /*calculadora simple*/
#include <stdio.h> #include <stdlib.h>
int main(void) { int a,b,d,oper; float c; do { printf("calculadora simple\n"); d=1; printf("1suma\n"); printf("2resta\n"); printf("3multiplicacion\n"); printf("4division\n"); printf("que operacion quiere realizar \n"); scanf("%d", &oper); if(oper==1) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf(" introduzca el segundo numero\n"); scanf("%d", &b); c = a + b; printf(" El resultado es: %f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); system("CLS"); } else if (oper==2) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf("introduzca el segundo numero\n"); scanf("%d", &b); c = a - b; printf(" El resultado es: %f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); system("CLS"); } else if (oper == 3) { printf("introduzca el primer numero \n"); scanf("%d", &a); printf("introduzca el segundo numero\n"); scanf("%d", &b); c = a * b; printf(" El resultado es: %f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); system("CLS"); } else { printf("introduzca el primer numero \n"); scanf("%d", &a); printf(" introduzca el segundo numero\n"); scanf("%d", &b); c = a / b; printf(" El resultado es:%.1f\n", c); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d",&d); system("CLS"); } } while(d==1); system("PAUSE"); return EXIT_SUCCESS; }
|
Un saludo |
| | Volver arriba | |  | | rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 11/10/2007 8:57 am | | | Título: |
| Otra modificacion que ayudaria a reducir significativamente el tamaño del programa es eliminar la peticion de los dos numeros en cada caso.
Debido a que todas las operaciones requieren de dos operandos es mas sencillo primero pedir estos y solo despues realizar la operacion (cuidandose de que el divisor no sea cero en el caso de la division):
Caso similar con la pregunta sobre si continuar o no. El codigo de digies quedaria reducido a:
| Código: | #include <stdio.h> #include <stdlib.h>
int main(void) { int a, b, d, oper; do { printf("calculadora simple\n"); printf("1suma\n"); printf("2resta\n"); printf("3multiplicacion\n"); printf("4division\n"); printf("que operacion quiere realizar \n"); scanf("%d", &oper); d = 1; printf("introduzca el primer numero \n"); scanf("%d", &a); printf(" introduzca el segundo numero\n"); scanf("%d", &b); if (oper == 1) printf(" El resultado es: %d\n", a + b); else if (oper == 2) printf(" El resultado es: %d\n", a - b); else if (oper == 3) printf(" El resultado es: %d\n", a * b); else if (oper == 4 && b != 0) printf(" El resultado es:%.1f\n", (double) a / b); printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:"); scanf("%d", &d); system("CLS"); } while (d == 1); system("PAUSE"); return EXIT_SUCCESS; } |
Tambien se podrian agregar algunos detallitos mas como la validacion del valor de retorno de funciones como scanf pero supongo que eso ya seria una exageracion de mi parte.
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 | |  | hipno_12
Registrado: 10 Oct 2007 Mensajes: 7
| Publicado: 11/10/2007 1:55 pm | | | Título: hola |
| | gracias por ayudarme solo tengo una pregunta si quisiera que en la 4 que es la divison al poner 0/ cualquier numero como es un error que me pida volver a introducir los numeros com se pondria |
| | Volver arriba | |  | digies
Registrado: 18 Nov 2005 Mensajes: 379 Ubicación: Cono Sur
| Publicado: 11/10/2007 3:08 pm | | | Título: |
| Si no quieres que el dividendo sea 0 simplemente colocas && a!=0 en el else-if:
| Código: | else if (oper==4 && b!=0 && a!=0) |
Pero lo más importante de todo es que el divisor no sea cero tal como lo hizo rir3760 en su código.
Un saludo |
| | Volver arriba | |  | | hipno_12
Registrado: 10 Oct 2007 Mensajes: 7
| Publicado: 12/10/2007 6:55 am | | | Título: hola de nuevo |
| | como es una tarea como seria si en lugar de <stdlib.h> fuera con <conio.h> |
| | 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
|
|
| |