Ir ao conteúdo
  • Cadastre-se

Jouy Durão

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Tudo que Jouy Durão postou

  1. Resolvido! Consegui usando o fget e puts! e para organizar em ordem alfabética utilizei o strcmp. está funcionando 100% Deu um trabalho lascado, mas valeu a pena! Obrigado por me dar uma ajuda! Se alguem precisar ver a minha solução, só avisar!
  2. Beleza, a dúvida 2) e 3) eu entendi, pesquisei e já sei como fazer! Agora, ainda to com a dúvida 1), como eu defino essa variavel? seria algo tipo char var[20]? e para enviar isso para a lista, seria colocaDado(var,l,0); //onde 0 é a posição, l é a lista l, e var seria o nome da pessoa ?
  3. Oi! Sou novo no fórum, e já venho pedindo ajuda =P Mas é o seguinte, tenho que entregar esse exercício até quinta, e por me enrolar estudando cálculo, GA e física, acabei deixando pra última hora esse exercício! D: Esse é o cabeçalho do exercício: Escrever um programa para gerenciar passagens reservadas: O programa deve mostrar um menu com 4 opções, 1 - Reservar Passagem 2 - Cancelar Passagem 3 - Verificar Passagem Reservada 4 - Mostrar Passageiros A informação deve ser armazenada em uma lista, com nomes em ordem alfabética. Cada passageiro pode reservar apenas uma vez. O programa deve ser em C. Deve ser feito utilizando Listas Simplesmente Encadeadas. Estou utilizando o CodeBlocks. Como base, tenho o seguinte código: #include <stdio.h> #include <stdlib.h> typedef struct elemento{ int dado; struct elemento *proximo; } Elemento; typedef struct listasimples{ Elemento *inicio; int tamanho; } ListaSimples; ListaSimples *inicializaLista() { ListaSimples *l; l = (ListaSimples *)malloc(sizeof(ListaSimples)); l->inicio = NULL; l->tamanho = 0; return l; } void colocaDado(int d, ListaSimples *l, int pos){ Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *novoDado; novoDado = (Elemento *)malloc(sizeof(Elemento)); novoDado->dado = d; int i = 0; while(andarilho != NULL && i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } if (anterior == NULL){ novoDado->proximo = l->inicio; l->inicio = novoDado; } else{ anterior->proximo = novoDado; novoDado->proximo = andarilho; } l->tamanho++; } int retiraDado(ListaSimples *l,int pos) { if (l->inicio == NULL){ printf("A lista esta vazia, não há o que retirar! \n"); return 0; } else { Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *retirado; retirado = (Elemento *)malloc(sizeof(Elemento)); int i = 0; while(i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } retirado = andarilho; int saida = retirado->dado; if (anterior == NULL) { l->inicio = andarilho->proximo; } else{ anterior->proximo = andarilho->proximo; } free(retirado); return saida; } } void imprimeListaSimples(ListaSimples *l) { Elemento *iterador; iterador = l->inicio; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { printf("%i",iterador->dado); iterador = iterador->proximo; } } printf("\n"); } void limpaListaSimples(ListaSimples *l) { Elemento *iterador, *anterior; iterador = l->inicio; anterior = NULL; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { anterior = iterador; iterador = iterador->proximo; free(anterior); } } l->inicio = NULL; } int main(void) { ListaSimples *l = inicializaLista(); colocaDado(1,l,0); imprimeListaSimples(l); colocaDado(2,l,1); imprimeListaSimples(l); colocaDado(3,l,1); imprimeListaSimples(l); colocaDado(4,l,2); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); colocaDado(5,l,0); imprimeListaSimples(l); colocaDado(6,l,0); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); retiraDado(l,2); imprimeListaSimples(l); retiraDado(l,1); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); retiraDado(l,0); return 0; } e meu código está atualmente assim: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> typedef struct elemento{ char nome[20]; int dado; struct elemento *proximo; } Elemento; typedef struct listasimples{ Elemento *inicio; int tamanho; } ListaSimples; ListaSimples *inicializaLista() { ListaSimples *l; l = (ListaSimples *)malloc(sizeof(ListaSimples)); l->inicio = NULL; l->tamanho = 0; return l; } void colocaDado(char d, ListaSimples *l, int pos){ Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *novoDado; novoDado = (Elemento *)malloc(sizeof(Elemento)); novoDado->nome[20] = d; int i = 0; while(andarilho != NULL && i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } if (anterior == NULL){ novoDado->proximo = l->inicio; l->inicio = novoDado; } else{ anterior->proximo = novoDado; novoDado->proximo = andarilho; } l->tamanho++; } int retiraDado(ListaSimples *l,int pos) { if (l->inicio == NULL){ printf("A lista esta vazia, não há o que retirar! \n"); return 0; } else { Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *retirado; retirado = (Elemento *)malloc(sizeof(Elemento)); int i = 0; while(i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } retirado = andarilho; int saida = retirado->dado; if (anterior == NULL) { l->inicio = andarilho->proximo; } else{ anterior->proximo = andarilho->proximo; } free(retirado); return saida; } } void imprimeListaSimples(ListaSimples *l) { Elemento *iterador; iterador = l->inicio; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { //printf("%s",iterador->nome); puts(iterador->nome); iterador = iterador->proximo; } } printf("\n"); } void limpaListaSimples(ListaSimples *l) { Elemento *iterador, *anterior; iterador = l->inicio; anterior = NULL; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { anterior = iterador; iterador = iterador->proximo; free(anterior); } } l->inicio = NULL; } int main(void) { ListaSimples *l = inicializaLista(); int escolha=0; char name[20]; printf("Reservator v0.1\n"); printf("1 - Reservar Passagem\n2 - Cancelar Passagem\n3 - Verificar Passagem Reservada\n4 - Mostrar Passageiros\n"); while(escolha<1 || escolha>4) { scanf("%d",&escolha); } gets(name); colocaDado(name,l,0); imprimeListaSimples(l); colocaDado("ass",l,1); imprimeListaSimples(l); retiraDado(l,0); return 0; } Eu empaquei, e minhas dúvidas são as seguintes: 1) Como eu faço para enviar um nome, com espaços, para a lista??? 2) Como eu faço para a lista se organizar em ordem alfabética? (pensei em usar o strcmp, mas n sei como fazer isso junto da lista), 3) Como eu imprimo esses nomes da lista? Por favor, me ajudem To desesperado pois tenho prova de fisica na quinta, mesmo dia da entrega desse exercício que vale nota..

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...