Me podrían ayudar a verificar mi código? el error es que sólo me pide el primer dato, el número de gallinas y se cierra.Se los agradeceré infinitamente, el problema es el siguiente:
En una granja se requiere saber alguna información para determinar el precio de venta por cada kilo de huevo. Es importante determinar el promedio de calidad de las n gallinas que hay en la granja. La calidad de cada gallina se obtiene según la fórmula:
calidad = peso de la gallina * altura de la gallina
número de huevos que pone
Finalmente, para fijar el precio del kilo de huevo, se toma como base la siguiente tabla:
PROMEDIO CALIDAD PRECIO POR KILO
mayor o igual que 15 --------------- 1.2 * promedio de calidad
mayor que 8 y menor que 15 --------1.00 * promedio de calidad
menor o igual que 8 ----------------- 0.80 * promedio de calidad
CODIGO:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<locale.h>
struct Gallina {
float peso;
float altura;
int numhuevos;
float calidad;
float precio;
};
Gallina gallinas[100];
float ObtenerPromedioCalidad(struct Gallina gallinas[100], int numGallinas)
{
int i;
float sumatoriaCalidad = 0;
for(i=0; i<numGallinas; i++)
{
gallinas[i].calidad=(gallinas[i].peso*gallinas[i].altura)/gallinas[i].numhuevos;
sumatoriaCalidad = sumatoriaCalidad + gallinas[i].calidad;
return sumatoriaCalidad / numGallinas;
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void definir_Precio(struct Gallina gallinas[100]){
int i;
if(gallinas[i].calidad>=15) {
gallinas[i].precio=(1.2*gallinas[i].calidad);
}
else if(gallinas[i].calidad>8){
gallinas[i].precio=(1*gallinas[i].calidad);
}
else if(gallinas[i].calidad>=8 && gallinas[i].calidad<=15){
gallinas[i].precio=(0.80*gallinas[i].calidad);
}
printf("\n\n\Costo del kilo de huevo de acuerdo a calidad: ", gallinas[i].precio);
}
int main()
{
setlocale(LC_CTYPE,"spanish");
int numGallinas;
int sumatoriaCalidad;
int i;
printf("Ingrese el número de gallinas a verificar: ");
scanf("%d", numGallinas, "\n");
for (int i=0; i<numGallinas; ++i){
fflush(stdin);
printf("Peso de la gallina: ");
scanf("%f", gallinas[i].peso, "\n");
printf("Altura de la gallina:");
scanf("%f", gallinas[i].altura, "\n");
printf("Número de huevos que pone la gallina:");
scanf("%d", gallinas[i].numhuevos, "\n");
}
float ObtenerPromedioCalidad(Gallina gallinas[]);
for(i=0;i<numGallinas;i++)
{
scanf("\n\nPromedio de calidad: ", sumatoriaCalidad);
}
void definir_Precio(struct Gallina gallinas[100]);
return 0;
}
Mod: Obligatorio el uso de etiquetas GeSHi para códigos.
ni compila , con eso te digo todo compañero.
scanf("%d", &numGallinas); // El & no se nos puede olvidar...
Si haces un for .. es para trabajar con el
scanf("%f", &gallinas[i].peso); // ni utilizar el [i]
for(i=0; i<numGallinas; i++)
{
if(gallinas[i].calidad>=15) {
gallinas[i].precio=(1.2*gallinas[i].calidad);
}
else if(gallinas[i].calidad>8){
gallinas[i].precio=(1*gallinas[i].calidad);
}
else if(gallinas[i].calidad<=8 && gallinas[i].calidad<=15){
gallinas[i].precio=(0.80*gallinas[i].calidad);
}
printf("\n\n\Costo del kilo de huevo de acuerdo a calidad: ", gallinas[i].precio);
}
Y otras muchas cosas...
No intentes que te den los ejercicios hechos , y menos si vienes diciendo que te da error ahí puesto que ni compila tu ejercicio.
1º aprende a usar los scanf y printf .. es básico
2º si trabajas con vectores usalos leñe
3º si una función te devuelve un dato.. asignalo a una variable , el programa no lo hace por arte de magia :xD
4º Cuando llamas a funciones no es necesario , ni el float ni el void ni cualquier otro tipo que devuelvas , solo es necesario en la declaración de dicha función..
5º Revisa los if-else :silbar:
6º cuando estas llamando a una función no se menciona el tipo de la variable que pasas.. solo la pasas y listo porque ya se indico cuando se declaraba..
Eso es porqué no ha usado las etiquetas GeSHi o code para incrustar el código, así cuando aparece algo cómo array[i], todo lo que vaya después de la i entre corcheas se convertirá en cursiva, ya que en bbcode significa texto en cursiva.
Cita de: MAFUS en 11 Septiembre 2018, 23:37 PM
Eso es porqué no ha usado las etiquetas GeSHi o code para incrustar el código, así cuando aparece algo cómo array[i], todo lo que vaya después de la i entre corcheas se convertirá en cursiva, ya que en bbcode significa texto en cursiva.
Touché , pero de todas formas sigue habiendo muchos errores
Coincido con Mr.Moonlight y veo que entiendes bien la logica aunque podrias mejorarlo a mi parecer en calcular precio tenga como funcion dependiente calcular calidad, entonces llamarias a calcular precio y ella misma llamararia a calcular calidad y despues precio. Y es mejor que esos datos los calcules y no lo guardes ya que dependen unicamentes de datos guardados y los podes calcular. Por ender calcular calidad devolveria el valor a calcular precio y esta retornaria el precio, sin necesidad de ocupar ese espacio en memoria. Ademas los datos se modifican y tenes que saber cuando actualizar calidad y precio por ende es mejor calcularlo en una caso mas real. Saludos, suerte!