Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: psicofitall en 17 Junio 2016, 15:49 PM

Título: ejercicio no resuelto :-(
Publicado por: 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
Título: Re: ejercicio no resuelto :-(
Publicado por: psicofitall en 17 Junio 2016, 16:16 PM
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?
Título: Re: ejercicio no resuelto :-(
Publicado por: AlbertoBSD en 18 Junio 2016, 04:56 AM
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.
Título: Re: ejercicio no resuelto :-(
Publicado por: class_OpenGL en 18 Junio 2016, 05:30 AM
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'.
Título: Re: ejercicio no resuelto :-(
Publicado por: AlbertoBSD en 18 Junio 2016, 06:05 AM
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