Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raphael1001fly

Exibição e Armazenamento de Dados em uma Lista Encadeada C

Recommended Posts

Boa Noite amigos, estou apanhando muito pra fazer esse trabalho da faculdade. As vezes da vontade de desistir mas lembrei que tem pessoas que estão dispostas a ajudar/aprender então vamos ao que interessa.



Montei um sistema de uma empresa de aviação, deixei definida 3 structs: Avião/Voo/Passagem.



Nos testes anteriores que fiz a inserção estava funcionando corretamente, pois quando eu usava a função de imprimir os dados os dados saiam corretamente na tela. smile.png



Mas eu quiz deixar o programa com um menu para facilitar o usuário, usando o famoso CASE, eu insiro os dados e o programa não exibe nada na tela.



Descobri que quando eu insiro todos os dados na lista ela ainda continua vazia. sad.png



Eu acho que o conceito que utilizei esta correto. Mas o programa da erro na hora de exibir os dados, e quando excluo


diz que não tem nada armazenado.



Vou postas o código aqui porque eu não sei mais o que fazer e meu professor não vai me ensinar ohmy.png



Por favor me ajudem.


Obrigado.



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef struct estrutura1 {
char modelo [20];
char fabricante [20];
int passageiros;
int comprimento;
int altura;
int velocidade;
int altitude;
char motor [20];

struct estrutura1 *prox_av;

}aviao;


typedef struct estrutura2 {
int n_voo;
char data_voo[15];
char hora_voo[15];
char aero_saida[20];
char aero_chegada[20];
char rota_voo[20];
char tempo_voo[15];
int passageiro_bordo;

struct estrutura2 *prox_voo;

}voo;

typedef struct estrutura3 {
int n_passagem;
int n_voo_pass;
char data_embarque[10];
char hora_embarque[5];
char portao_embarque[5];

struct estrutura3 *prox_pass;

}passagem;

void inserir_aviao(){
aviao * ini_av_ponto;
aviao * prox_av_ponto;
int resp_aviao;
ini_av_ponto = (aviao *)malloc(sizeof(aviao));
prox_av_ponto = ini_av_ponto;

while(1) {
printf("\n");
printf("Digite o Modelo: ");
scanf("%s", &prox_av_ponto->modelo);
printf("Digite o Fabricante do Aviao: ");
scanf("%s", &prox_av_ponto->fabricante);
printf("Digite o Numero de Passageiros: ");
scanf("%d", &prox_av_ponto->passageiros);
printf("Digite o Comprimento do Aviao em Metros: ");
scanf("%d", &prox_av_ponto->comprimento);
printf("Digite a Altura do Aviao em Metros: ");
scanf("%d", &prox_av_ponto->altura);
printf("Digite a Velocidade Media do Aviao em KM: ");
scanf("%d", &prox_av_ponto->velocidade);
printf("Digite a Altitude Suportada do Aviao em Metros: ");
scanf("%d", &prox_av_ponto->altitude);
printf("Digite o Tipo de Motor do Aviao: ");
scanf("%s", &prox_av_ponto->motor);
printf("Deseja continua? <1> SIM <outro valor> NAO: ");
scanf("%d", &resp_aviao);
if(resp_aviao == 1){
prox_av_ponto->prox_av = (aviao *)malloc(sizeof(aviao));
prox_av_ponto = prox_av_ponto->prox_av;
}
else
break;
}

prox_av_ponto->prox_av = NULL;
printf("\n");

}
void imprimir_aviao(){
aviao * ini_av_ponto;
aviao * prox_av_ponto;
prox_av_ponto = ini_av_ponto;
while(prox_av_ponto != NULL){
printf("Modelo do Aviao: %s\n", prox_av_ponto->modelo);
printf("Fabricante: %s\n", prox_av_ponto->fabricante);
printf("Quantidade Suportada de Passageiros: %d\n", prox_av_ponto->passageiros);
printf("Comprimento do Aviao em Metros: %d\n", prox_av_ponto->comprimento);
printf("Altura do Aviao em Metros: %d\n", prox_av_ponto->altura);
printf("Velocidade em KM: %d\n", prox_av_ponto->velocidade);
printf("Altitude Suportada do Aviao em Metros: %d\n", prox_av_ponto->altitude);
printf("Tipo de Motor: %s\n", prox_av_ponto->motor);
prox_av_ponto = prox_av_ponto->prox_av;
}
}

