Calculadora en c , ayuda Creado el día: 13/06/2011 22:52
|
Karma: 0
|
Tengo que hacer una calculadora con funciones, hice el programa pero cuando finaliza una operacion me vuelve a pedir la opciones del menu, el problema es que necesito que me vuelva a pedir unos valores nuevos de la funcion (void pedir) y despues me salga el menu de opciones para realizar una operacion nueva, hasta el momento me calcula solo operaciones de los mismos 2 valores que doy al principio. Ayuda o sugerencias porfavor. Utilizo codeblock
#include<stdio.h>
#include<math.h>
int suma (int a,int b)
{
return (a+b);
}
int resta (int a, int b)
{
return (a-b);
}
float multiplicacion(float a, float b)
{
return (a*b);
}
float division(float a, float b)
{
return (a/b);
}
float cuadrado1(float a)
{
return pow(a,2);
}
float cuadrado2(float b)
{
return pow(b,2);
}
float cubo1(float a)
{
return pow(a,3);
}
float cubo2( float b)
{
return pow(b,3);
}
float raiz1(float a)
{
return sqrt(a);
}
float raiz2(float b)
{
return sqrt(b);
}
void pedir(int *d)
{
printf("De un valor: ");
scanf("%d",&*d);
}
main()
{
int x,y,opc;
pedir(&x);
pedir(&y);
do
{
printf("\n Menu ");
printf("\n1 Suma");
printf("\n2 Resta");
printf("\n3 Multiplicacion");
printf("\n4 Division");
printf("\n5 Cuadrado");
printf("\n6 Cubo");
printf("\n7 Raiz");
printf("\n8 Salir del sistema\n");
do
{
printf("\nDe la opcion: ");
scanf("%d",&opc);
}
while(opc<1 || opc >8);
if (opc >=1 && opc <=7)
{
if(opc==1)
printf("suma =%d",suma(x,y));
else
if(opc==2)
printf("resta =%d",resta(x,y));
else
if(opc==3)
printf("multiplicacion= %.2f",multiplicacion(x,y));
else
if(opc==4)
printf("division= %.2f",division(x,y));
else
if(opc==5)
{
printf("cuadrado.1= %.2f\n",cuadrado1(x));
printf("cuadrado.2= %.2f",cuadrado2(y));
}
else
if(opc==6)
{
printf("Cubo.1= %.2f\n",cubo1(x));
printf("Cubo.2= %.2f\n",cubo2(y));
}
else
if(opc==7)
{
printf("Raiz.1= %.2f\n",raiz1(x));
printf("Raiz.2= %.2f\n",raiz2(y));
}
}
else
printf("\nFinalizando...");
}
while(opc!=8);
}
|
|
koc
Navegador Iniciado
Mensajes: 15
|
Última edición: 13/06/2011 22:55 por koc.
|
|
Re: Calculadora en c , ayuda Creado el día: 14/06/2011 11:24
|
Karma: 0
|
Hola koc .. por lo que vi en tu codigo esta muy bien solo debes mover las dos funciones pedir(); que tienes dentro del main() y meterlas al principio del ciclo do - while y asi se
pediran los valores hasta que quieras salir.. te muestro el codigo.
Nota: Espero que no copies y pegues .. analisalo y lee los comentarios.
#include<stdio.h> #include<math.h>
int suma (int a,int b) { return (a+b); } int resta (int a, int b) { return (a-b); } float multiplicacion(float a, float b) { return (a*b); } float division(float a, float b) { return (a/b); } float cuadrado1(float a) { return pow(a,2); } float cuadrado2(float b) { return pow(b,2); } float cubo1(float a) { return pow(a,3); } float cubo2( float b) { return pow(b,3); } float raiz1(float a) { return sqrt(a); } float raiz2(float b) { return sqrt(b); } void pedir(int *d) { //si le quitas el '\n' te sale pegado al resultado printf("\nDe un valor: "); scanf("%d",&*d); } main() { int x,y,opc; /* las dosfunciones pedir debes meterlas dentro del do-while para que se repita junto con el menu de opciones ;-) pedir(&x); antiguo lugar pedir(&y); antiguo lugar */ do { pedir(&x);//nuevo lugar dentro del do-while pedir(&y);//nuevo lugar dentro del do-while printf("\n Menu "); printf("\n1 Suma"); printf("\n2 Resta"); printf("\n3 Multiplicacion"); printf("\n4 Division"); printf("\n5 Cuadrado"); printf("\n6 Cubo"); printf("\n7 Raiz"); printf("\n8 Salir del sistema\n"); do { printf("\nDe la opcion: "); scanf("%d",&opc); } while(opc<1 || opc >8); if (opc >=1 && opc <=7) { if(opc==1) printf("suma =%d",suma(x,y)); else if(opc==2) printf("resta =%d",resta(x,y)); else if(opc==3) printf("multiplicacion= %.2f",multiplicacion(x,y)); else if(opc==4) printf("division= %.2f",division(x,y)); else if(opc==5) { printf("cuadrado.1= %.2f\n",cuadrado1(x)); printf("cuadrado.2= %.2f",cuadrado2(y)); } else if(opc==6) { printf("Cubo.1= %.2f\n",cubo1(x)); printf("Cubo.2= %.2f\n",cubo2(y)); } else if(opc==7) { printf("Raiz.1= %.2f\n",raiz1(x)); printf("Raiz.2= %.2f\n",raiz2(y)); } } else printf("\nFinalizando..."); } while(opc!=8); }
|
|
OROCHI
Navegador Iniciado
Mensajes: 6
|
|
|
Re: Calculadora en c , ayuda Creado el día: 15/06/2011 19:15
|
Karma: 0
|
Hola orochi sabes como pudiera hacer para que debajo del main no hubiera printf ni el menu, me refiero hacer el menu en una funcion y que no este en el main, que solo esten las funciones de pedir como pudiera hacer eso? Muchas Gracias por tu ayuda.
|
|
koc
Navegador Iniciado
Mensajes: 15
|
|
|
Re: Calculadora en c , ayuda Creado el día: 16/06/2011 08:46
|
Karma: 0
|
Hola kof me alegra que te sirva mi ayuda.. veras para hacer todo en una funcion solo toma el codigo y metelo en una funcion nueva y luego la llamas de esta forma:
recurda no Copy and Paste
Te que daria masbinito si tomas las funciones y las metes dentro de un rachivo
cabezera algo asi como un modulo.. investiga..
#include<stdio.h> #include<math.h>
int suma (int a,int b) { return (a+b); } int resta (int a, int b) { return (a-b); } float multiplicacion(float a, float b) { return (a*b); } float division(float a, float b) { return (a/b); } float cuadrado1(float a) { return pow(a,2); } float cuadrado2(float b) { return pow(b,2); } float cubo1(float a) { return pow(a,3); } float cubo2( float b) { return pow(b,3); } float raiz1(float a) { return sqrt(a); } float raiz2(float b) { return sqrt(b); } void pedir(int *d) { //si le quitas el '\n' te sale pegado al resultado printf("\nDe un valor: "); scanf("%d",&*d); } //nueva funcion todo.. void all() { int x,y,opc; do { pedir(&x);//nuevo lugar dentro del do-while pedir(&y);//nuevo lugar dentro del do-while printf("\n Menu "); printf("\n1 Suma"); printf("\n2 Resta"); printf("\n3 Multiplicacion"); printf("\n4 Division"); printf("\n5 Cuadrado"); printf("\n6 Cubo"); printf("\n7 Raiz"); printf("\n8 Salir del sistema\n"); do { printf("\nDe la opcion: "); scanf("%d",&opc); } while(opc<1 || opc >8); if (opc >=1 && opc <=7) { if(opc==1) printf("suma =%d",suma(x,y)); else if(opc==2) printf("resta =%d",resta(x,y)); else if(opc==3) printf("multiplicacion= %.2f",multiplicacion(x,y)); else if(opc==4) printf("division= %.2f",division(x,y)); else if(opc==5) { printf("cuadrado.1= %.2f\n",cuadrado1(x)); printf("cuadrado.2= %.2f",cuadrado2(y)); } else if(opc==6) { printf("Cubo.1= %.2f\n",cubo1(x)); printf("Cubo.2= %.2f\n",cubo2(y)); } else if(opc==7) { printf("Raiz.1= %.2f\n",raiz1(x)); printf("Raiz.2= %.2f\n",raiz2(y)); } } else printf("\nFinalizando..."); } while(opc!=8); } main() { /* todo esto lo metimos dentro de la funcion all para luego llamarla int x,y,opc; do { pedir(&x);//nuevo lugar dentro del do-while pedir(&y);//nuevo lugar dentro del do-while printf("\n Menu "); printf("\n1 Suma"); printf("\n2 Resta"); printf("\n3 Multiplicacion"); printf("\n4 Division"); printf("\n5 Cuadrado"); printf("\n6 Cubo"); printf("\n7 Raiz"); printf("\n8 Salir del sistema\n"); do { printf("\nDe la opcion: "); scanf("%d",&opc); } while(opc<1 || opc >8); if (opc >=1 && opc <=7) { if(opc==1) printf("suma =%d",suma(x,y)); else if(opc==2) printf("resta =%d",resta(x,y)); else if(opc==3) printf("multiplicacion= %.2f",multiplicacion(x,y)); else if(opc==4) printf("division= %.2f",division(x,y)); else if(opc==5) { printf("cuadrado.1= %.2f\n",cuadrado1(x)); printf("cuadrado.2= %.2f",cuadrado2(y)); } else if(opc==6) { printf("Cubo.1= %.2f\n",cubo1(x)); printf("Cubo.2= %.2f\n",cubo2(y)); } else if(opc==7) { printf("Raiz.1= %.2f\n",raiz1(x)); printf("Raiz.2= %.2f\n",raiz2(y)); } } else printf("\nFinalizando..."); } while(opc!=8); */ //llamada a la funcion que tiene todo all(); }
|
|
OROCHI
Navegador Iniciado
Mensajes: 6
|
|
|
|