Ir ao conteúdo

Posts recomendados

Postado

Tenho que fazer esse programa: mas eu acho q a logica esta certa, so que  to tendo alguns problemas na sintaxe. alguem poderia me dar uma luz? 

 

Faça um programa para preenchimento de uma lista encadeada de produtos (código, nome e preço), utilizando como base as funções apresentadas. Você deve apresentar ao usuário um menu com as seguintes opções:

1- Inserir produto

2- Exibir todos os produtos

3- Buscar um produto pelo código

4- Remover um produto

5- Sair

<CODE>

#include <stdio.h>
#include <stdlib.h>
#include <string.h >

    typedef struct produto{
        int cod;
        float preco;
        char nome[10];
        struct no *prox;
    }produto;
    
    int op;
    produto prod;
    produto *inicioL;
    

    void cria_lista () {
        inicioL = NULL;
    }
    int lista_vazia () {
        if (inicioL== NULL)
        return 1;
    return 0;
    }

    produto* cria_prod (int cod, float preco, char *nome){
        produto *aux;
        aux = (produto*) malloc(sizeof(produto));
        if (aux!=NULL){
            aux->cod= cod;
            aux->preco= preco;
            strcpy(aux->nome,nome);
            aux->prox=NULL;
        }
            return aux;
    }

    void inserirProd (int cod, float preco, char *nome){
    
        produto* aux;
        aux = cria_prod (cod, preco, nome);
        aux->prox= inicioL;
        inicioL = aux;
    }
    
    void exibir (){
        produto *aux;
        aux = inicioL;
        while (aux!=NULL){
            printf("%d", aux->cod);
            printf("%f", aux->preco);
            printf("%c", aux->nome);
            aux = aux->prox;
        }
    }
    void buscarProd (int cod){
        produto *aux;
        aux = inicioL;
        while (aux!=NULL){
            printf("%d", aux->cod);
            aux = aux->prox;
        }
    }
    void remover (int cod){
        produto* ant = NULL;
        produto* aux = inicioL;
        
        if(!listaVazia()){
            while(aux!=NULL) && (aux->cod!=cod){
                ant= aux;
                aux = aux->prox;
            }
            if (aux==NULL){
            
                printf("Produto nao encontrado!");
        }
            else{
                if(ant==NULL)
                    inicioL= aux->prox;
                else
                    ant->prox=aux->prox;
                free(aux);
            }
    }
        else{
            printf("Nao tem produtos cadastrados!");
    
        }    
int main(){


    
    printf ("1-Inserir produto \n2-Exibir todos os produtos \n3-Buscar um produto pelo código \n4-Remover um produto\n5-Sair");
    printf("\n\nDigite sua opcao!");
    scanf("%d", &op);
    
    switch (op){
        
        
        case 1: 
        printf("Informe o nome do produto:  ");
        fflush(stdin); 
        gets(prod.nome);
        printf("Informe o preco do produto: ");
        scanf ("%d", &prod.preco);
        printf("Informe o codigo do produto:");
        scanf  ("%d", &prod.cod);
        inserirProd (int cod, float preco, char nome);
        break;
        
        case 2: 
        exibir ();
        break;
        
        case 3: 
        buscarProd (int cod);
        break;
        
        case 4: 
        printf("Qual produto deseja remover?");
        scanf("%d", &cod);
        remover (int cod);
        break;
        
        case 5: 
            printf("Saindo...");
        
        default :
            printf ("Opcao invalida!\n");

    }

        
}

  • Curtir 1
Postado
  • Use ponteiros para os dois lados. É mais fácil e não o contrário. Com ponteiros para um lado só fica tudo difícil porque não tem como se posicionar direito e toda hora tem que voltar para o início
  • sua lista não é de produtos. é de nós. Toda lista é de nós. Se não separar essas coisas vai ter um trabalho miserável. E no próximo programa com listas vai ter o mesmo trabalho de novo
  • uma lista é de nós e cada nó tem um produto dentro. Escreva assim e tudo fica mais simples. Postei exemplos assim aqui nesses últimos dias.
  • main() deve ser a primeira função de seu programa. sempre
  • não use menus e nem leia do teclado antes de estar funcionando. Nada acrescenta exceto problemas e atraso para testar

 

  • Curtir 3

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!