ajuda neste cogido em c

1. ajuda neste cogido em c

fernanda maria
fernanda10

(usa Outra)

Enviado em 01/10/2015 - 22:16h


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Declaração da estrutura produto, com 5 campos
struct produto {
int nro;
char desc[15];
float preco;
int estoque;
struct produto *prox;
};
typedef struct produto ListaProd;
// Função para iniciar a lista com o valor Nulo.
ListaProd* inicia(){
return NULL;
}
// Função para a inserção ordenada (por número) dos produtos
ListaProd* insereOrdem(ListaProd *l, int i, char nome[], float prc, int
est){
ListaProd *p=l, *ant=NULL;
// Alocação e inicialização de valores para o nó "novo".
ListaProd *novo = (ListaProd *) malloc (sizeof(ListaProd));
novo->nro = i;
strcpy(novo->desc, nome);
novo->preco = prc;
novo->estoque = est;
// Produto deve ser inserido no início da lista (primeiro ou inferior)
if (p == NULL || p->nro > i){
novo->prox = p;
return novo; }
else {
// Produto deve ser encadeado no meio (ou final) da lista
while(p!= NULL && p->nro <= i){
ant=p;
p=p->prox;
}
novo->prox = ant->prox;
ant->prox=novo;
return l;
}
}
// Função para exibir os produtos na tela
void imprime(ListaProd *l){
ListaProd *p;
for(p=l; p!=NULL; p=p->prox){
printf("\nNumero: %d",p->nro);
printf(" | Descricao: %s",p->desc);
printf(" | Preco: %.2f",p->preco);
printf(" | Estoque: %d",p->estoque); }
}
// Função principal
int main()
{
ListaProd *l;
int num, nro, est, op=0;
char desc[15];
float m, prc;
l = inicia();
do { system("cls");
printf(" \n\t-------- OPCOES -------- ");
printf(" \n\t1 - Inserir um novo produto ");
printf(" \n\t2 - Listar produtos ");
printf(" \n\t3 - Encerrar ");
printf(" \n\tOpcao: ");
scanf("%d",&op);
switch(op){
case 1: system("cls");
printf(" \n\n--- Novo produto --- ");
printf("\n Numero: ");
canf("%d",&nro);
printf(" Descricao: ");
scanf("%s",&desc);
printf(" Preco: ");
scanf("%f",&prc);
printf(" Estoque: ");
scanf("%d",&est);
l = insereOrdem(l, nro, desc, prc, est);
break;
case 2: system("cls");
printf("\n\n--- Lista de produtos --- \n");
imprime(l);
system("pause>>null");
break;
otherwise: printf(" Opcao invalida ");
}
} while (op != 3);
system("PAUSE>>null");
return 0;
}







presico colocar neste codigo opção de esxlusao de produto.


  


2. Re: ajuda neste cogido em c

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/10/2015 - 22:52h

Prá apagar você precisa colocar a opção apagar no menu, obviamente, e implementar um free() na estrutura a ser apagada.
Precisa criar uma busca no item a ser apagado e colocar o ponteiro de trás apontando para o da frente. Ex:

[inicio]->[1]->[2]->[3]->[4]->[5]->[null]

busca até encontrar o [3].

Lê de 1 em 1 até uma comparação encontrar a identificação.

Coloca o trecho depois do 3 usando um ponteiro temporário até apagar o [3].

[inicio]->[1]->[2]->[X] (apagado)

[tmp]->[4]->[5]->[null]

Depois de apagar, joga o trecho de novo na estrutura.

[inicio]->[1]->[2]-->[4]->[5]->[null]

A indentação tá um pouco ruinzinha.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts