Sou inciante e estou treinando alguns conceitos básicos na faculdade sobre listas encadeadas com ponteiros.
Estou implementando uma lista onde quero fazer cadastro de moradores de um condomínio, onde serão cadastrados o nome e se possuem veículos dentro do apartamento.
Porém na hora que chamo a função imprimir(), simplesmente não acontece nada, embora eu ache que a lógica esteja certa.
Alguém pode me ajudar ?
Segue o código:
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
struct Morador
{
string nome;
string veiculo;
string placa;
string condominio;
Morador *proximo;
};
struct ListaMoradres
{
Morador *primeiro;
};
ListaMoradres lista; // CRIEI UMA LISTA GLOBAL, POIS QUERO QUE A LISTA CONTINUE COM OS CADASTROS MESMO APÓS O FIM DA EXECUÇÃO // DO MAIN (não SEI SE TA CERTO FAZER ISSO KKK)
void inciar()
{
lista.primeiro = nullptr;
}
void inserir_Morador()
{
string nome = "";
string veiculo = "";
string placa = "";
string condominio = "";
int op;
cout << "Digite o nome do morador\n";
cin >> nome;
cout << "\nPossui veiculo?\n1-SIM\t2-não\n";
cin >> op;
switch (op)
{
case 1:
cout << "Carro ou Moto? 1- CARRO\t2- MOTO\n";
cin >> op;
if (op == 1)
{
cout << "Digite placa:\n";
cin >> placa;
veiculo = "(Carro)";
break;
}
else
{
cout << "Digite placa\n";
cin >> placa;
veiculo = "Moto";
break;
}
case 2:
veiculo = "não possui";
break;
default:
cout << "Opcao invalida\n";
break;
}
}
if (lista.primeiro == nullptr)
{
Morador *primeiro_Morador = new Morador();
lista.primeiro = primeiro_Morador;
primeiro_Morador->nome = nome;
primeiro_Morador->veiculo = veiculo;
primeiro_Morador->placa = placa;
primeiro_Morador->condominio;
primeiro_Morador->proximo = nullptr;
cout << "Primeiro morador inserido com sucesso\n";
return;
}
else
{
Morador *ultimo = lista.primeiro;
while (ultimo->proximo != nullptr)
ultimo = ultimo->proximo;
Morador *novo = new Morador();
ultimo->proximo = novo;
novo->nome = nome;
novo->veiculo = veiculo;
novo->placa = placa;
novo->condominio = condominio;
novo->proximo = nullptr;
cout << "Morador inserido com sucesso\n";
return;
}
}
void imprimir()
{
Morador *inicio = lista.primeiro;
while (inicio->proximo != nullptr)
{
cout << "\nNome: "+inicio->nome << endl;
cout << "Veiculo: " + inicio->veiculo << endl;
cout << "Placa: " + inicio->placa << endl;
cout << "Condominio: " + inicio->condominio << endl;
inicio = inicio->proximo;
}
return;
}
int main()
{
int op;
cout << "1 - inciazlizar\t2 - inserir\t3 - imprimir\n";
cin >> op;
switch (op)
{
case 1:
inciar();
break;
case 2:
inserir_Morador();
break;
case 3:
imprimir();
break;
default:
cout << "Opcao invalida\n";
break;
}
main();
}