Soy nuevo programando, y tengo que entregar un ejercicio y estoy bastante perdido, debo hacer que el programa me diga si una receta de comida es vegetariana o no, viendo si alguno de los ingredientes que contiene es animal, imprimiendo un 1 si lo es, un 0 si no lo es o un -1 si hay algún ingrediente de la receta que no este en la base de datos que da el enunciado.
Llevo algo hecho pero estoy muy perdido puesto que soy nuevo y no sé aún como funcionan este tipo de programas. Agradecería algo de ayuda, por favor. Adjunto el programa tal y como lo llevo.
MOD: El código debe ir entre etiquetas de Código GeSHi
Llevo algo hecho pero estoy muy perdido puesto que soy nuevo y no sé aún como funcionan este tipo de programas. Agradecería algo de ayuda, por favor. Adjunto el programa tal y como lo llevo.
Código (c) [Seleccionar]
#include <stdio.h>
#define TAMCAD 100 // Tamaño máximo de cadenas de caracteres
#define MAXING 20 // Nro máximo de ingredientes por receta
// Definición de estructuras del problema
struct propiedades{
float grasas; // gramos de grasa por cada 100gr
float hidratos; // gramos de hidratos de carbono por cada 100gr
float proteina; // gramos de proteina de carbono por cada 100gr
int Kcalorias; // KiloCalorías por 100gr
char tipo; // Tipo de alimento: 'V'=Vegetal, 'A'=Animal, 'M'=Mineral, 'L'=Lacteo o huevo
};
struct ingredientes{
int id; // Identificador del ingrediente
char nombre[TAMCAD]; // Nombre del ingrediente
struct propiedades nutrientes; // Propiedades del ingrediente
};
struct receta{
char nombre[TAMCAD]; // Nombre de la receta
int numIngredientes; // Nro de ingredientes de la receta
int id[MAXING]; // Identificador del ingrediente
int cantidad[MAXING]; // Gramos del ingrediente a utilizar
};
// PROTOTIPO: COMPLETAR
float procesaReceta(int ingredientes tipos[], int tiposIngredientes, int receta R[]);
int main()
{
float res;
int numTiposIngredientes = 11; // Nro de tipos de ingrediente disponibles
// Tabla de ingrediente de ejemplo
struct ingredientes tiposIngredientes[]={
{2543,"Aceite de oliva",{99.9, 0, 0, 887,'V'}},
{2361,"Ajo",{0.23,24.3,4,117,'V'}},
{2660,"Arroz",{0.9,86,7,387,'V'}},
{2134,"Atun",{3.3,0,22,119,'A'}},
{2127,"Huevo",{11.1,0,12.5,150,'L'}},
{2403,"Patata",{0.2,15.2,2.2,73,'V'}},
{2419,"Setas",{0.3,4,1.8,26,'V'}},
{2677,"Harina de trigo",{0,71.5,10,333,'V'}},
{866, "Sal",{0,0,0,0,'M'}},
{2493,"Leche de vaca",{3.8,4.7,3,65,'L'}},
{2285,"Pavo",{8.5,0,21,158,'A'}}
};
// Algunas recetas de prueba
struct receta r[3]={
{"Tortilla",4,{2543,2403,866,2127},{60,300,3,100}},
{"Arroz con setas",5,{2543,2361,2660,2419,866},{40,15,250,125,5}},
{"Pizza",6,{2543,2677,2134,2127,866,0},{20,150,100,80,4,0}} // Esta receta tiene un ingrediente 0 que no existe
};
// LLamada a función procesaReceta. Pruebe diferentes recetas anteriores: r[0], r[1] o r[2]
res = procesaReceta(ingredientes tipos, tiposIngredientes, receta R[0]);
// Resultado
printf("El valor resultado es %f\n",res);
}
// ======= COPIE EN DOCTUS A PARTIR DE ESTA lÍNEA ===========================
// Aquí prototipo de posbles funciones auxiliares que emplee
// Definición de su función solución
float procesaReceta(int ingredientes tipos[], int tiposIngredientes, int receta R[])
{
int i,j,flag;
float receta=1;
for(i=0;i<(R->numIngredientes) && receta!=-1; i++){
for(j=0; j<tiposIngredientes && receta!=-1; j++){
if(R->id[i]==tipos[j].id){
receta=(tipos[j].nutrientes.tipo=='A');
receta=0;
if(R->id[i]!=tipos[j].id){
receta=-1;
}
}
}
return receta;
}
MOD: El código debe ir entre etiquetas de Código GeSHi