Ir ao conteúdo
  • Cadastre-se

C. Mützenberg

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por C. Mützenberg

  1. Em 09/11/2019 às 13:54, Maisa_fernanda disse:

    Quem descobrir o erro me explique por gentileza o que está errado.

     

    
    /*==========================================================================
                                 LISTA ENCADEADA
    ==========================================================================*/
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <conio.h>
    //struct para o nodo da lista encadeada
    //Neste modo dev\e ter um ponteiro que aponta para o tipo da lista
    struct dados_produto
    {
        int cod_produto;
        char nome[20];
        float valor;
        struct dados_produto *prox; //ponteiro para o pr�ximo modo
    
    };
    
    //variaveis globais e prototipos das funcoes
    int codigo=0;
    struct dados_produto *raiz; //para o ponto de partida da lista
    struct dados_produto *paux; //ponteiro auxiliar
    
    
    void incluir();
    void incluir_fim();
    void incluir_ordenado();
    void excluir();
    void listar();
    
    
    int main()
    {
        char opcao;
        raiz = NULL; //raiz recebe nulo no inicio do programa
    
        do
        {
             system("cls");
             printf("      MENU\n");
             printf("\nI - inclui elementos no INICIO da lista");
             printf("\nM - inclui elementos no FIM    da lista");
             printf("\nO - inclui elementos no ORDENADOS da lista");
             printf("\nE - exclui elementos da lista");
             printf("\nL - listagem");
             printf("\nS - sair\n\n");
             printf("\nDigite a opcao: ");
             opcao = getch();
    
             opcao = toupper(opcao);
             switch(opcao)
             {
                          case 'I': incluir();
                                    break;
                          case 'M': incluir_fim();
                                    break;
                          case 'O': incluir_ordenado();
                                    break;
                          case 'E': excluir();
                                    break;
                          case 'L': listar();
                                    break;
                          case 'S': break;
                          default: printf("opcao invalida");
                          getch(); //parada de tela
             }
       }while(opcao != 'S');
       return 0;
    }// main
    
    /*------------------------------------------------------------------------
        Este procedimento do inclusao esta incluindo elementos no inicio, sem
        considerar se o valor a ser incluido j� existe ou nao, simplesmente
        inclui no inicio, entao eh um procedimento de inclusao de +*********+
                                                                  |  PILHA  |
                                                                  +*********+
    -------------------------------------------------------------------------*/
    void incluir()
    {
         struct dados_produto *pnovo;
         system("cls");
         printf("=============================================================\n");
         printf("       PROCEDIMENTO DE INCLUSAO NO INICIO DA LISTA\n");
         printf("=============================================================\n");
         pnovo = (struct dados_produto*) malloc(sizeof(struct dados_produto));//parte mais importante
    
         printf("\nDigite o nome: ");
         fflush(stdin); //limpeza de buffer
         gets(pnovo->nome);
         printf("\nDidite o valor: ");
         fflush(stdin); //limpeza de buffer
         scanf("%f",&pnovo->valor);
    
         pnovo->cod_produto = ++codigo; //codigo auto inclementavel
    
         //faz o ponteiro de novo nodo apontar para onde a raiz
         pnovo->prox = raiz;
    
         //faz a raiz apontar para este novo elemento
         raiz = pnovo;
    
         printf("\n ELEMENTO INCLUIDO");
         getch();
    }
    
    /*------------------------------------------------------------------------
        Este procedimento do inclusao esta incluindo elementos no fim, sem
        considerar se o valor a ser incluido j� existe ou nao, simplesmente
        inclui no fim, entao eh um procedimento de inclusao de +*********+
                                                                |  FILA  |
                                                               +*********+
    -------------------------------------------------------------------------*/
    void incluir_fim()
    {
         struct dados_produto *pnovo, *pant;
         system("cls");
         printf("=============================================================\n");
         printf("       PROCEDIMENTO DE INCLUSAO NO FIM DA LISTA\n");
         printf("=============================================================\n");
         pnovo = (struct dados_produto*) malloc(sizeof(struct dados_produto));//parte mais importante
    
         printf("\nDigite o nome: ");
         fflush(stdin); //limpeza de buffer
         gets(pnovo->nome);
         printf("\nDidite o valor: ");
         fflush(stdin); //limpeza de buffer
         scanf("%f",&pnovo->valor);
    
         pnovo->cod_produto = ++codigo; //codigo auto inclementavel
         pnovo->prox = NULL; //porque este ser� o ultimo elemento da lista
    
         if (raiz == NULL)
              //faz a raiz apontar para o proximo elemento
              raiz = pnovo;
         else
         {
             paux = raiz;
    
             while(paux->prox != NULL)
             {
             paux=paux->prox;
             }
             paux->prox = pnovo;
    
         }
         printf("\n ELEMENTO INCLUIDO");
         getch();
    }
    
    /*------------------------------------------------------------------------
        Este procedimento do inclusao esta incluindo elementos ordenados por
        nome, entao o elemento pode ser incluido no inicio, no meio ou no fim
        , pois o criterio de insercao e definido pelo nome (Externo a Estrutura
        de Dados), entao eh um procedimento de inclusao de  +*********+
                                                            |  PILHA  |
                                                            +*********+
    -------------------------------------------------------------------------*/
    void incluir_ordenado()
    {
      //função vazia
    
    }
    
    
    
    void excluir()
    {
         int cod_aux;
         struct dados_produto *pant;
         system("cls");
         printf("=============================================================\n");
         printf("       PROCEDIMENTO DE EXCLUSAO\n");
         printf("=============================================================\n");
         printf("\n Informe o codigo a excluir: ");
         fflush(stdin);
         scanf("%d",&cod_aux);
    
         pant = NULL;
         paux = raiz;
         while ((paux != NULL) && (paux->cod_produto != cod_aux))
         {
               pant = paux;
               paux = paux->prox;
         }
         if (paux == NULL)
              printf("\nCodigo '%d' nao existe na linha",cod_aux);
         else
         {
             if (paux == NULL)//significa que eh o primeiro elemento
             raiz = paux->prox;
             else
             pant->prox = paux->prox;
         free(paux); //libera memoria que o nodo ocupava
         printf("\nelemento excluido");
         }
         getch();
    }
    
    
    void listar()
    {
         system("cls");
         printf("=============================================================\n");
         printf("                 PROCEDIMENTO DE LISTAGEM\n");
         printf("=============================================================\n");
    
         printf("\nEnder da raiz....: %p",raiz);
    
         if (raiz == NULL)
         {
                  printf("\nLISTA VAZIA");
         }
         else
         {
             paux = raiz;
             while (paux != NULL)
             {
                   printf("\n-------------------------------------------------");
                   printf("\nEnder deste nodo..: %p",paux);
                   printf("\ncod_produto.......: %d",paux->cod_produto);
                   printf("\nnome..............: %s",paux->nome);
                   printf("\nvalor.............: %f",paux->valor);
                   printf("\nEnder do prox.....: %p",paux->prox);
                   paux = paux->prox;//assume o endereco do proximo nodo
             }
         }
         getch(); //parada em tela
    }

     

     

    adicionado 1 minuto depois

    A função incluir ordenado esta vazia. Não é um erro, é a falta.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!