ejercicio no resuelto :-(

Iniciado por psicofitall, 17 Junio 2016, 15:49 PM

0 Miembros y 1 Visitante están viendo este tema.

psicofitall

Hola como estan? quisiera saber si alguien podria resolver este ejercicio para analizarlo y aprender, gracias
2) Dada la siguiente estructura para información de comidas en un restaurant:

struct plato {
   char nombre[40];
   char es_entrada; //0 ó 1 ( flag indica si es entrada)
   char es_plato_ppal; //0 ó 1 ( flag indica si es plato principal)
   char es_postre; //0 ó 1   ( flag indica si es postre)
   int calorias; ( calorias, de cada plato, en la salida tendria que sumar las calorias y mostrarlas como aparece en el ejemplo de abajo)
}

Construya una función que reciba un vector de platos e imprima en pantalla todas las combinaciones posibles. La combinación resulta de mostrar una entrada, con un plato y principal y un postre. Además de mostrarse todas las combinaciones, debe informarse cuántas calorías totales tiene cada menú armado.

El prototipo es: void combinaciones(struct plato[], int);

La salida será de este tipo:

1. Entrada: Ensalada, Plato principal: Milanesa, Postre: Helado - Calorias 1111
2. Entrada: Ensalada, Plato principal: Spaghetti, Postre: Helado - Calorias 1130
3. Entrada: Empanada, Plato principal: Milanesa, Postre: Helado - Calorias 2222
4. Entrada: Empanada, Plato principal: Spaghetti, Postre: Helado - Calorias 333
5. Entrada: Ensalada, Plato principal: Milanesa, Postre: Flan - Calorias 4444
6. Entrada: Ensalada, Plato principal: Spaghetti, Postre: Flan - Calorias 5555
7. Entrada: Empanada, Plato principal: Milanesa, Postre: Flan - Calorias 6666
8. Entrada: Empanada, Plato principal: Spaghetti, Postre: Flan - Calorias 7777

psicofitall

Cita de: psicofitall en 17 Junio 2016, 15:49 PM
Hola como estan? quisiera saber si alguien podria resolver este ejercicio para analizarlo y aprender, gracias
2) Dada la siguiente estructura para información de comidas en un restaurant:

struct plato {
   char nombre[40];
   char es_entrada; //0 ó 1 ( flag indica si es entrada)
   char es_plato_ppal; //0 ó 1 ( flag indica si es plato principal)
   char es_postre; //0 ó 1   ( flag indica si es postre)
   int calorias; ( calorias, de cada plato, en la salida tendria que sumar las calorias y mostrarlas como aparece en el ejemplo de abajo)
}

Construya una función que reciba un vector de platos e imprima en pantalla todas las combinaciones posibles. La combinación resulta de mostrar una entrada, con un plato y principal y un postre. Además de mostrarse todas las combinaciones, debe informarse cuántas calorías totales tiene cada menú armado.

El prototipo es: void combinaciones(struct plato[], int);

La salida será de este tipo:

1. Entrada: Ensalada, Plato principal: Milanesa, Postre: Helado - Calorias 1111
2. Entrada: Ensalada, Plato principal: Spaghetti, Postre: Helado - Calorias 1130
3. Entrada: Empanada, Plato principal: Milanesa, Postre: Helado - Calorias 2222
4. Entrada: Empanada, Plato principal: Spaghetti, Postre: Helado - Calorias 333
5. Entrada: Ensalada, Plato principal: Milanesa, Postre: Flan - Calorias 4444
6. Entrada: Ensalada, Plato principal: Spaghetti, Postre: Flan - Calorias 5555
7. Entrada: Empanada, Plato principal: Milanesa, Postre: Flan - Calorias 6666
8. Entrada: Empanada, Plato principal: Spaghetti, Postre: Flan - Calorias 7777
como podria hacer que imprima esas combinaciones de platos?

AlbertoBSD

#2
struct plato {
  char nombre[40];
  char es_entrada; //0 ó 1 ( flag indica si es entrada)
  char es_plato_ppal; //0 ó 1 ( flag indica si es plato principal)
  char es_postre; //0 ó 1   ( flag indica si es postre)
  int calorias; // ( calorias, de cada plato, en la salida tendria que sumar las calorias y mostrarlas como aparece en el ejemplo de abajo)
};

void combinaciones(struct plato *platos, int n){
  int i = 0;
  int calorias =0;
 while(i<n){
   calorias += platos[i].calorias;
   if(platos[i].es_entrada){
      printf("Entrada: %s, ",platos[i].nombre);
   }
   else{
     if(platos[i].es_plato_ppal) {
        printf("Plato principal: %s, ",platos[i].nombre);
     }
     else {
       printf("Postre: %s, ",platos[i].nombre);
     }
   }
   i++;
 }
 printf(" - Calorias %i",calorias);
}



Seria algo asi

Aun que no lo he compilado y puede tener errores. Lo escribí en el mobil.

Tengo dudas entre si es

.

o

->

Saludos.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

class_OpenGL

Es con un punto, pues al indexar el puntero con los corchetes ya no es un puntero, sino que es una estructura de tipo 'plato'.

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

AlbertoBSD

gracias class_OpenGL esque estos días no tengo mi computadora a la mano y solo me acuerdo cuando estoy en la computadora  :xD :xD

Por cierto que para mas facil es posible dejar solo una variable tipo. Y evaluar con un switch

switch(platos[i].tipo){
case POSTRE:
//....
break;
//...
}


Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW