cool_man 0 Denunciar post Postado Junho 26, 2007 Boas pessoal, Tou com alguma dificuldade em fazer trabalho para a faculdade que usa listas. O trabalho que tenho de fazer tem o enunciado que se encontra neste link http://trabalhosuniv.com.sapo.pt/Projecto.pdf Alguma parte do programa ja está feito mas tou com dificuldade em fazer a listagem dos valores introduzidos, não saem como foram introduzidos, e isto esta-me a dificultar em poder avançar com o trabalho. Em baixo junto o codigo que ja esta contruido. Agradecia a vossa ajuda, pois tou a ter dificuldades em fazer o trabalho que tem de ser entregue até dia 30 de junho e conta para nota final. Até agora tenho conseguido fazer os trabalhos solicitados pelo professor, mas neste projecto, e devido ao facto de para alem estudar tambem ser trabalhador, não estou inserido num grupo e tenho feito o trabalho sozinho o que torna as coisas mais dificeis. Agradeço imenso qualquer ajuda que possa ser dada. Codigo ja feito: #include <stdio.h>#include <stdlib.h>typedef struct lista{ char produto; char data; float quantidade; float preco; float iva; struct lista *proximo, *anterior;};struct lista *primeiro;struct lista *actual; struct lista *anterior;struct lista *proximo;struct lista *gravar;char op;char prod[50];char dat[10];float quant[5];float prec[5];float i[4];void insere(void){ system("cls"); printf("Inserir novo registo\n\n"); primeiro = NULL; for(;;) { scanf("%s %s %d %d %d", ∏, &dat, &quant, &prec, &i); op = getch(); actual = malloc( sizeof(struct lista) ); (*actual).produto = prod[50]; (*actual).data = dat[10]; (*actual).quantidade = quant[5]; (*actual).preco = prec[5]; (*actual).iva = i[4]; (*actual).proximo = primeiro; primeiro = actual; if( op == 42) break; } primeiro->proximo = NULL; for(actual = primeiro; actual != NULL; actual = (*actual).proximo) printf( "%s %s %d %d %d\n", (*actual).produto, (*actual).data, (*actual).quantidade, (*actual).preco, (*actual).iva); system("pause");}void listar(void){ system("cls"); actual = primeiro; while( actual != NULL ) { printf( "%c %c %f %f %f\n", (*actual).produto, (*actual).data, (*actual).quantidade, (*actual).preco, (*actual).iva); actual = (*actual).proximo; } system("pause");}void elimina(void){ char op; printf("Elimina produto\n\n"); if(primeiro == NULL){ system("cls"); printf("Nenhum registro armazenado...\n\n"); system("pause"); return; } else{ actual = primeiro->proximo; do{ system("cls"); printf("Pressione + e - para alternar entre os registros, sair e confirmar\n\n"); printf("Produto: %s\n\nData: %s\n\nQuantidade: %s\n\nPreco: %s\n\nIVA: %s\n", actual->produto,actual->data,actual->quantidade,actual->preco,actual->iva); op = getch(); switch (op){ case 43:{ if (actual->proximo == primeiro) actual = primeiro->proximo; else actual = actual->proximo; break; } case 45:{ if (actual->anterior == primeiro) actual = primeiro->anterior; else actual = actual->anterior; } } }while((op != 27) && (op != 13)); } if(op == 27) return; printf("\n\nVoce confirma a exclusao deste registro (S/N): [ ]\b\b"); op = getch(); if (op >= 97) op -= 32; if(op == 'S'){ anterior = actual->anterior; proximo = actual->proximo; anterior->proximo = proximo; proximo->anterior = anterior; free(actual); if (primeiro == primeiro->proximo) // se for excluido o penultimo registro, sobrando apenas o registro "primeiro" que não é util para nós, o primeiro tambem será liberado primeiro = NULL; printf("\n\nRegistro excluido com sucesso!\n\n"); system("pause"); } else return;}int main(void){ char escolha; insere(); do{ system("cls"); printf("I<nsere>, E<limina>, L<istar>, S<air>\n\nEscolha[ ]\b\b"); escolha = getch(); if(escolha >= 97) escolha -= 32; if(escolha == 'I') insere(); if(escolha == 'E') elimina(); if(escolha == 'L') listar(); if(escolha == 'S') break; }while(escolha != 27); return 0;} Compartilhar este post Link para o post Compartilhar em outros sites
Tiago Cardoso 1 Denunciar post Postado Junho 29, 2007 Cara vou te mover para C/C++, ok? Compartilhar este post Link para o post Compartilhar em outros sites
AndreFonseca 0 Denunciar post Postado Julho 3, 2007 Cara, não adianta nada colocar um baita código porque muita gente não lê nada.Você tem que colocar só o teu problema, tipo específico e a parte do código, que daí dá pra ajudar. Fica mais fácil e você aprende mais.Eu sei que o prazo já acabou, mas é melhor assim, não só pra você, mas para todos. Compartilhar este post Link para o post Compartilhar em outros sites