Binary Road
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Trabalho de Lista Dinâmica

2 participantes

Ir para baixo

Trabalho de Lista Dinâmica Empty Trabalho de Lista Dinâmica

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

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

Ir para o topo Ir para baixo

Trabalho de Lista Dinâmica Empty Programa

Mensagem  Renancr 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 Sáb 9 Abr 2011 - 23:37, editado 5 vez(es)
Renancr
Renancr

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

Ir para o topo Ir para baixo

Trabalho de Lista Dinâmica Empty Alteração

Mensagem  fabricio211 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

Ir para o topo Ir para baixo

Trabalho de Lista Dinâmica Empty Re: Trabalho de Lista Dinâmica

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos