Trabalho de Lista Dinâmica
2 participantes
Binary Road :: Lógica e Técnica de Programação :: Programação Orientada a Objeto :: Análise de Algoritmos :: Organização e Recuperação da Informação :: Estudo
Página 1 de 1
Trabalho de Lista Dinâmica
Trabalho de Lista dinâmica
Participantes:
Renan
Fabricio
Especificação:
a) Escolha escopo de mercado para criar um programa;
b) Cada nó da lista deverá ter no mínimo 5 campos sem contar o campo do tipo ponteiro;
c) O programa deverá ter no mínimo as seguintes funções:
i. Cadastro de elementos de forma ordenada ii. Busca por um elemento na lista iii. Alteração de um elemento da lista iv. Impressão de todos os elementos da lista v. Remoção do elemto |
Observação: A implementação do trabalho deve ser feita utilizando listas dinâmicas de encadeamento simples.
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Programa
Projeto finalizado
- Código:
#include <iostream>
#include <string>
using namespace std;
struct prod
{
int cod, quant;
char nome[100], desc[100];
float preco;
prod * prox;
};
typedef struct prod produto;
int menu();
int menualteracao();
produto *inicializa();
produto *insere(produto *estoque);
produto *busca(produto *estoque, int codigoprocurado);
produto *ordenacao(produto *estoque,produto *novo, int codigoprocurado);
produto *remocao(produto *estoque, int valor);
void alter(produto *estoque);
void imprime(produto *estoque);
void main()
{
int op, codigoprocurado;
produto *estoque, *result;
estoque=inicializa();
do{
op=menu();
if(op == 1)
{
system("cls");
estoque= insere(estoque);
}
else
if(op == 2)
{
do{
system("cls");
cout<< "\n\tDigite o codigo do produto\n\t";
cin>> codigoprocurado;
if(codigoprocurado <= 0)
{
system("cls");
cout<< "\n\n\nO codigo digitado nao pode ser menor ou igual a 0 zero\n\n\n";
system("pause");
}
}while(codigoprocurado <= 0);
result = busca(estoque, codigoprocurado);
if(result != NULL)
{
system("cls");
cout<< "====================================\n";
cout<< "\tProduto encontrado\n";
cout<< "====================================\n";
cout<< "================================================\n";
cout<< "Codigo: " << result->cod << endl;
cout<< "Produto: " << result->nome << endl;
cout<< "Descricao: " << result->desc << endl;
cout<< "Valor: " << result->preco << endl;
cout<< "Quantidade: " << result->quant << endl;
cout<< "================================================\n\n";
system("pause");
}
else
{
system("cls");
cout<< "====================================\n";
cout<< "\tProduto nao encontrado\n";
cout<< "====================================\n";
system("pause");
}
}
else
if(op == 3)
{
system("cls");
alter(estoque);
system("pause");
}
else
if(op == 4)
{
system("cls");
imprime(estoque);
system("pause");
}
else
if(op == 5)
{
system("cls");
cout<< "\n\nDigite o codigo desejado para remocao: \n\t";
cin >> codigoprocurado;
estoque = remocao(estoque,codigoprocurado);
}
}while(op != 6);
}
int menu()
{
int op;
do{
system("cls");
cout<< "1- Cadastrar produto\n";
cout<< "2- Bucar produto\n";
cout<< "3- Alterar campo do produto\n";
cout<< "4- Imprimir produtos\n";
cout<< "5- Remover produto\n";
cout<< "6- Sair\n";
cout<< "\n\tDigite a opcao desejada\n\t";
cin>> op;
if(op < 1 || op > 6)
{
system("cls");
cout<< "Opcao invalida\n\n";
system("pause");
}
}while(op < 1 || op > 6);
return op;
}
int menualteracao()
{
int op;
do{
system("cls");
cout<< "1- Alterar o nome do produto\n";
cout<< "2- Alterar a descrição do produto\n";
cout<< "3- Alterar valor do produto\n";
cout<< "4- Alterar a quantidade do produto\n";
cout<< "5- Sair\n";
cout<< "\n\tDigite a opcao desejada\n\t";
cin>> op;
if(op < 1 || op > 5)
{
system("cls");
cout<< "Opcao invalida\n\n";
system("pause");
}
}while(op < 1 || op > 5);
return op;
}
produto *inicializa()
{
return NULL;
}
produto *insere(produto *estoque)
{
produto *novo, *result;
int codigo;
do{
cout<< "Digite o codigo do produto\n";
cin>> codigo;
if(codigo <= 0)
{
system("cls");
cout<< "\n\n\nO codigo digitado nao pode ser menor ou igual a 0 zero\n\n\n";
system("pause");
}
}while(codigo <= 0);
if(estoque != NULL)
result=busca(estoque, codigo);
else
result = NULL;
if(result == NULL || estoque == NULL)
{
novo=(produto*) malloc (sizeof(produto));
novo->prox=NULL;
novo->cod=codigo;
cout<< "\nDigite o nome do produto\n";
fflush(stdin);
gets_s(novo->nome);
cout<< "\nDigite a descricao do produto\n";
gets_s(novo->desc);
cout<< "\nDigite o valor do produto\n";
cin>> novo->preco;
cout<< "\nDigite a quantidade do produto\n";
cin>> novo->quant;
if(estoque != NULL)
{
estoque = ordenacao(estoque,novo,codigo);
}
else
{
estoque = novo;
}
return estoque;
}
else
{
system("cls");
cout<< "\nJá existe um produto com este codigo\n\n";
system("pause");
return estoque;
}
}
produto *busca(produto *estoque, int codigoprocurado)
{
prod *p=estoque, *ant=NULL;
while(p != NULL)
{
if(codigoprocurado == p->cod)
return p;//se encontrou retorna o endereço
p=p->prox;
}
return NULL;//se não foi encontrado retorna NULL
}
void imprime(produto *estoque)
{
produto *i;
for(i = estoque; i != NULL; i=i->prox)
{
cout<< "================================================\n";
cout<< "Codigo: " << i->cod << endl;
cout<< "Produto: " << i->nome << endl;
cout<< "Descricao: " << i->desc << endl;
cout<< "Valor: " << i->preco << endl;
cout<< "Quantidade: " << i->quant << endl;
cout<< "================================================\n\n";
}
}
produto *ordenacao(produto *estoque, produto *novo, int codigoprocurado)
{
produto *ant=NULL, *p=estoque;
while(p != NULL && codigoprocurado > p->cod)
{
ant=p;
p=p->prox;
}
if(p == NULL) // Se ele esta no inicio da lista
{
if(ant != estoque)
{
ant->prox = novo;
}
else
if(ant == estoque)
{
estoque = novo;
}
}
else
if(ant == NULL)// Se ele esta no fim da lista
{
novo->prox = p;
estoque = novo;
}
else // Se no meio
{
ant->prox = novo;
novo->prox = p;
}
return estoque;
}
produto *remocao(produto *estoque, int valor)
{
produto *ant = NULL;
produto *p = estoque;
system("cls");
while(p != NULL && p->cod != valor)
{
ant = p;
p = p->prox;
}
if(p == NULL)
{
cout << "\n\nValor nao encontrado\n\n";
return estoque;
system("pause");
}
if(ant == NULL)
{
cout << "\n\nValor removido com sucesso\n\n";
estoque = p->prox;
system("pause");
}
else
{
cout << "\n\nValor removido com sucesso\n\n";
ant->prox = p->prox;
system("pause");
}
free(p);
return estoque;
}
void alter(produto *estoque)
{
int codigo, op;
produto *result=NULL;
do{
op=menualteracao();
if(op != 5)
{
cout<< " \n\nDigite o codigo do produto que deseja alterar: \n\n\t";
cin >> codigo;
result = busca(estoque,codigo);
}
if(result == NULL && op != 5)
{
system("cls");
cout<< "\n\nProduto não encontrado\n\n" <<endl;
system("pause");
}
else
if(result != NULL && op != 5)
{
system("cls");
cout<< "================================================\n";
cout<< "Codigo: " << result->cod << endl;
cout<< "Produto: " << result->nome << endl;
cout<< "Descricao: " << result->desc << endl;
cout<< "Valor: " << result->preco << endl;
cout<< "Quantidade: " << result->quant << endl;
cout<< "================================================\n\n";
if(op == 1)
{
cout<< "\nDigite o nome do produto\n";
fflush(stdin);
gets_s(result->nome);
}
else
if(op == 2)
{
cout<< "\nDigite a descricao do produto\n";
fflush(stdin);
gets_s(result->desc);
}
else
if(op == 3)
{
cout<< "\nDigite o valor do produto\n";
cin>> result->preco;
}
else
{
cout<< "\nDigite a quantidade do produto\n";
cin>> estoque->quant;
}
}
}while(op != 5);
}
Última edição por Renancr em Sáb 9 Abr 2011 - 23:37, editado 5 vez(es)
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Alteração
- Código:
#include <iostream>
#include <string>
using namespace std;
struct prod
{
int cod, quant;
char nome[100], desc[100];
float preco;
prod * prox;
};
typedef struct prod produto;
int menu();
produto *inicializa();
produto *insere(produto *estoque);
produto *busca(produto *estoque, int codigoprocurado);
produto *ordenacao(produto *estoque,produto *novo, int codigoprocurado);
void imprime(produto *estoque);
void main()
{
int op;
produto *estoque;
estoque=inicializa();
do{
op=menu();
if(op == 1)
{
system("cls");
estoque= insere(estoque);
}
else
if(op == 2)
{
system("cls");
cout<< "Ainda nao implementado\n\n";
system("pause");
}
else
if(op == 3)
{
system("cls");
cout<< "Ainda nao implementado\n\n";
system("pause");
}
else
if(op == 4)
{
system("cls");
cout<< "Ainda nao implementado\n\n";
system("pause");
}
else
if(op == 5)
{
system("cls");
cout<< "Ainda nao implementado\n\n";
system("pause");
}
}while(op != 6);
}
int menu()
{
int op;
do{
system("cls");
cout<< "1- Cadastrar produto\n";
cout<< "2- Bucar produto\n";
cout<< "3- Alterar campo do produto\n";
cout<< "4- Imprimir produtos\n";
cout<< "5- Remover produto\n";
cout<< "6- Sair\n";
cout<< "\n\tDigite a opcao desejada\n\t";
cin>> op;
if(op < 1 || op > 6)
{
system("cls");
cout<< "Opcao invalida\n\n";
system("pause");
}
}while(op < 1 || op > 6);
return op;
}
produto *inicializa()
{
return NULL;
}
produto *insere(produto *estoque)
{
produto *novo, *result, *ordena;
int codigo;
cout<< "Digite o codigo do produto\n";
cin>> codigo;
if(estoque != NULL)
result=busca(estoque, codigo);
else
result = NULL;
if(result == NULL || estoque == NULL)
{
novo=(produto*) malloc (sizeof(produto));
novo->prox=estoque;
novo->cod=codigo;
cout<< "\nDigite o nome do produto\n";
fflush(stdin);
gets_s(novo->nome);
cout<< "\nDigite a decricao do produto\n";
gets_s(novo->desc);
cout<< "\nDigite o valor do produto\n";
cin>> novo->preco;
cout<< "\nDigite a quantidade do produto\n";
cin>> novo->quant;
ordena = ordenacao(estoque,novo,codigo);
return novo;
}
else
{
system("cls");
cout<< "\nJá existe um produto com este codigo\n\n";
system("pause");
return estoque;
}
}
produto *busca(produto *estoque, int codigoprocurado)
{
produto *i;
//i = 0;
for(i = estoque; i != NULL; i=i->prox)
if(i->cod == codigoprocurado)
{
return i; // encontrou o codigo
}
return NULL; // nao encontrou o codigo
}
void imprime(produto *estoque)
{
produto *i;
for(i = estoque; i != NULL; i=i->prox)
{
cout<< "================================================\n";
cout<< "Codigo: " << estoque->cod << endl;
cout<< "Produto: " << estoque->nome << endl;
cout<< "Descricao: " << estoque->desc << endl;
cout<< "Valor: " << estoque->preco << endl;
cout<< "Quantidade: " << estoque->quant << endl;
cout<< "================================================\n\n";
}
}
produto *ordenacao(produto *estoque, produto *novo, int codigoprocurado)
{
produto *aux;
produto *i;
//i = 0;
for(i = estoque; i != NULL; i=i->prox)
if(i->cod > codigoprocurado)
{
aux->cod = i->cod;
aux->desc = i->desc;
aux->nome = i->nome;
aux->preco = i->preco;
aux->quant = i->quant;
i->cod = novo->cod;
i->desc = novo->desc;
i->nome = novo->nome;
i->preco = novo->preco;
i->quant = novo->quant;
novo->cod = aux->cod;
novo->desc = aux->desc;
novo->nome = aux->nome;
novo->preco = aux->preco;
novo->quant = aux->quant;
}
}
fabricio211- Mensagens : 2
Data de inscrição : 06/10/2010
Tópicos semelhantes
» Lista Dinâmica
» Trabalhando com Lista Dinamica
» Lista Dinâmica Duplamente Encadeada
» Lista Linear
» 4ª lista de exercícios
» Trabalhando com Lista Dinamica
» Lista Dinâmica Duplamente Encadeada
» Lista Linear
» 4ª lista de exercícios
Binary Road :: Lógica e Técnica de Programação :: Programação Orientada a Objeto :: Análise de Algoritmos :: Organização e Recuperação da Informação :: Estudo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos