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 */