Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: diseho2880 en 18 Mayo 2021, 03:12 am



Título: ‚Cómo manipular arreglos de estructuras?
Publicado por: diseho2880 en 18 Mayo 2021, 03:12 am
Alguien me podría explicar porque no me deja ingresar información a un campo de una estructura. El programa se detiene cuando entra en el ciclo. Cualquier parte del codigo que este mal podrían ayudarme, gracias.

#include <iostream>

using namespace std;

#define MAXCHAR 50;

struct Grupo{
    char clave_grupo[50];
};

struct Profesor{
    Grupo lista_grupos[8];
};

int main()
{
    Profesor profesores;

    int num_grup;
    cout << "\nNumero de grupos: ";
    cin >> num_grup;

    for (int i = 0; i < num_grup; i++)
    {
        cout << "Clave del grupo " << i+1 << ": ";
        cin.getline(profesores.lista_grupos.clave_grupo,MAXCHAR);
    }
    return 0;
}


Título: Re: ‚Cómo manipular arreglos de estructuras?
Publicado por: prosebas en 18 Mayo 2021, 04:14 am
Te anexo aqui la solución
Código
  1. #include <iostream>
  2. using namespace std;
  3. #define MAXCHAR 50
  4. struct Grupo
  5. {
  6.    char clave_grupo[50];
  7. };
  8. struct Profesor
  9. {
  10.    struct Grupo lista_grupos[8];
  11. };
  12. int main()
  13. {
  14.    Profesor profesores;
  15.    int num_grup;
  16.    cout << "\nNumero de grupos: ";
  17.    cin >> num_grup;
  18.    cin.ignore();
  19.    for (int i = 0; i < num_grup; i++)
  20.    {
  21.        cout << "Clave del grupo " << i + 1 << ": ";
  22.        cin.getline(profesores.lista_grupos[i].clave_grupo, MAXCHAR);
  23.    }
  24.    return 0;
  25. }
  26.  
        cin.getline(profesores.lista_grupos.clave_grupo,MAXCHAR);
En esta linea no estarias almacenando para cada grupo la clave del grupo.

El cin.ignore() se usa para ignorar lo que hay en el bufffer y no salte la lectura de datos .