Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Llamadas a las funciones con los parámetros "a mano".

Estas en el tema de Llamadas a las funciones con los parámetros "a mano". en el foro de C/C++ en Foros del Web. Hola , buenas .Mira os explico soy nuevo con eso de la programación y aún no domino. Estoy haciendo una calculadora para la clase de ...
  #1 (permalink)  
Antiguo 23/04/2012, 08:52
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Llamadas a las funciones con los parámetros "a mano".

Hola , buenas .Mira os explico soy nuevo con eso de la programación y aún no domino. Estoy haciendo una calculadora para la clase de informatica, hasta aqui bien pero me pide la demostracion del funcionamiento de la calculadora y dijo el profesor que lo hiciera las llamadas a las funciones con los parámetros "a mano".
algo asi :

void demostracion()
{
operacionbasica(1,3,1);
operacionbasica(2,3,1);
factorial(3);
operacion_potencia(3,1 );
....
....
....
}

pero al compilar me pide para introducir los numeros , para hacer los calculos, algo que no deberia pasar con los parametros "a mano " , ya que los numeros para los calculos ya les he entroducido en las funciones .... y no se que hacer la verdad. No se si me explique bien jejej pero bueno si alguien puede ayudarme con eso, me haria un gran favor =).
  #2 (permalink)  
Antiguo 23/04/2012, 09:49
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Llamadas a las funciones con los parámetros "a mano".

Asi como mostras las cosas no te podemos solucionar nada....

Una idea que se me ocurre es que los pedidos de los datos esten en el main o insertados en alguna funcion....

Deberias adjuntar el codigo completo para que te podamos ayudar con este tema
  #3 (permalink)  
Antiguo 23/04/2012, 10:11
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
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);
}
  #4 (permalink)  
Antiguo 23/04/2012, 10:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Llamadas a las funciones con los parámetros "a mano".

Fijate lo siguiente:
demostracion llama a operaciones_basicas(1,3,1)

pero en opciones basicas haces:
printf("\n -> Introduzca el primer sumando: ");
scanf("%i",&num1);
printf("\n -> Introduzca el segundo sumando: ");
scanf("%i",&num2);

osea que estas pidiendo por teclado esos valores....
La logica del programa esta mal.... el scanf deberia estar fuera de la funcion operaciones basicas.

Código C++:
Ver original
  1. void operaciones_basicas(int opcion,int num1,int num2) {
  2.  
  3. if (opcion == 1) /* Suma */
  4. {
  5. int resultado;
  6. resultado=num1+num2;
  7. printf("\n La SUMA de %i + %i es igual a %i",num1,num2,resultado);
  8.  
  9. }
  10.  
  11. else if (opcion == 2) /* Resta */
  12. {
  13. int resultado;
  14. resultado=num1-num2;
  15. printf("\n La RESTA de %i - %i es igual a %i",num1,num2,resultado);
  16.  
  17. }
  18.  
  19. else if (opcion == 3) /* Multiplicación */
  20. {
  21. int resultado;
  22. resultado=num1*num2;
  23. printf("\nLa MULTIPLICACION de %i * %i es igual a %i",num1,num2,resultado);
  24. }
  25.  
  26. else /* División */
  27. {
  28. float resultado;
  29. if (num2!=0)
  30. {
  31. resultado=(float) num1/num2;
  32. printf(" El cociente de la DIVISION es igual a %f\n",resultado);
  33. }
  34. else printf("\n No se puede realizar esa division porque el divisor es 0!!\n"); }
  35. }

Por otro lado en el main:

Código C:
Ver original
  1. int num1,num2;
  2. if((opcion > 0)&& (opcion < 5))
  3. {
  4. printf("\n -> Introduzca el primer operador: ");
  5. scanf("%i",&num1);
  6. printf("\n -> Introduzca el segundo operador: ");
  7. scanf("%i",&num2);
  8. operaciones_basicas(opcion,num1,num2);
  9. }

Basicamente esa es la logica de tu programa.

Saludos
  #5 (permalink)  
Antiguo 23/04/2012, 11:24
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Respuesta: Llamadas a las funciones con los parámetros "a mano".

Muchisimas Gracias amigo !! me compila bien ahora.

Un Saludo!

Etiquetas: funcion, funciones, int, llamadas, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:38.