Ir para conteúdo
Fórum Script Brasil

Lucas Mello

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Lucas Mello

Lucas Mello's Achievements

0

Reputação

  1. Pessoal, estou com problemas para rodar esse programa. O compilador não apresenta erro mas quando é executada, o terminal encerra a execução no momento em que a função de inserção é chamada #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{ char nome[10]; int codigo; float preço; }Tproduto; typedef struct lista { Tproduto produto; struct lista* prox; }TLista; typedef TLista* PLista; TLista* inicializa_lista(){ return NULL; } PLista Insere_ord (PLista l, Tproduto dado){ PLista novo; PLista ant = NULL; PLista ptaux = l; novo = (TLista*) malloc(sizeof(TLista)); novo->produto = dado; while ((ptaux!=NULL) && (ptaux->produto.codigo)< dado.codigo){ ant = ptaux; ptaux = ptaux->prox; } if (ant == NULL){ novo->prox = l; l = novo; } else{ novo->prox = ant->prox; ant->prox = novo; } return l; } float busca_produto (PLista lista, int v){ PLista p; for (p=lista; p!=NULL; p=p->prox) if (p->produto.codigo == v) return p->produto.preço; printf("produto não encontrado\n"); return 0; } PLista retira (PLista lista, char v){ PLista ant = NULL; PLista p; /* procura elemento na lista, guardando anterior */ for (p=lista;p!=NULL && strcmp(v,lista->produto.nome)!=0; p = p->prox) ant = p; /* verifica se achou elemento */ if (p == NULL) return lista; /* n�o achou: retorna lista original */ /* retira elemento */ if (ant == NULL) /* retira elemento do inicio */ lista = p->prox; else /* retira elemento do meio da lista */ ant->prox = p->prox; free(p); return lista; } void imprime (PLista lista){ PLista p; /* vari�vel auxiliar para percorrer a lista */ for (p = lista; p != NULL; p = p->prox) printf("nome codigo preço\n"); printf(" %s %d R$%.2f", p->produto.nome, p->produto.codigo, p->produto.preço); printf("\n"); } void Destroi_lista (PLista lista){ PLista p = lista, t; while (p != NULL){ t = p->prox; /* guarda refer�ncia para o pr�ximo elemento*/ free(p); p = t; /* faz p apontar para o pr�ximo */ } } int main(){ PLista LISTA; Tproduto produto; char name, nome_excluir; int codigo, d=0, consulta; float preço; while(d!=-1){ printf("digite o nome do produto\n"); scanf(" %s" , &name); printf("digite o codigo do produto\n"); scanf(" %d" , &codigo); printf("entre com o preço do produto\n"); scanf(" %.2f" , &preço); strcpy(produto.nome,name); produto.codigo = codigo; produto.preço = preço; LISTA = Insere_ord(&LISTA, produto); printf("deseja continuar inserindo?\ndigite -1 para sair\n"); scanf("%d", &d); } printf("digite o codigo do produto para consultar seu preço\n"); scanf("%d" , &consulta); float encontrado; encontrado = busca_produto(LISTA, consulta); printf("o preço do produto procurado é ** %.2f\n", encontrado); printf("digite o nome do produto que deseja excluir\n"); gets(nome_excluir); retira(LISTA, nome_excluir); Destroi_lista; return 0; }
×
×
  • Criar Novo...