Olá, gostaria de uma ajuda em listar o os produtos em um estoque em ordem alfabética pelo nome. Alguém poderia me ajudar. Código abaixo.
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int escolha,cont,cadastro = 0;
struct produto{
char nome[100];
char tipo[50];
double valor;
char local_estoque[50];
char identificador_produto[10];
long int quantidade_estoque;
};
struct produto x[100];
struct produto informacoes_produto(){
char nproduto[20];
char vproduto[20];
cout<<"-> Adicao de Produtos ao Estoque"<<endl;
cout<<endl;
cadastro_erro:
cout<<"NOME DO PRODUTO:"<<endl;
cin>>x[cadastro].nome;
cout<<"TIPO DE PRODUTO:"<<endl;
cin>>x[cadastro].tipo;
valor_erro:
cout<<"VALOR DO PRODUTO:"<<endl;
cin>>vproduto;
bool verificacaovalor = true;
for(int i=0;i < strlen(vproduto);i++)
if(!isdigit(vproduto[i])&& vproduto[i] != '.'){
verificacaovalor = false;
break;
}
if(verificacaovalor) x[cadastro].valor = atof(vproduto );
else{
cout<<"Valor invalido! Tente novamente.\n"<<endl;
goto valor_erro;
}
cout<<"LOCAL DISPONIVEL NO ESTOQUE:"<<endl;
cin>>x[cadastro].local_estoque;
cout<<"CODIGO DO PRODUTO:"<<endl;
cin>>x[cadastro].identificador_produto;
quantidade_erro:
cout<<"QUANTIDADE ENCONTRADA NO ESTOQUE:"<<endl;
cin>>nproduto;
bool verificacaoquantidade = true;
for(int i = 0; i<strlen(nproduto);i++)
if(!isdigit(nproduto[i])){
verificacaoquantidade = false;
break;
}
if(verificacaoquantidade) x[cadastro].quantidade_estoque = atoi(nproduto);
else{
cout<<"Localidade Indisponivel! Tente novamente!"<<endl;
cout<<endl;
goto quantidade_erro;
}
cadastro++;
cout<<"Operacao Finalizada com Sucesso ! Deseja realizar mais uma operacao :"<<endl;
cout<<"1-SIM"<<endl;
cout<<"2-não"<<endl;
endcadastroerro:
cin>>escolha;
switch(escolha){
case 1:
system("clear||cls");
goto cadastro_erro;
case 2:
cout<<"Adicao Realizada!"<<endl;
cout<<""<<endl;
system("clear||cls");
break;
default:
cout<<"Erro na Operacao!Tente novamente.";
goto endcadastroerro;
}
}
void listagem();
void listagem(){
cout<<"Lista de Produtos do Estoque"<<endl<<endl;
char aux[50];
for(int i = 0;i<cadastro;i++){
for(int j = 0;i<cadastro;j++){
int r = strcmp(x[i].nome,x[j].nome);
if(r>0){
strcpy(aux,x[i].nome);
strcpy(x[i].nome,x[j].nome);
strcpy(x[j],aux);
}
}
cout<<"Nome:"<<x[i].nome<<endl;
cout<<"Classe:"<<x[i].tipo<<endl;
cout<<"Valor:"<<x[i].valor<<endl;
cout<<"Localidade:"<<x[i].local_estoque<<endl;
cout<<"Codigo:"<<x[i].identificador_produto<<endl;
cout<<"Quantidade:"<<x[i].quantidade_estoque<<endl;
cout<<endl;
}
}
void busca();
void busca(){
cout<<"Busca de Produto do Estoque"<<endl;
char busca[100];
cout<<"Insira o nome ou o codigo do produto desejado."<<endl;
cin>>busca;
for(int i = 0;i<cadastro;++i){
if((strcmp(busca,x[i].nome)==0)||(strcmp(busca,x[i].identificador_produto)==0)){
cout<<"Produto Encontrado"<<endl<<endl;
cout<<"Nome:"<<x[i].nome<<endl;
cout<<"Classe:"<<x[i].tipo<<endl;
cout<<"Valor:"<<x[i].valor<<endl;
cout<<"Localidade:"<<x[i].local_estoque<<endl;
cout<<"Codigo:"<<x[i].identificador_produto<<endl;
cout<<"Quantidade:"<<x[i].quantidade_estoque<<endl;
cout<<endl;
}else{
cout<<"Produto não encontrado! Tente um nome ou um codigo valido."<<endl<<endl;}
}
cout<<"Pressione ENTER para realizar outra operacao."<<endl;
getchar();
}
void remocao();
void removprod();
void remocao(){
cout<<"Remocao do Produto"<<endl;
cont = 0;
char codigo_produto[10];
cout<<"Insira o codigo do produto que voce deseja excluir"<<endl<<endl;
listagem();
cout<<"Codigo do Produto:";
cin>>codigo_produto;
for(int i = 0; i<cadastro;++i){
if(strcmp(codigo_produto,x[i].identificador_produto)==0){
for(int k = i; k<cadastro;++k){
x[k]=x[k+1];
}
cadastro--;
cont++;
break;
}
}
if(cont>0){
cout<<"Produto removido"<<endl;
cout<<"Pressione ENTER para avancar no processo"<<endl;
getchar();
}else{cout<<"Codigo não encontrado ou invalido"<<endl;
cout<<"Pressione ENTER para avancar no processo"<<endl;
getchar();
}
}
int main(){
cout<<"CONSULTA DE ESTOQUE\n"<<endl;
cout<<endl;
inicio_do_programa:
cout<<"Insira um numero referente a sua escolha"<<endl;
cout<< "1 - Adicao de Produtos"<<endl<<"2 - Remocao de Produtos"<<endl<<"3 - Busca por Produtos"<<endl<<"0 - Sair do programa"<<endl;
cin>>escolha;
cout<<endl;
switch (escolha){
case 0 :
cout<<"Encerrando o programa. Adeus."<<endl;
return 0;
default:
case 1:
system("cls");
informacoes_produto();
goto inicio_do_programa;
case 2:
system ("cls");
remocao();
getchar();
system("cls");
goto inicio_do_programa;
case 3:
system("cls");
busca();
getchar();
system("cls");
goto inicio_do_programa;
case 4 :
system("cls");
cout<<"Listagem de Produtos no Estoque"<<endl;
cout<<endl;
listagem();
cout<<"Pressione ENTER para retornar ao Menu Inicial"<<endl;
getchar();
getchar();
system("clear||cls");
goto inicio_do_programa;
cout<<"Erro na processo. Insira uma opcao permitida."<<endl;
cout<<endl;
goto inicio_do_programa;
}
return 0;
}