Removing item X from an L list

0

I need to get the user to remove the item that he requests from the list, but I have no idea how to do it.

Outline:

#include <iostream>
#include <list>
#include <string>

using namespace std;

struct aluno
{
    int matricula;
    string nome;
};

int menu()
{
    cout << "1. Inserir\n"
         << "2. Exibir\n"
         << "3. Retirar\n"
         << "9: Sair\n"
         << "Escolha uma opcao: ";

    int op;
    cin >> op;
    system("cls");
    return op;
}

void inserir(list<aluno>& turma)
{
    aluno aux;
    cout << "Matricula: ";
    cin >> aux.matricula;
    cin.ignore(); // Retira o ENTER do buffer do teclado
    cout << "Nome: ";
    getline(cin, aux.nome);

    if(turma.empty() || turma.front().matricula > aux.matricula)
        turma.push_front(aux);
    else if(turma.back().matricula < aux.matricula)
        turma.push_back(aux);
    else
        for(auto it=turma.begin(); it!=turma.end(); it++)
        {
            if(aux.matricula==it->matricula)
            {
                cout << "Matricula repetida, sua anta!\n";
                break;
            }
            if(aux.matricula<it->matricula)
            {
                turma.insert(it, aux);
                break;
            }
        }
    system("cls");
}

void exibir(const list<aluno>& turma)
{
    if(turma.empty())
    {
        cout << "A lista esta vazia!!\n\n " << endl;
    }

    for(aluno a: turma)
    {
        cout << a.matricula << ' ' << a.nome << endl;
        cout << "\n";
    }

}

void retira(list <aluno> &turma)
{
    list <aluno> ::iterator itr;
    cout << "Informe um nome a ser retirado da lista";
    aluno nome;
    string igual;

    cout<< "Matricula: " << endl;
    cin >> nome.matricula ;
    cin.ignore();
    cout << "Nome: " << endl;
    getline(cin,nome.nome);


    for(itr=turma.begin();itr!=turma.end();itr++){
            if(itr==nome){
                turma.remove(*itr);
            }

    }





}



int main()
{
    list<aluno> turma;
    int op;

    do
    {
        op = menu();
        switch(op)
        {
        case 1:
            inserir(turma);
            break;
        case 2:
            exibir(turma);
            break;
        }
        case 3:
            retira(turma);
    }
    while(op!=9);
}
    
asked by anonymous 30.03.2018 / 06:30

0 answers