Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dario01dr en 25 Junio 2022, 06:36 am



Título: Ayuda C++ moderno
Publicado por: dario01dr en 25 Junio 2022, 06:36 am
Hola amigos del foro, tengo este codigo en C++ moderno. El problema es que se repite el nombre y el curso.
Como puedo hacerlo para que aparezca una sola vez:

Ejm:
Juan     Fisica      12,18,17
Pedro   Quimica  11,10,16
Luis      Lengua   16,19,11

Salu2.

Código:
#include <iostream>
#include <vector>

using namespace std;

struct Estudiantes
{
    string nombre;
    string curso;
    vector <int> notas;
};

int main() {

    vector <Estudiantes> alumnos;
    int i,j;
    string snombre,scurso;
    int inotas;

    for (i=0; i<3; i++) {
        cout << "Nombre del alumno: ";
        getline(cin,snombre);
        cout << "Curso: ";
        getline(cin,scurso);

        for (j=0; j<3; j++) {
            cout << "Nota N° " << j+1 << ": ";
            cin >> inotas;
            alumnos.push_back(Estudiantes{snombre,scurso,{inotas}});
        }

        cin.ignore();
    }

    /*alumnos.push_back(Estudiantes{"Juan","Quimica",{45,68,38,65,70}});
    alumnos.push_back(Estudiantes{"Luis","Fisica",{87,36,24}});
    alumnos.push_back(Estudiantes{"Pedro","Lengua",{48,98,63}});*/

    for (auto s : alumnos)
    {
        cout << "Nombre: " << s.nombre << endl;
        cout << "Curso: " << s.curso << endl;
        cout << "Notas: ";
        for (auto n : s.notas)
            cout << n << " ";

        cout << endl;
    }

    return 0;
}


Título: Re: Ayuda C++ moderno
Publicado por: MAFUS en 25 Junio 2022, 11:26 am
Tu problema está aquí:
Código:
for (j=0; j<3; j++) {
    cout << "Nota N° " << j+1 << ": ";
    cin >> inotas;
    alumnos.push_back(Estudiantes{snombre,scurso,{inotas}});
}

Cada vez que el bucle itera metes un estudiante nuevo. Sólo deberías actualizar un vector de notas y agregarlo a al usuario después del bucle.