Respuesta: Llamadas a las funciones con los parámetros "a mano". Mira aqui os dejo mi codigo para que podais exarme una mano si posible , me compila todo menos la función demostración que no lo hace automaticamente como deberia. Gracias
/* Calculadora */
# include <stdio.h>
# include <math.h>
long int operacion_potencia(int Base, int Expo);
long int operacion_factorial(int num1);
void operacion_segundogrado();
void operacion_listadoprimos(int num1);
void demostracion_de_funcionamiento ();
void operaciones_basicas(int opcion,int num1,int num2);
int main(int argc, char *argv[])
{
int opcion = -1;
int variable = 0;
int num1, num2;
int num3;
int Base, Expo;
while((opcion!=0)&&(variable<10))
{
printf("\n CALCULADORA: \n");
printf("\n____Introduzca una operacion a realizar:_____");
printf("\n ----------------------------------- ");
printf("\n 1) Suma ");
printf("\n 2) Resta ");
printf("\n 3) Multiplicacion ");
printf("\n 4) Division ");
printf("\n 5) Potencia ");
printf("\n 6) Factorial ");
printf("\n 7) Ecuacion de segundo grado ");
printf("\n 8) Listado de primos ");
printf("\n 9) Demonstracion ");
printf("\n=================================");
printf("\n Pulse 0 para salir ");
scanf("%i", &opcion);
if((opcion > 0)&& (opcion < 5))
{
operaciones_basicas(opcion,num1,num2);
}
else if(opcion==5)
{
operacion_potencia(Base, Expo);
}
else if(opcion==6)
{
operacion_factorial(num1);
}
else if(opcion==7) /
{
operacion_segundogrado();
}
else if(opcion==8) /
{
operacion_listadoprimos(num1);
}
else if(opcion==9)
{
printf ("DEMOSNTRACION DEL FUNCIONAMIENTO DE LA CALCULADORA:\n"); demostracion_de_funcionamiento ();
}
else if(opcion == 0)
{
printf("\n Opcion salida \n");
}
else
{
printf("\nERROR: OPERACION NO VALIDA !!! Vuelva a introducir una opcion:");
}
} variable ++;
} /*Fin funcion Main */
void operaciones_basicas(int opcion,int num1,int num2) {
if (opcion == 1) /* Suma */
{
int resultado;
printf("\n -> Introduzca el primer sumando: ");
scanf("%i",&num1);
printf("\n -> Introduzca el segundo sumando: ");
scanf("%i",&num2);
resultado=num1+num2;
printf("\n La SUMA de %i + %i es igual a %i",num1,num2,resultado);
}
else if (opcion == 2) /* Resta */
{
int resultado;
printf("\n -> Introduzca el primer numero: ");
scanf("%i",&num1);
printf("\n -> Introduzca el segundo numero: ");
scanf("%i",&num2);
resultado=num1-num2;
printf("\n La RESTA de %i - %i es igual a %i",num1,num2,resultado);
}
else if (opcion == 3) /* Multiplicación */
{
int resultado;
printf("\n -> Introduzca el primer multiplicando: ");
scanf("%i",&num1);
printf("\n -> Introduzca el segundo multiplicando: ");
scanf("%i",&num2);
resultado=num1*num2;
printf("\nLa MULTIPLICACION de %i * %i es igual a %i",num1,num2,resultado);
}
else /* División */
{
float resultado;
printf("\n -> Introduzca el dividendo: ");
scanf("%.2f",&num1);
printf("\n -> Introduzca el divisor: ");
scanf("%.2f",&num2);
if (num2!=0)
{
resultado=(float) num1/num2;
printf(" El cociente de la DIVISION es igual a %f\n",resultado);
}
else printf("\n No se puede realizar esa division porque el divisor es 0!!\n"); }
}
long int operacion_potencia(int Base, int Expo)
{
int i, Potencia=1;
printf ("\nIntroduce la base: ");
scanf ("%d", &Base);
printf ("\nIntroduce el exponente: ");
scanf ("%d", &Expo); ;
for (i=1; i<=Expo; i++)
{
Potencia=Potencia*Base;
}
if(Expo ==0 )
{
Potencia=1;
}
printf("La potencia del numero:%d, es :%d",Expo,Potencia);
}
long int operacion_factorial(int num3)
{
int i, factorial=1;
printf ("\nIntroduce el numero: ");
scanf ("%d", &num3);
if (num3<0)
{
printf("El factorial solo es valido con numeros naturales");
}
else{
for (i=1; i<=num3; i++) {
factorial=factorial * i;
printf("=%d\n",factorial);
}
}
printf("El factorial del numero natural--> %d, es:%d.",num3,factorial);
}
void operacion_segundogrado()
{
float a, b, c, disc, x1, x2,xi, xr;
printf("\nEscribe el valor del coeficiente cuadratico (distinto de 0), a: ");
scanf("%f", &a);
while( a==0)
{
printf("\nEl valor de a no puede ser 0 ingrese el valor de nuevo: ");
scanf("%f", &a);
}
printf("\nEscribe el valor del coeficiente lineal, b: ");
scanf("%f", &b);
printf("\nEscribe el valor del termino independiente, c: ");
scanf("%f", &c);
disc= pow(b,2)-4*a*c;
if(disc>0.0){
printf("\n Las raices reales son:");
x1=((-b+sqrt(disc))/(2*a)); x2=((-b-sqrt(disc))/(2*a));
printf("\nx1=%.2f x2=%.2f", x1, x2);
}
else {
if (disc==0.0){
x1=(-b)/(2*a);
printf("\nLa ecuacion solo tiene raiz %.2f", x1);
}
else{
xr=(-b/(2.0*a));
xi=(sqrt(-disc)/(2*a));
printf("\nLa raiz real es %.2f y la imaginaria es %.2f", xr,xi);
}
}
}
void operacion_listadoprimos(int num1)
{
int numero, divisor, esPrimo;
printf("Introduzca el numero: ");
scanf("%d", &num1);
for (numero=2; numero<=num1; numero++)
{
esPrimo=1; /* numero es primo */
for (divisor=2; divisor<=sqrt(numero); divisor++)
{
if (numero%divisor==0)
{
esPrimo=0;
break;
}
}
if(esPrimo==1) printf("%d\n", numero);
}
}
void demostracion_de_funcionamiento()
{
operaciones_basicas(1,3,1);
operaciones_basicas(2,3,1);
operaciones_basicas(3,3,1);
operaciones_basicas(operacion_potencia(3,1);
operacion_factorial(3);
operacion_segundogrado(1,-5,6);
operacion_listadoprimos(5);
} |