Enviado em 08/11/2012 - 17:12h
Boa tarde,#include <stdio.h> struct loja{ char nota_fiscal[100]; int quant; struct loja *prox; }; typedef struct loja estoque; int cont = 0; estoque *estrut; menu(){ int caso; system("cls"); printf("[1] Adicionar NF\n"); printf("[2] Mostrar Estoque\n"); printf("[3] Remover NF\n"); printf("[0] Sair\n"); scanf("%d",&caso); system("cls"); switch(caso){ case 1: inserir(); break; case 2: imprimir(); break; case 3: remover(); break; case 0: (1); break; default: printf("Opcao invalida!\n"); getch(); menu(); } } inserir(){ char nota_fiscal[100]; int quant; fflush(stdin); printf("Digite o numero da Nota Fiscal: "); gets(nota_fiscal); printf("Digite a quantidade do produto: "); scanf("%d",&quant); printf("%d",strlen(estrut->nota_fiscal)); getchar(); if (strlen(estrut->nota_fiscal) == 0){ strcpy(estrut->nota_fiscal,nota_fiscal); estrut->quant = quant; }else{ estoque *novo; novo = (estoque*) malloc(sizeof(estoque)); strcpy(novo->nota_fiscal,nota_fiscal); novo->quant = quant; novo->prox = NULL; estoque *atual; atual = estrut; while (atual->prox != NULL) atual = atual->prox; atual->prox = novo; } cont++; menu(); } imprimir(){ estoque *mostrar; mostrar = estrut; if(cont == 0){ printf("Sem Dados"); } else{ do{ printf("Nota Fiscal: %s\n", mostrar->nota_fiscal); printf("Quantidade: %d\n\n", mostrar->quant); mostrar = mostrar->prox; if (mostrar ==NULL) break; } while (1==1); } getch(); menu(); } remover(){ if (estrut->prox==NULL){ strcpy(estrut->nota_fiscal,""); estrut->quant = NULL; }else{ estoque *atual, *anterior; atual = estrut; while(atual->prox != NULL){ anterior = atual; atual = atual->prox; } anterior->prox = NULL; free(atual); } if(cont == 0){ printf("Sem Dados"); }else{ printf("Ultimo registro removido!"); cont--; } getch(); menu(); } main(){ estrut = (estoque*) malloc(sizeof(estoque)); strcpy(estrut->nota_fiscal,""); estrut->prox=NULL; menu(); }
Enviado em 08/11/2012 - 17:35h
para postar codigos usar a tag (code), assim SEM ASPAS:// codigo aqui ..."
Enviado em 08/11/2012 - 18:07h
Tem certas partes a melhorar como esta, e o while pode ser while(1) que seria o mesmo que 1==1do{ printf("Nota Fiscal: %s\n", mostrar->nota_fiscal); printf("Quantidade: %d\n\n", mostrar->quant); mostrar = mostrar->prox; } while (mostrar != NULL);
remover(){ estoque *remover; if( estrut->nota_fiscal != "" ) { remover = estrut; estrut = estrut->prox; free(remover); printf("Ultimo registro removido!"); cont--; } else { //strcpy(estrut->nota_fiscal,""); //estrut->quant = NULL; printf("Sem Dados"); } getch(); menu(); }
Enviado em 08/11/2012 - 20:11h
veja se esse axemplo ajuda, OBS: fiz nas pressas ...#include <stdio.h> #include <string.h> #include <malloc.h> typedef struct loja loja; struct loja { char nota_fiscal[100]; int quant; loja *prox; }; loja *first; int count = 0; void add (char *text, int quant) { loja *v = (loja*) malloc (sizeof(loja)); if (v && text) { strcpy (v->nota_fiscal, text); v->quant = quant; v->prox = NULL; count++; if (!first) { first = v; } else { loja *aux = first; while (aux->prox != NULL) aux = aux->prox; aux->prox = v; } } } void del (void) { loja *a = first; loja *end; if (count) { count--; while (a->prox != NULL) { end = a; a = a->prox; } end->prox = NULL; free (a); } } int main (int argc, char *argv[]) { // add ... add ("nota feijao", 2); add ("nota leite", 5); add ("nota arroz", 8); add ("nota farinha", 100); del (); // DELETE: "nota farinha", 100 // list: ... loja *i = first; while (i) { printf ("NOTA: %s - %d\n", i->nota_fiscal, i->quant); i = i->prox; } return 0; }
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Montando e usando iso de um sistema dentro do outro (6)
Erro GLPI 10.0.0.18 - Ticket (0)