Ir para conteúdo
Fórum Script Brasil

Samukaaa

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Samukaaa postou

  1. Preciso de ajuda com essa lista escadeada, os erros são na parte de remoção o ultimo item não é removido da lista, é na parte de perquisar itens... porfavor eu preciso pra amanhã; #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define dgetchar() getchar();getchar(); // Estrutura da LISTA struct tipo_lista { int cod; char nome[30]; int qtd; float valor; struct tipo_lista *prox; }; // Definição de um NOVO tipo de DADOS chamado Lista typedef struct tipo_lista Lista; /******************************************************************************* Procedimento e Funções de Apoio *******************************************************************************/ // Posiciona uma mensagem na coluna e linha especificada void gotoxy(int coluna, int linha); //Desenhar borda void desenharBorda(); // Exibi o Menu Principal void menuPrincipal(); /******************************************************************************* Procedimento e Funções para Manipular a LISTA *******************************************************************************/ // declara uma lista não inicalizada Lista *listaRegistro; //Inseri dados Lista* inserirDados(Lista *lista);//declaração da função //exibir dados void LiberarLista(Lista *lista); //exibir dados void exibirDados(Lista *lista); void excluir(Lista *lista, int v); //Buscar // void ListaBusca(Lista *lista); //função de inicialização : retorna uma lista vazia Lista *inicializa(); // Função de inicialização: retorna uma lista vazia Lista *inicializa(void) { return NULL; } /******************************************************************************* Programa PRINCIPAL *******************************************************************************/ int main() { // Repetição Infinita for (;;) { menuPrincipal(); } return 0; } /******************************************************************************* BORDAS *******************************************************************************/ // Função para posicionar na coordenada X,Y // (Coluna(X),Linha(Y)) da tela. void gotoxy(int coluna, int linha) { COORD point; point.X = coluna; point.Y = linha; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), point); } // Desenhar borda void desenharBorda() { int i = 0; for (i=0;i<80;i++){ gotoxy(i,0); printf("#"); gotoxy(i,3); printf("#"); //------------------- gotoxy(i,14); printf(""); gotoxy(i,15); printf(""); gotoxy(i,16); printf(""); gotoxy(i,17); printf(""); gotoxy(i,18); printf(""); //--------------------- gotoxy(i,19); printf("#"); gotoxy(i,24); printf("#"); } for (i=0;i<24;i++){ gotoxy(0,i); printf("#"); gotoxy(79,i); printf("#"); } } // Procedimento para exibir o Menu Principal void menuPrincipal() { int op; // Limpa a tela. system("title INFORMATICA MCS"); system("cls"); // Alterar a cor do fundo da tela e a cor da fonte (fundo azul e fonte branca). system("color 4F"); desenharBorda(); gotoxy(25,1); printf("M C S I N F O R M A T I C A"); // LISTA ***************************************************************** gotoxy(25,5); printf("CADASTRO"); gotoxy(25,8); printf("[1] - INSERIR PRODUTO"); gotoxy(25,10); printf("[2] - EXIBIR PRODUTOS"); gotoxy(25,12); printf("[3] - BUSCAR PRODUTOS"); gotoxy(25,14); printf("[4] - EXCLUIR PRODUTOS"); gotoxy(25,16); printf("[5] - LIBERAR LISTA"); gotoxy(25,18); // SAIR ***************************************************************** gotoxy(25,18); printf("[0] - SAIR"); gotoxy(25,20); printf("Digite a Operacao: "); scanf("%d",&op); switch(op){ int numero; // LISTA *************************************************************** case 1 : // Inseri um elemento na Lista listaRegistro = inserirDados(listaRegistro); break; case 2 : // Exibir dados exibirDados(listaRegistro); break; case 4: gotoxy(25,26); printf("Digite o codigo para retirar\n"); scanf("%d",&numero); excluir(listaRegistro, numero); break; //Buscar em lista case 3 : gotoxy(25,26); // ListaBusca(listaRegistro); break; case 5 : // LIBERAR LiberarLista(listaRegistro); break; // SAIR ************************************************************** // Finaliza o programa case 0 : exit(0); break; default: printf("Opção Errada"); } } // Inseri Dados Lista* inserirDados(Lista *lista) { int cod; char nome[30]; int qtd; float valor; // Alocar memória para o novo registro da lista //Lista *novo = (Lista*) malloc(sizeof(Lista)); Lista* novo = (Lista*) malloc(sizeof(Lista)); novo->prox = lista; system("cls"); // Limpa a tela. gotoxy(30,1); printf("Inserir Dados"); gotoxy(5,4); printf("Entre com o codigo do Produto: "); scanf("%d",&cod); gotoxy(5,5); printf("Entre com o nome do Produto: "); getchar(); gets(nome); gotoxy(5,6); printf("Entre com a Quantidade: "); scanf("%d",&qtd); gotoxy(5,7); printf("Entre com o Valor: "); scanf("%f",&valor); // Atribuir os valores lido // para o novo elemento da lista novo->cod = cod; sprintf(novo->nome, " %s", nome); novo->qtd = qtd; novo->valor = valor; // Associar o novo elemento a lista //novo->prox = lista; gotoxy(30,20); printf("Pressione uma tecla para continuar..."); getchar(); getchar(); return novo; } // Exibir Dados void exibirDados(Lista *lista) { int i=0; // Variável (ponteiro) auxiliar para percorrer a lista Lista* p; system("cls"); // Limpa a tela. gotoxy(30,1); printf("Exibir Dados"); gotoxy(5,5); printf("Codigo"); gotoxy(20,5); printf("Produto"); gotoxy(40,5); printf("Quantidade"); gotoxy(60,5); printf("Valor"); // Imprimir todos os elementos da lista for (p = lista; p != NULL; p = p->prox) { gotoxy(5,i+7); printf("%d",p->cod); gotoxy(20,i+7); printf("%s",p->nome); gotoxy(40,i+7); printf("%d",p->qtd); gotoxy(60,i+7); printf("%2.2f",p->valor); i++; } gotoxy(30,22); printf("Pressione uma tecla para continuar..."); getchar(); getchar(); } //################################################################################################ /* função vazia: retorna 1 se vazia ou 0 se não vazia */ int vazia (Lista* l) { if (l == NULL) return 1; else return 0; } void excluir (Lista* l, int v) { Lista* ant = NULL; /* ponteiro para elemento anterior */ Lista* p = l; /* ponteiro para percorrer a lista*/ if (vazia(l) == 1 ) { printf("Operacao não pode ser realizada! Lista esta vazia."); return; } /* procura elemento na lista, guardando anterior */ while (p != NULL && p->cod != v) { ant = p; p = p->prox; ] } /* verifica se achou elemento */ if (p == NULL) { printf("O elemento [ %d ] não consta na Lista.\n",v); return; } /* retira elemento */ if (ant == NULL) { /* retira elemento do inicio */ l = p->prox; } else { /* retira elemento do meio da lista */ ant->prox = p->prox; } // Liberar da memoria free(p); } /* Função Buscar */ /* void ListaBuscar(Lista *l , int v) { system("cls"); printf("Digite o valor a ser buscado"); scanf("d%", &v); Lista*p; for(p=l;p!=NULL; p=p->prox); { //info if(p->cod == v){ return p; } else { return NULL; } */ void LiberarLista(Lista* lista) { int t; Lista* p = lista; while(p !=NULL ){ Lista* t = p ->prox; free(p); p=t; } }
×
×
  • Criar Novo...