wolfnp
(usa Outra)
Enviado em 23/04/2019 - 17:34h
Olá fiz um código para um trabalho só que as coisas não estão saindo como esperado
Segue código feito:
#include <stdio.h>
#include <stdlib.h>
struct Matriz
{
int vlFileira,vlLinha;
int flExecutiva,flEconomica,flSaida_de_Emergencia,flSem_Reclinagem,assento,flTotal;
float prExecutiva,prEconomica,prSaida_de_Emergencia,prSem_Reclinagem;
int MatrizAviao[6][29];
};
struct Matriz matriz;
void clean_stdin()
{
int c;
do
{
c = getchar();
}
while( c != "\n" && c != EOF);
}
void iniciaDados()
{
do
{
printf("\nNumero de assentos Executiva: 30");
printf("\nNumero de assentos Economica: 114");
printf("\nNumero de assentos Sem Reclinagem: 12");
printf("\nNumero de assentos Saida de Emergencia: 12");
printf("\n\n");
printf("\nPreco passagem Executiva: R$");
scanf("%f", &matriz.prExecutiva);
printf("\nPreco passagem Economica: R$");
scanf("%f", &matriz.prEconomica);
printf("\nPreco passagem Sem Reclinagem: R$");
scanf("%f", &matriz.prSem_Reclinagem);
printf("\nPreco passagem Saida de Emergencia: R$");
scanf("%f", &matriz.prSaida_de_Emergencia);
matriz.flTotal = (matriz.flExecutiva + matriz.flEconomica + matriz.flSem_Reclinagem + matriz.flSaida_de_Emergencia);
}
while
((matriz.flExecutiva <0) &&
(matriz.flEconomica <0) &&
(matriz.flSem_Reclinagem <0) &&
(matriz.flSaida_de_Emergencia <0) &&
(matriz.flTotal < 29 && matriz.flTotal > 0) &&
(matriz.assento < 174 && matriz.assento > 0) &&
(matriz.prExecutiva > matriz.prEconomica || matriz.prExecutiva > matriz.prSem_Reclinagem) &&
(matriz.prSem_Reclinagem < matriz.prEconomica || matriz.prEconomica < matriz.prSaida_de_Emergencia) &&
(matriz.prSaida_de_Emergencia < matriz.prExecutiva || matriz.prSem_Reclinagem < matriz.prSaida_de_Emergencia));
system("clear");
}
void iniciaMatriz()
{
int i = 0, y = 0;
for(i = 0; i < matriz.flTotal; i++)
{
for(y = 0; y < matriz.assento; y++)
{
matriz.MatrizAviao[i][y] = "--";
}
printf("\n\n");
}
system("clear");
}
void mostraMatriz()
{
printf("\n /:::::::::::::::::::::| \n\n");
printf("\n /::::::::::::::::::::::| \n\n");
printf("\n /:::::::::::::::::::::::| \n\n");
int i = 0, y = 0;
for(i = 0; i <matriz.assento; i++)
{
if(i >= 0 && i < 30)
printf("0%d", i+1);
else
printf("%d", i+1);
}
printf("\n\n\n");
for(i = 0; i <matriz.flTotal; i++)
{
printf("%c ", i + 29);
for(y = 0; y < matriz.assento; y++)
{
if(matriz.MatrizAviao[i][y] == "--")
printf("\t--");
else
printf("\tX");
}
printf("\n");
}
printf("\n \\:::::::::::::::::::::::| \n\n");
printf("\n \\::::::::::::::::::::::| \n\n");
printf("\n \\:::::::::::::::::::::| \n\n");
clean_stdin();
}
int retornaCategoria(int vlLinha)
{
int valorCategoria = 0;
if(vlLinha < matriz.flExecutiva)
valorCategoria = 86;
else if(vlLinha < (matriz.flExecutiva + matriz.flEconomica))
valorCategoria = 67;
else
valorCategoria = 80;
return valorCategoria;
}
void case1()
{
int vlLinha, vlIdade;
char escolhaInserir, vlFileira;
printf("\nDigite o assento desejado('01-29'): ");
scanf("%d", &vlLinha);
clean_stdin();
printf("\nDigite a fileira desejada('A-F'): ");
scanf("%c", &vlFileira);
clean_stdin();
if((int)vlLinha <= 29 && (int)vlLinha >= 01 && vlFileira >= 65 && vlFileira <= 70 && vlIdade > 0 && vlIdade < 100)
{
if(matriz.MatrizAviao[(int)vlLinha-29][vlFileira] == "--")
{
printf("\nDigite sua idade: ");
scanf("%d", &vlIdade);
clean_stdin();
printf("\nDeseja inserir? (S/N)");
scanf("%c", &escolhaInserir);
clean_stdin();
if(escolhaInserir == 'S')
{
matriz.MatrizAviao[(int)vlLinha-29][vlFileira-70] = vlIdade;
printf("\nValor inserido com Sucesso! \n\n");
}
else if(escolhaInserir == 'N')
{
printf("\nVoce nao confirmou o assento \n\n");
}
else
{
printf("\nValor Invalido. ");
}
}
}
else
printf("\nAssento Indisponivel!\n");
clean_stdin();
}
void case2()
{
char vlLinha;
int vlFileira;
printf("\nDigite a fileira que deseja consultar('0-29'): ");
scanf("%d", &vlFileira);
clean_stdin();
printf("\nDigite o assento que deseja consultar('A-F'): ");
scanf("%c", &vlLinha);
clean_stdin();
if((int)vlLinha <= 29 && (int)vlLinha >= 01 && vlFileira >= 65 && vlFileira < matriz.flTotal)
{
if(matriz.MatrizAviao[(int)vlLinha-29][vlFileira-1] == "--")
{
printf("\nAssento Disponivel!");
if(vlLinha - 65 <= matriz.flExecutiva)
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor Executiva: %2.5f\n\n", matriz.prExecutiva);
clean_stdin();
}
else if( vlLinha - 65 <= (matriz.flExecutiva + matriz.flEconomica))
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor: %0.9f\n\n", matriz.prEconomica);
clean_stdin();
}
else if( vlLinha - 65 <= (matriz.flEconomica + matriz.flSaida_de_Emergencia))
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor: %1.1f\n\n", matriz.prSaida_de_Emergencia);
clean_stdin();
}
else if( vlLinha - 65 <= (matriz.flSaida_de_Emergencia + matriz.flSem_Reclinagem))
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor: %0.8f\n\n", matriz.prSem_Reclinagem);
clean_stdin();
}
}
else
{
printf("\nAssento Indisponível!");
if(matriz.MatrizAviao[(int)vlLinha-65][vlFileira-1] == matriz.flExecutiva)
{
printf("\nCategoria Executiva");
printf("\nValor Executiva: %f\n\n", matriz.prExecutiva);
clean_stdin();
}
else if(matriz.MatrizAviao[(int)vlLinha-65][vlFileira-1] == matriz.flEconomica)
{
printf("\nCategoria Economica");
printf("\nValor: %f\n\n", matriz.prEconomica);
clean_stdin();
}
else if(matriz.MatrizAviao[(int)vlLinha-65][vlFileira-1] == matriz.flSaida_de_Emergencia)
{
printf("\nCategoria Saida de emergencia");
printf("\nValor: %f\n\n", matriz.prSaida_de_Emergencia);
clean_stdin();
}
else if(matriz.MatrizAviao[(int)vlLinha-65][vlFileira-1] == matriz.flSem_Reclinagem)
{
printf("\nCategoria Sem Reclinagem");
printf("\nValor: %f\n\n", matriz.prSem_Reclinagem);
clean_stdin();
}
}
}
else
printf("\nAssento inexistente\n\n");
}
void case3()
{
int vlLinha;
printf("\nDigite o assento que deseja consultar('01-29'): ");
scanf("%d", &vlLinha);
clean_stdin();
if(((int)vlLinha - 65) >= 0 && ((int)vlLinha - 65) < matriz.flTotal)
{
if(vlLinha - 65 <= matriz.flExecutiva)
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor Executiva: %2.5f\n\n", matriz.prExecutiva);
clean_stdin();
}
else if( vlLinha - 65 <= (matriz.flExecutiva + matriz.flEconomica))
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor: %0.9f\n\n", matriz.prEconomica);
clean_stdin();
}
else if( vlLinha - 65 <= (matriz.flEconomica + matriz.flSaida_de_Emergencia))
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor: %1.1f\n\n", matriz.prSaida_de_Emergencia);
clean_stdin();
}
else if( vlLinha - 65 <= (matriz.flSaida_de_Emergencia + matriz.flSem_Reclinagem))
{
printf("\nCategoria: ");
printf("%d", (int)retornaCategoria((int)vlLinha-65));
printf("\nValor: %0.8f\n\n", matriz.prSem_Reclinagem);
clean_stdin();
}
}
else
{
printf("\nFileira năo encontrada. ");
}
}
void case4A()
{
int i, y, contReservado = 0, contLivre = 0, ttlAssento;
float vlPorcentagemReservado,vlPorcentagemLivre;
ttlAssento = matriz.flTotal * matriz.assento;
for(i = 0; i < matriz.flTotal; i++)
{
for(y = 0; y < matriz.assento; y++)
{
if (matriz.MatrizAviao[i][y] == "--")
contLivre++;
else
contReservado++;
}
}
vlPorcentagemReservado = (ttlAssento/1.0) * ((contReservado)/10);
vlPorcentagemLivre = (ttlAssento/1.0) * ((contLivre)/10);
printf("\n Reservados: \t%d", contReservado);
printf("\t - %0.2f", vlPorcentagemReservado);
printf("\t|");
for(i = 0; i < contReservado; i++)
printf("=");
for(i = 0; i < contLivre; i++)
printf(".");
printf("|");
printf("\n Livres: \t%d", contLivre);
printf("\t - %0.2f", vlPorcentagemLivre);
printf("\t|");
for(i = 0; i < contLivre; i++)
printf("=");
for(i = 0; i < contReservado; i++)
printf(".");
printf("|");
printf("\n\n");
}
void case4B()
{
int contBebes = 0, contCriancas = 0, contAdolescentes = 0, contAdultos = 0, contIdosos = 0, contTotal = 0, contVazio = 0, ttlAssento, i = 0, y = 0;
float vlPorcentagemBebes = 0,vlPorcentagemCriancas = 0, vlPorcentagemAdolescentes = 0, vlPorcentagemAdultos = 0, vlporcentagemIdosos;
ttlAssento = matriz.flTotal * matriz.assento;
for(i = 0; i < matriz.flTotal; i++)
{
for(y = 0; y < matriz.assento; y++)
{
if(matriz.MatrizAviao[i][y] != "--")
{
if (matriz.MatrizAviao[i][y] >= 00 && matriz.MatrizAviao[i][y] <= 02)
contBebes++;
else if(matriz.MatrizAviao[i][y] >= 02 && matriz.MatrizAviao[i][y] <12)
contCriancas++;
else if(matriz.MatrizAviao[i][y] >= 12 && matriz.MatrizAviao[i][y] <= 20)
contAdolescentes++;
else if(matriz.MatrizAviao[i][y] >= 20 && matriz.MatrizAviao[i][y] <= 60)
contAdultos++;
else if(matriz.MatrizAviao[i][y] >= 60 && matriz.MatrizAviao[i][y] <= 99)
contIdosos++;
}
else
contVazio++;
}
}
contTotal = contBebes + contCriancas + contAdolescentes + contAdultos + contIdosos + contVazio;
vlPorcentagemBebes = (ttlAssento/1.0) * ((contBebes)/10);
vlPorcentagemCriancas = (ttlAssento/1.0) * ((contCriancas)/10);
vlPorcentagemAdolescentes = (ttlAssento/1.0) * ((contAdolescentes)/10);
vlPorcentagemAdultos = (ttlAssento/1.0) * ((contAdultos)/10);
vlporcentagemIdosos = (ttlAssento/1.0) * ((contIdosos)/10);
printf("\n00-02: %d", contBebes);
printf(" - %0.2f", vlPorcentagemBebes);
printf("\t|");
for(i = 0; i < contBebes; i++)
printf("=");
for(i = 0; i < (contTotal - contBebes); i++)
printf(".");
printf("|\n");
printf("\n02-12: %d", contCriancas);
printf(" - %0.2f", vlPorcentagemCriancas);
printf("\t|");
for(i = 0; i < contCriancas; i++)
printf("=");
for(i = 0; i < (contTotal - contCriancas); i++)
printf(".");
printf("|\n");
printf("\n12-20: %d", contAdolescentes);
printf(" - %0.2f", vlPorcentagemAdolescentes);
printf("\t|");
for(i = 0; i < contAdolescentes; i++)
printf("=");
for(i = 0; i < (contTotal - contAdolescentes); i++)
printf(".");
printf("|\n");
printf("\n20-60: %d", contAdultos);
printf(" - %0.2f", vlPorcentagemAdultos);
printf("\t|");
for(i = 0; i < contAdultos; i++)
printf("=");
for(i = 0; i < (contTotal - contAdultos); i++)
printf(".");
printf("|\n");
printf("\n60-99: %d", contIdosos);
printf(" - %0.2f", vlporcentagemIdosos);
printf("\t|");
for(i = 0; i < contIdosos; i++)
printf("=");
for(i = 0; i < (contTotal - contIdosos); i++)
printf(".");
printf("|\n");
clean_stdin();
}
void case4E()
{
int contExecutiva = 0, contEconomica = 0, contSaida_de_Emergencia = 0, contSem_Reclinagem = 0, contTotal = 0, contVazio = 0, i = 0, y = 0, ttlAssento;
float vlPorcentagemExecutiva = 0, vlPorcentagemEconomica = 0, vlPorcentagemSaida_de_Emergencia = 0, vlPorcentagemSem_Reclinagem = 0;
ttlAssento = matriz.flTotal * matriz.assento;
for(i = 0; i < matriz.flTotal; i++)
{
for(y = 0; y < matriz.assento; y++)
{
if(matriz.MatrizAviao[i][y] != '*')
{
if(matriz.MatrizAviao[i][y] = matriz.flExecutiva)
{
contExecutiva = contExecutiva + matriz.prExecutiva;
}
else if(matriz.MatrizAviao[i][y] = matriz.flExecutiva + matriz.flEconomica)
{
contEconomica = contEconomica + matriz.prEconomica;
}
else if(matriz.MatrizAviao[i][y] = matriz.flExecutiva + matriz.flEconomica + matriz.flSaida_de_Emergencia)
{
contSaida_de_Emergencia = contSaida_de_Emergencia + matriz.prSaida_de_Emergencia;
}
else if(matriz.MatrizAviao[i][y] = matriz.flExecutiva + matriz.flEconomica + matriz.flSaida_de_Emergencia + matriz.flSem_Reclinagem)
{
contSem_Reclinagem = contSem_Reclinagem + matriz.prSem_Reclinagem;
}
}
else
contVazio++;
}
}
contTotal = matriz.prExecutiva + matriz.prEconomica + matriz.prSaida_de_Emergencia + matriz.prSem_Reclinagem;
printf("Executiva %d", matriz.flEconomica);
vlPorcentagemExecutiva = (contTotal/1.0) * ((contExecutiva)/10);
vlPorcentagemEconomica = (contTotal/1.0) * ((contEconomica)/10);
vlPorcentagemSaida_de_Emergencia = (contTotal/1.0) * ((contSaida_de_Emergencia)/10);
vlPorcentagemSem_Reclinagem = (contTotal/1.0) * ((contSem_Reclinagem)/10);
printf("\nValor Executivo Arrecadado: R$ %d", contExecutiva);
printf(" - %0.2f %", vlPorcentagemExecutiva);
printf("\t|");
for(i = 0; i < contExecutiva; i++)
printf("=");
for(i = 0; i < (contTotal - contEconomica - contSaida_de_Emergencia - contSem_Reclinagem); i++)
printf(".");
printf("|\n");
printf("\nValor Economica Arrecadado: R$ %d", contEconomica);
printf(" - %0.2f %", vlPorcentagemEconomica);
printf("\t|");
for(i = 0; i < contEconomica; i++)
printf("=");
for(i = 0; i < (contTotal - contExecutiva - contSaida_de_Emergencia - contSem_Reclinagem); i++)
printf(".");
printf("|\n");
printf("\nValor Saida de Emergencia Arrecadado: R$ %d", contSaida_de_Emergencia);
printf(" - %0.2f %", vlPorcentagemSaida_de_Emergencia);
printf("\t|");
for(i = 0; i < contSaida_de_Emergencia; i++)
printf("=");
for(i = 0; i < (contTotal - contExecutiva - contEconomica - contSem_Reclinagem); i++)
printf(".");
printf("|\n");
printf("\nValor Sem Reclinagem Arrecadado: R$ %d", contSem_Reclinagem);
printf(" - %0.2f %", vlPorcentagemSem_Reclinagem);
printf("\t|");
for(i = 0; i < contSem_Reclinagem; i++)
printf("=");
for(i = 0; i < (contTotal - contExecutiva - contEconomica - contSaida_de_Emergencia); i++)
printf(".");
printf("|\n");
}
void case4_Options()
{
int option;
do
{
printf("\n1 - Porcentagem de Assentos Liberados e Reservados");
printf("\n2 - Porcentagem de Assentos Reservados por corredor");
printf("\n3 - Porcentagem da Faixa de Idade");
printf("\n4 - Porcentagem do Valor Arrecadado por Categoria de Assento");
printf("\n5 - Sair");
printf("\n\n\n");
scanf("%d", &option);
clean_stdin();
switch(option)
{
case 1:
case4A();
break;
case 2:
case4B();
break;
case 4:
break;
case 5:
case4E();
break;
}
}
while(option != 6);
clean_stdin();
}
int main()
{
printf( "\n==================================================================================\n\n");
printf( "\n\t AVIAO UNISINOS \n\n");
printf( "\n==================================================================================\n\n");
iniciaDados();
iniciaMatriz();
int opcao = 0;
while(1)
{
printf( "\n===============================================================================\n");
printf( "\n\t Menu Aviao ");
printf( "\n===============================================================================\n");
printf( "\n1- Reserva de um assento......................................................");
printf( "\n2- Consultar situacao de um assento...........................................");
printf( "\n3- Consultar disponibilidade de assentos totais e consecutivos em uma fileira.");
printf( "\n4- Relatorios.................................................................");
printf( "\n===============================================================================\n");
printf("\nEscolha uma opcao: ");
scanf("%d", &opcao);
system("clear");
switch(opcao)
{
case 1:
mostraMatriz();
case1();
system("sleep");
system("clear");
break;
case 2:
mostraMatriz();
case2();
system("sleep");
system("clear");
break;
case 3:
mostraMatriz();
case3();
system("sleep");
system("clear");
break;
case 4:
mostraMatriz();
case4_Options();
system("sleep");
system("clear");
break;
}
}
}