Cinema 1.5
Refiz o código com do-while pois acredito que ficaria menor e mais direto mesmo tendo verificação cada interação.(Muda em apenas 3 linhas diferença mas acredito que em um código maior possa fazer diferença, com otimização certa pode ser melhor ou só dar mais trabalho)
`#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define QTD_CHAIRS 10 // quantidade de cadeiras
void CSW() {
system("cls");
}
void print_chairs(int chairs[]) {
printf("Cadeiras disponíveis:\n");
for (int i = 0; i < QTD_CHAIRS; i++) {
if (chairs[i] == 0) { // disponível
printf("[B%d] ", i + 1);
} else { // ocupado
printf("[--] ");
}
}
printf("\n");
}
int main() {
int chairs[QTD_CHAIRS] = { 0 };
char opcao[2];
do {
CSW();
print_chairs(chairs);
char cadeira[4];
printf("Reservar a cadeira: ");
scanf("%3s", cadeira);
int numeroCadeira = atoi(cadeira + 1);
if (toupper(cadeira[0]) != 'B' || numeroCadeira < 1 || numeroCadeira > QTD_CHAIRS) {
printf("Cadeira inválida!\n");
} else if (chairs[numeroCadeira - 1] == 0) {
chairs[numeroCadeira - 1] = 1;
printf("Cadeira %s RESERVADA!\n", cadeira);
} else {
printf("Cadeira %s já está reservada!\n", cadeira);
}
printf("Quer reservar outra cadeira? [S/N] ");
scanf(" %1s", opcao);
opcao[0] = toupper(opcao[0]);
} while (opcao[0] == 'S');
printf("Fim Das Escolhas!\n");
return 0;
}`