void inserir_voo(){
voo * ini_voo_ponto;
voo * prox_voo_ponto;
int resp_voo;
ini_voo_ponto = (voo *)malloc(sizeof(voo));
prox_voo_ponto = ini_voo_ponto;

while(1) {
printf("\n");
printf("Digite o Numero do Voo: ");
scanf("%d", &prox_voo_ponto->n_voo);
printf("Digite a Data do Voo. EX: 01/01/2000 ===>: ");
scanf("%s", &prox_voo_ponto->data_voo);
printf("Digite o Horario do Voo. EX: 00:00 ===> : ");
scanf("%s", &prox_voo_ponto->hora_voo);
printf("Digite o Aeroporto de Saida: ");
scanf("%s", &prox_voo_ponto->aero_saida);
printf("Digite o Aeroporto de Chegada: ");
scanf("%s", &prox_voo_ponto->aero_chegada);
printf("Digite a Rota: ");
scanf("%s", &prox_voo_ponto->rota_voo);
printf("Digite o Tempo Estimado de Voo em Horas EX: 01:00 ===> : ");
scanf("%s", &prox_voo_ponto->tempo_voo);
printf("Digite a Quantidade de Passageiros a Bordo: ");
scanf("%d", &prox_voo_ponto->passageiro_bordo);
printf("Deseja continua? <1> SIM <outro valor> NAO: ");
scanf("%d", &resp_voo);

if(resp_voo == 1){
prox_voo_ponto->prox_voo = (voo *)malloc(sizeof(voo));
prox_voo_ponto = prox_voo_ponto->prox_voo;
}
else
break;
}

prox_voo_ponto->prox_voo = NULL;
printf("\n");
}

void imprimir_voo(){
voo * ini_voo_ponto;
voo * prox_voo_ponto;
prox_voo_ponto = ini_voo_ponto;
while(prox_voo_ponto != NULL){
printf("Numero do voo: %d\n", prox_voo_ponto->n_voo);
printf("Data do Voo: %s\n", prox_voo_ponto->data_voo);
printf("Horario do Voo: %s\n", prox_voo_ponto->hora_voo);
printf("Aeroporto de Saida: %s\n", prox_voo_ponto->aero_saida);
printf("Aeroporto de Chegada: %s\n", prox_voo_ponto->aero_chegada);
printf("Rota: %s\n", prox_voo_ponto->rota_voo);
printf("Tempo Estimado de Voo em Horas: %s\n", prox_voo_ponto->tempo_voo);
printf("Quantidade de Passageiros a Bordo : %d\n", prox_voo_ponto->passageiro_bordo);
prox_voo_ponto = prox_voo_ponto->prox_voo;
}
}

int pesquisar_voo(int x){
voo * ini_voo_ponto;
voo * prox_voo_ponto;
prox_voo_ponto = ini_voo_ponto;
int flag_voo = 0;

while(prox_voo_ponto != NULL){

if(prox_voo_ponto->n_voo==x){

printf("VOO ENCONTRADO: %d\n", x);
printf("Numero do voo: %d\n", prox_voo_ponto->n_voo);
printf("Data do Voo: %s\n", prox_voo_ponto->data_voo);
printf("Horario do Voo: %s\n", prox_voo_ponto->hora_voo);
printf("Aeroporto de Saida: %s\n", prox_voo_ponto->aero_saida);
printf("Aeroporto de Chegada: %s\n", prox_voo_ponto->aero_chegada);
printf("Rota: %s\n", prox_voo_ponto->rota_voo);
printf("Tempo Estimado de Voo em Horas: %s\n", prox_voo_ponto->tempo_voo);
printf("Quantidade de Passageiros a Bordo : %d\n", prox_voo_ponto->passageiro_bordo);
flag_voo = 1;
prox_voo_ponto = NULL;
}

else{
prox_voo_ponto = prox_voo_ponto->prox_voo;
}

if(flag_voo == 0){
printf("VOO NAO ENCONTRADO");
}
}
}

void inserir_passagem(){

passagem * ini_pass_ponto;
passagem * prox_pass_ponto;
int resp_pass;
ini_pass_ponto = (passagem *)malloc(sizeof(passagem));
prox_pass_ponto = ini_pass_ponto;

while(1) {
printf("\n");
printf("Digite o Numero da Passagem: ");
scanf("%d", &prox_pass_ponto->n_passagem);
printf("Digite o Numero do Voo: ");
scanf("%d", &prox_pass_ponto->n_voo_pass);
printf("Digite a Data de Embarque : ");
scanf("%s", &prox_pass_ponto->data_embarque);
printf("Digite a Hora de Embarque: ");
scanf("%s", &prox_pass_ponto->hora_embarque);
printf("Digite o Portao de Embarque: ");
scanf("%s", &prox_pass_ponto->portao_embarque);

printf("Deseja continua? <1> SIM <outro valor> NAO: ");
scanf("%d", &resp_pass);

if(resp_pass == 1){
prox_pass_ponto->prox_pass = (passagem *)malloc(sizeof(passagem));
prox_pass_ponto = prox_pass_ponto->prox_pass;
}
else
break;
}

prox_pass_ponto->prox_pass = NULL;
printf("\n");
}

