none
Problema con llamado a Funcion en C RRS feed

  • Pregunta

  • Hola tengo un programa en C sobre recetas la cual se pide al usuario que ingrese las porciones, previamente se muestra una lista de los ingredientes. Y si el usuario pide 3 porciones, el programa deberia multiplicar esos ingredientes para 3 porciones.

    Dejo el codigo.

    int main(int argc, char *argv[]) {
    	
    	printf(" CREMA DE CALABAZA");
    	printf("\n");
    	printf("\n");
    	
    	listado_ingredientes();
    	
    	printf("\n");
    	printf("\n");
    	printf("\n");
    	
    	Nueva_Porcion();
    	
    	return 0;	
    }
    
    
    int listado_ingredientes(){
    	
    	printf(" INGREDIENTES");
    	
    	printf("\n");
    	printf("\n");
    	printf(" 1.- Una Calabaza");
    	printf("\n");
    	printf(" 2.- Dos Cebollas");
    	printf("\n");
    	printf(" 3.- Dos Dientes de Ajo");
    	printf("\n");
    	printf(" 4.- Una Cucharada de Mantequilla");
    }
    
    //SOLICITAR DATOS
    int Pedir_Porciones(){
    	
    	float porcion;
    	printf(" Cuantas porciones quiere: ");
    	scanf("%d", &porcion);
    	
    	return porcion;
    }
    
    
    int Nueva_Porcion(){
    	
    	//PORCIONES ORIGINALES
    	float calabaza, mantequilla, ajo, cebolla;
    	
    	calabaza = 1.0;
    	mantequilla = 1.0;
    	ajo = 2.0;
    	cebolla = 2.0;
    	
    	
    	//NUEVAS PORCIONES
    	float porcion;
    	
    	float cal, mant, aj, ceb;
    	
    	Pedir_Porciones();
    	
    	cal = porcion*(calabaza);
    	mant  = porcion*(mantequilla);
    	aj = porcion*(ajo);
    	ceb = porcion*(cebolla);
    	
    	printf("\n");
    	printf("\n");
    	
    	if(porcion >= 2){
    	
    		printf(" La cantidad a preparar para %f porciones es: ", porcion);
    		printf("\n");
    		
    		printf(" %f Calabazas", cal);
    		printf("\n");
    		
    		printf(" %f Cebollas", ceb);
    		printf("\n");
    		
    		printf(" %f Ajos", aj);
    		printf("\n");
    		
    		printf(" %f Cucharadas de Mantequilla");
    	}else{
    		
    		printf(" La cantidad a preparar para %f porcion es: ", porcion);
    		printf("\n");
    		
    		printf(" %f Calabaza", cal);
    		printf("\n");
    		
    		printf(" %f Cebolla", ceb);
    		printf("\n");
    		
    		printf(" %f Ajo", aj);
    		printf("\n");
    		
    		printf(" %f Cucharada de Mantequilla");
    	}
    }

    Pero eso me arroja un problema, no calcula nada, la variable declarada como flotante "porcion", es como si su valor fuera siempre 0. Por eso no calcula nada.

    Aunque la linea que llama a la funcion Pedir_Porciones la escriba asi:

    float porcion
    
    porcion = Pedir_Porciones(porcion)

    No hace tampoco el calculo correspondiente.

    Quisiera saber que hice mal. Por que en la funcion nueva_porcion como dije, llamo a la funcion Pedir_Porciones, que contiene el valor de porcion, que deberia ser 3 para ese caso en el ejemplo de la imagen. Por eso digo quisiera saber que hice mal, si me pueden ayudar, Muchas gracias!!


    • Editado M4uriXD viernes, 27 de marzo de 2020 1:48
    viernes, 27 de marzo de 2020 1:45

Respuestas

  • Al final encontré yo mismo mis errores, vaya xD.

    Resulta que en la linea que pedia, el dato para empezar lo esta leyendo como dato entero y no como flotante. Y alli cambie lo que hacia falta.

    int Pedir_Porciones(){
    	
    	float porcion;
    	printf(" Cuantas porciones quiere: ");
    	scanf("%f", &porcion);
    	
    	return porcion;
    }


    Luego en mantequilla me percaté que no estaba mostrando el resultado. Tengo 2 lineas iguales, una dentro del if, y otra en el else.

    printf(" %f Cucharada de Mantequilla", mant);

    Siendo esolo faltante al final, calcula bien.


    • Editado M4uriXD sábado, 28 de marzo de 2020 17:14
    • Marcado como respuesta M4uriXD sábado, 28 de marzo de 2020 17:14
    sábado, 28 de marzo de 2020 17:13

Todas las respuestas

  • Hola

    Aqui te falto igualar

    //NUEVAS PORCIONES
    	float porcion;
    	
    	float cal, mant, aj, ceb;
    	
    	Pedir_Porciones();// aqui
    	
    	cal = porcion*(calabaza);

    intentac on esto

    //NUEVAS PORCIONES
    	float porcion;
    	
    	float cal, mant, aj, ceb;
    	
    	porcion =(float) Pedir_Porciones();
    	
    	cal = porcion*(calabaza);


    • Editado Marti Llam viernes, 27 de marzo de 2020 2:25
    viernes, 27 de marzo de 2020 1:53
  • Gracias por responder. Respondiendo a lo que me expusiste, te cuento:

    No funciona aquello, en una parte del codigo dije que de esa manera tampoco me funcionaba, sigue entregando todo resultado en 0.


    • Editado M4uriXD sábado, 28 de marzo de 2020 16:08
    sábado, 28 de marzo de 2020 16:06
  • Deleted
    sábado, 28 de marzo de 2020 17:02
  • Al final encontré yo mismo mis errores, vaya xD.

    Resulta que en la linea que pedia, el dato para empezar lo esta leyendo como dato entero y no como flotante. Y alli cambie lo que hacia falta.

    int Pedir_Porciones(){
    	
    	float porcion;
    	printf(" Cuantas porciones quiere: ");
    	scanf("%f", &porcion);
    	
    	return porcion;
    }


    Luego en mantequilla me percaté que no estaba mostrando el resultado. Tengo 2 lineas iguales, una dentro del if, y otra en el else.

    printf(" %f Cucharada de Mantequilla", mant);

    Siendo esolo faltante al final, calcula bien.


    • Editado M4uriXD sábado, 28 de marzo de 2020 17:14
    • Marcado como respuesta M4uriXD sábado, 28 de marzo de 2020 17:14
    sábado, 28 de marzo de 2020 17:13