0
Good evening, you guys, I am unable to make the remove function work. Find the number but do not delete the vector value.
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
#define MAX 100
typedef struct {
int numero;
char nome[20];
} VENDEDOR;
typedef struct {
VENDEDOR vetor[MAX];
int numElementos;
} LISTA;
void criar(LISTA *lista);
int vazia(LISTA lista);
int cheia(LISTA lista);
bool inserir(LISTA *lista, VENDEDOR v1, int);
void remover(LISTA lista, int numero, int pos);
void buscaNome(LISTA lista, char nome[], int pos);
void buscaNumero(LISTA lista, int numero, int pos);
void imprimir(LISTA lista);
int main() {
LISTA lista;
VENDEDOR v1;
int pos = 1;
int numero;
char nome[20];
int op;
do {
cout << "Digite a opção desejada:" << endl;
cout << "1- Criar" << endl;
cout << "2- Vazia" << endl;
cout << "3- Cheia" << endl;
cout << "4- Inserir" << endl;
cout << "5- Remover" << endl;
cout << "6- Buscar nome" << endl;
cout << "7- Buscar número" << endl;
cout << "8- Imprimir" << endl;
cout << "0- Sair" << endl;
cout << "Opção:";
cin>>op;
switch (op) {
case 1:
criar(&lista);
break;
case 2:
vazia(lista);
break;
case 3:
cheia(lista);
break;
case 4:
inserir(&lista, v1, pos);
break;
case 5:
remover(lista, numero, pos);
break;
case 6:
buscaNome(lista, nome, pos);
break;
case 7:
buscaNumero(lista, numero, pos);
break;
case 8:
imprimir(lista);
break;
}
} while (op != 0);
return 0;
}
void criar(LISTA *lista) {
lista->numElementos = 0;
cout << "Lista criada" << endl << endl;
}
int vazia(LISTA lista) {
if (lista.numElementos == 0) {
cout << "Lista vazia" << endl << endl;
} else {
cout << "Lista com elementos" << endl << endl;
}
}
int cheia(LISTA lista) {
if (lista.numElementos == MAX) {
cout << "Lista cheia" << endl << endl;
} else {
cout << "Lista com espaço" << endl << endl;
}
}
bool inserir(LISTA *lista, VENDEDOR v1, int pos) {
cout << "Número: ";
cin >> v1.numero;
cout << "Nome: ";
cin >> v1.nome;
int i;
if (lista->numElementos == MAX || pos > lista->numElementos + 1) {
return false;
}
for (i = lista->numElementos; i > lista->numElementos; i--) {
lista->vetor[i] = lista->vetor[i - 1];
}
lista->vetor[i] = v1;
lista->numElementos++;
cout << endl;
return true;
}
void remover(LISTA lista, int numero, int pos) {
cout << "Digite o número para apagar: ";
cin>>numero;
int i;
bool aux = true;
for (i = 0; i <= pos; i++) {
if (numero == lista.vetor[i].numero) {
lista.vetor[i].numero = lista.vetor[i + 1].numero;
cout << "Removido com sucesso!" << endl;
aux = false;
}
}
pos--;
if (aux) {
cout << "Não encontrado!" << endl;
}
}
void buscaNome(LISTA lista, char nome[], int pos) {
cout << "Digite o nome para pesquisar: ";
cin>>nome;
int i;
bool aux = true;
for (i = 0; i <= pos; i++) {
if (nome[pos] == lista.vetor[i].nome[pos]) {
cout << "Número: " << lista.vetor[i].numero << endl << endl;
aux = false;
}
}
if (aux) {
cout << "Não encontrado!" << endl;
}
}
void buscaNumero(LISTA lista, int numero, int pos) {
cout << "Digite o número para pesquisar: ";
cin>>numero;
int i;
bool aux = true;
for (i = 0; i <= pos; i++) {
if (numero == lista.vetor[i].numero) {
cout << "Nome: " << lista.vetor[i].nome << endl << endl;
aux = false;
}
}
if (aux) {
cout << "Não encontrado!" << endl;
}
}
void imprimir(LISTA lista) {
for (int i = 0; i < lista.numElementos; i++) {
cout << "Número: " << lista.vetor[i].numero << endl;
cout << "Nome: " << lista.vetor[i].nome << endl << endl;
}
}
I couldn’t get your code to work. I understand what you said about values within the methods, but within the function I did it finds the number to be excluded but does not exclude. Where is the error in my function?
– Marcelo