Sistema de reservas de passagens aéreas. Uma pequena companhia aérea acabou de comprar um computador para seu novo sistema automatizado de reservas. O presidente lhe pediu que programasse o novo sistema. Você escreverá um programa que atribuirá assentos em cada voo do único avião da companhia (capacidade: 10 assentos). Seu programa deverá exibir o seguinte menu de alternativas:
Favor digitar 1 para “primeira classe”
Favor digitar 2 para “econômica”
Se a pessoa digitar 1, então seu programa deverá designar um assento na primeira classe (assentos de 1 a 5). Se a pessoa digitar 2, então seu programa deverá designar um assento na classe econômica (assentos 6 a 10). Seu programa deverá, então, imprimir um bilhete de embarque que indique o número do assento da pessoa e a seção a que esse assento pertence, primeira classe ou classe econômica. Use um array de subscrito único para representar o quadro de assentos do avião. Inicialize todos os elementos do array em 0 para indicar que todos os assentos estão vazios. À medida que cada assento é designado, defina o elemento correspondente do array como 1, para indicar que o assento não está mais disponível. Seu programa, naturalmente, nunca deverá designar um assento que já foi reservado a outra pessoa. Quando a primeira classe estiver cheia, seu programa deverá perguntar à pessoa se ela aceita ser colocada na classe econômica (e vice-versa). Se a resposta for sim, faça a designação de assentos apropriada. Se a resposta for não, imprima a mensagem “O próximo voo sairá em 3 horas.”
Passo 1
Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.
Vamos criar um programa que irá simular a reservas de passagens aéreas. Para isso vamos simular que o nosso avião tenha 10 assentos disponíveis, os cincos primeiros serão de primeira classe e o restante de classe econômica. O usuário terá que informar qual classe ele deseja reservar assento. Nosso programa irá fazer o tratamento de casos, ou seja, se a primeira classe estiver cheia o programa irá perguntar se o usuário deseja escolher a classe econômica, o inverso também será tratado, se a classe econômica estiver cheia e estiver vaga na primeira classe o programa irá perguntar para o usuário se ele deseja reservar a primeira classe. Se todos os assentos estiverem reservados o programa irá informar que todas as reservas estão cheias e finalizar o programa.
Passo 2
Vamos escrever nosso programa:
#include
#include
int main()
{
int plane[ 11 ] = { 0 };
/* assentos no avião */
int i = 0;
/* contador */
int firstClass= 1;
/* assentos de primeira classe começam em 1 */
int economy = 6;
/* assentos econômicos começam em 6 */
int choice;
/* escolha do usuário */
char response[ 2 ];
/* resposta do usuário */
/* loop 10 vezes */
while ( i
printf( "\n%s\n%s\n?", "Digite 1 para \"primeira classe\"",
"Digite 2 para \"economica\"" );
scanf( "%d", &choice );
/* se o usuário selecionar a primeira classe */
if ( choice == 1 ) {
/* se houver assento disponível na primeira classe */
if ( !plane[ firstClass ] && firstClass
printf( "Sua atribuição de assento é %d\n", firstClass );
plane[ firstClass++ ] = 1;
i++;
} /* end if */
/* se não houver assentos de primeira classe, mas assentos econômicos disponíveis */
else if ( firstClass > 5 && economy
/* pergunta se o passageiro gostaria de sentar na classe econômica */
printf("A seção da primeira classe está cheia.\n");
printf("Você gostaria de se sentar na economica");
printf(" seção (S ou N)? ");
scanf( "%s", response );
/* se a resposta for sim, então atribui o assento */
if ( toupper( response[ 0 ] ) == 'Y' ) {
printf( "Sua atribuição de assento é%d\n", economy );
plane[ economy++ ] = 1;
i++;
} /* end if */
else {
/* imprime a próxima partida */
printf("O próximo voo sai em 3 horas.\n");
} /* end else */
} /* end else if */
else {
/* imprime a próxima partida */
printf("O próximo voo sai em 3 horas.\n");
} /* end else */
} /* end if */
else {
/* se o usuário selecionar economica */
/* se houver vagas disponíveis, atribua vaga */
if ( !plane[ economy ] && economy
printf( "Sua atribuição de assento é %d\n", economy );
plane[ economy++ ] = 1;
i++;
} /* end if */
/* se apenas assentos de primeira classe estiverem disponíveis */
else if ( economy > 10 && firstClass
/* pergunta se a primeira classe é adequada */
printf("A seção de economica está cheia.\n");
printf("Você gostaria de sentar na primeira classe");
printf(" seção (S ou N)? ");
scanf( "%s", response );
/* se a resposta for sim, atribui o assento */
if ( toupper( response[ 0 ] ) == 'Y' ) {
printf( "Sua atribuição de assento é %d\n", firstClass );
plane[ firstClass++ ] = 1;
i++;
} /* end if */
else {
/* imprime a próxima partida */
printf( "O próximo voo sai em 3 horas.\n" );
} /* end else */
} /* end else if */
else { /* imprime a próxima partida */
printf( "O próximo voo sai em 3 horas.\n" );
} /* end else */
} /* end else */
} /* end while */
printf( "\nTodos os assentos para este voo foram vendidos.\n" );
return 0; /* indicate successful termination */
} /* end main */
E assim nosso programa está finalizado galera. Até o próximo exercício.
Resposta
#include
#include
int main()
{
int plane[ 11 ] = { 0 };
/* assentos no avião */
int i = 0;
/* contador */
int firstClass= 1;
/* assentos de primeira classe começam em 1 */
int economy = 6;
/* assentos econômicos começam em 6 */
int choice;
/* escolha do usuário */
char response[ 2 ];
/* resposta do usuário */
/* loop 10 vezes */
while ( i
printf( "\n%s\n%s\n?", "Digite 1 para \"primeira classe\"",
"Digite 2 para \"economica\"" );
scanf( "%d", &choice );
/* se o usuário selecionar a primeira classe */
if ( choice == 1 ) {
/* se houver assento disponível na primeira classe */
if ( !plane[ firstClass ] && firstClass
printf( "Sua atribuição de assento é %d\n", firstClass );
plane[ firstClass++ ] = 1;
i++;
} /* end if */
/* se não houver assentos de primeira classe, mas assentos econômicos disponíveis */
else if ( firstClass > 5 && economy
/* pergunta se o passageiro gostaria de sentar na classe econômica */
printf("A seção da primeira classe está cheia.\n");
printf("Você gostaria de se sentar na economica");
printf(" seção (S ou N)? ");
scanf( "%s", response );
/* se a resposta for sim, então atribui o assento */
if ( toupper( response[ 0 ] ) == 'Y' ) {
printf( "Sua atribuição de assento é%d\n", economy );
plane[ economy++ ] = 1;
i++;
} /* end if */
else {
/* imprime a próxima partida */
printf("O próximo voo sai em 3 horas.\n");
} /* end else */
} /* end else if */
else {
/* imprime a próxima partida */
printf("O próximo voo sai em 3 horas.\n");
} /* end else */
} /* end if */
else {
/* se o usuário selecionar economica */
/* se houver vagas disponíveis, atribua vaga */
if ( !plane[ economy ] && economy
printf( "Sua atribuição de assento é %d\n", economy );
plane[ economy++ ] = 1;
i++;
} /* end if */
/* se apenas assentos de primeira classe estiverem disponíveis */
else if ( economy > 10 && firstClass
/* pergunta se a primeira classe é adequada */
printf("A seção de economica está cheia.\n");
printf("Você gostaria de sentar na primeira classe");
printf(" seção (S ou N)? ");
scanf( "%s", response );
/* se a resposta for sim, atribui o assento */
if ( toupper( response[ 0 ] ) == 'Y' ) {
printf( "Sua atribuição de assento é %d\n", firstClass );
plane[ firstClass++ ] = 1;
i++;
} /* end if */
else {
/* imprime a próxima partida */
printf( "O próximo voo sai em 3 horas.\n" );
} /* end else */
} /* end else if */
else { /* imprime a próxima partida */
printf( "O próximo voo sai em 3 horas.\n" );
} /* end else */
} /* end else */
} /* end while */
printf( "\nTodos os assentos para este voo foram vendidos.\n" );
return 0; /* indicate successful termination */
} /* end main */