void imprimir_passagem(){
passagem * ini_pass_ponto;
passagem * prox_pass_ponto;
prox_pass_ponto = ini_pass_ponto;

while(prox_pass_ponto != NULL){
printf("Numero da Passagem: %d\n", prox_pass_ponto->n_passagem);
printf("Numero do Voo: %d\n", prox_pass_ponto->n_voo_pass);
printf("Data de Embarque: %s\n", prox_pass_ponto->data_embarque);
printf("Hora de Embarque: %s\n", prox_pass_ponto->hora_embarque);
printf("Potao de Embarque: %s\n", prox_pass_ponto->portao_embarque);
prox_pass_ponto = prox_pass_ponto->prox_pass;
}
}

int pesquisar_passagem(int y){
passagem * ini_pass_ponto;
passagem * prox_pass_ponto;
prox_pass_ponto = ini_pass_ponto;
int flag_passagem = 0;

while(prox_pass_ponto != NULL){

if(prox_pass_ponto->n_passagem==y){

printf("PASSAGEM ENCONTRADA: %d\n", y);
printf("Numero da Passagem: %d\n", prox_pass_ponto->n_passagem);
printf("Numero do Voo: %d\n", prox_pass_ponto->n_voo_pass);
printf("Data de Embarque: %s\n", prox_pass_ponto->data_embarque);
printf("Hora de Embarque: %s\n", prox_pass_ponto->hora_embarque);
printf("Potao de Embarque: %s\n", prox_pass_ponto->portao_embarque);
flag_passagem = 1;
prox_pass_ponto = NULL;
}

else{
prox_pass_ponto = prox_pass_ponto->prox_pass;
}

if(flag_passagem == 0){
printf("VOO NAO ENCONTRADO");
}
}
}

void excluir_voo(){
int z,count = 0;
voo * ini_voo_ponto;
voo * atual_voo_ponto;
voo * anterior_voo_ponto;

printf("Digite o voo a ser excluido");
scanf("%d",&z);

if(ini_voo_ponto->prox_voo==NULL){
printf("Nao existe voos cadastrados");
}

else{

anterior_voo_ponto=ini_voo_ponto;
for(atual_voo_ponto=ini_voo_ponto->prox_voo; atual_voo_ponto!=NULL; atual_voo_ponto=atual_voo_ponto->prox_voo){

if(z==atual_voo_ponto->n_voo){
anterior_voo_ponto->prox_voo = atual_voo_ponto->prox_voo;
free(atual_voo_ponto);
count=1;
printf("Dados Deletados com Sucesso: ");
}

if(count==1){
break;
anterior_voo_ponto=atual_voo_ponto;
}

if(atual_voo_ponto->prox_voo==NULL && count==0){
printf("\nRegistro para exclusao nao encontrado!\n");
}
}




}

}


void menu(){

int pesq_voo,pesq_passagem,operacao;

printf("Bem Vindo ao Sistema de VOEBEM 1.0\n");
printf("\nDigite uma Opcao: \n\n01 - Inserir Voo\n02 - Buscar Voo\n03 - Exibir Voo\n04 - Deletar Voo\n05 - Inserir Passagem\n06 - Buscar Passagem\n07 - Exibir Passagem\n08 - Inserir Aviao\n09 - Exibir Aviao\n10 - Sair\n\n");
scanf("%d",&operacao);
system("cls");
switch(operacao){
while (operacao!=11){

case 1:
inserir_voo();
printf("Dados Inseridos com Sucesso");
getch();
system("cls");
menu();

case 2:
printf("Digite o Numero do Voo\n");
scanf("%d", &pesq_voo);
pesquisar_voo(pesq_voo);
getch();
system("cls");
menu();
case 3:
imprimir_voo();
getch();
system("cls");
menu();
case 4:
excluir_voo();
getch();
system("cls");
menu();
case 5:
inserir_passagem();
printf("Dados Inseridos com Sucesso");
getch();
system("cls");
menu();
case 6:
printf("Digite o Numero da Passagem\n");
scanf("%d", &pesq_passagem);
pesquisar_voo(pesq_passagem);
getch();
system("cls");
menu();
case 7:
imprimir_passagem();
getch();
system("cls");
menu();
case 8:
inserir_aviao();
printf("Dados Inseridos com Sucesso");
getch();
menu();
case 9:
imprimir_aviao();
getch();
menu();
case 10:
break;
system("PAUSE");

}
}
}

int main(int argc, char *argv[]) {

menu();

system ("pause");
return 0;
}








Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda.

O pessoal de outro fórum já me ajudou.

 

Problema resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.