[ Foro de C++ ]

Switch con variable de una estructura

03-Oct-2022 21:37
Invitado (Ezequiel )
2 Respuestas

Estoy armando un programa que muestre la plantilla e información de un club:

#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;

int nplant;

struct institucion {

char  nombre[35], estadio[35],entrenador[35];
int capacidad;

}equipo;

struct plantel {

char  nombre[35],nacionalidad[20];
char posicion;
int edad,dorsal;
float altura,peso;
char  piehabil;

}jugador;



int main (){

fflush (stdin);

cout << "Ingrese el nombre de su equipo: ";
gets (equipo.nombre);

cout << "Ingrese el nombre de su estadio: ";
gets (equipo.estadio);

cout << "Capacidad: ";
cin  >> equipo.capacidad;

cout << "DT: ";
gets (equipo.entrenador);

cout << "Cantidad de jugadores en su plantel: ";
cin  >> nplant;

for (int i=0;i<nplant;i++){

cout << "Nombre del jugador: ";
gets (jugador.nombre);
cout << "Edad: ";
cin  >> jugador.edad;
cout << "Posicion: ";
cin  >> jugador.posicion;
cout << "Nacionalidad: ";
gets (jugador.nacionalidad);
cout << "Pie habil: ";
cin  >> jugador.piehabil;
cout << "Altura: ";
cin  >> jugador.altura;
cout << "Peso: ";
cin  >> jugador.peso;
cout << "Dorsal: ";
cin  >> jugador.dorsal;

}

cout << "\n" << "Equipo: "   << equipo.nombre     << endl;
cout         << "Estadio: "   << equipo.estadio    << endl;
cout         << "Capacidad: " << equipo.capacidad << endl;
cout         << "Jugadores: " << nplant            << endl;
cout         << "DT: "        << equipo.entrenador << endl;



switch (jugador.posicion) {

case 'A':
   cout << "\n" << "\t Arqueros       \n" << endl;
   cout << jugador.nombre         << "\t" << jugador.edad << "\t" << jugador.piehabil     << "\t" << jugador.dorsal;
   cout << "\t" << jugador.altura << "\t" << jugador.peso << "\t" << jugador.nacionalidad << endl;
   break;

case 'D':
   cout << "\n" << "\t Defensores     \n" << endl;
   cout << jugador.nombre         << "\t" << jugador.edad << "\t" << jugador.piehabil     << "\t" << jugador.dorsal;
   cout << "\t" << jugador.altura << "\t" << jugador.peso << "\t" << jugador.nacionalidad << endl;
   break;


case 'M':
   cout << "\n" << "\t Mediocampistas \n" << endl;
   cout << jugador.nombre         << "\t" << jugador.edad << "\t" << jugador.piehabil     << "\t" << jugador.dorsal;
   cout << "\t" << jugador.altura << "\t" << jugador.peso << "\t" << jugador.nacionalidad << endl;
   break;


case 'C':
   cout << "\n" << "\t Delanteros     \n" << endl;
   cout << jugador.nombre         << "\t" << jugador.edad << "\t" << jugador.piehabil     << "\t" << jugador.dorsal;
   cout << "\t" << jugador.altura << "\t" << jugador.peso << "\t" << jugador.nacionalidad << endl;
   break;

default:
   cout << "Ingrese una posicion correcta: ";
}

system ("pause");
return 0;
}

El problema es que sólo muestra un caso (El último que guardo dentro del programa), y no sabría cómo hacer que muestre más de un caso. Además, si quisiera ingresar información de más de un equipo ¿Cómo podría hacer?


05-Oct-2022 12:28
Nacho Cabanes (+83)

Suena a que ese "switch" debería estar dentro de un "while" (o un "do-while") para que se repita varias veces, hasta que se escoja la opción de salir.


08-Oct-2022 23:15
Ezequiel Bonanno

Se me ocurrió hacer esto, pero me sigue mostrando solo la carga de la última iteración

while (nplant==i){


return 0;
}






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...