Trabalho de Lista Dinâmica

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Trabalho de Lista Dinâmica

Mensagem  Renancr em Dom 27 Mar 2011 - 23:59

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.
avatar
Renancr

Mensagens : 118
Data de inscrição : 08/03/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Programa

Mensagem  Renancr em Seg 28 Mar 2011 - 0:00

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 Sab 9 Abr 2011 - 23:37, editado 5 vez(es)
avatar
Renancr

Mensagens : 118
Data de inscrição : 08/03/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Alteração

Mensagem  fabricio211 em Seg 28 Mar 2011 - 22:21

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Trabalho de Lista Dinâmica

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum