Ciao a tutti ragazzi, in allegato c'è un problema in C che proprio non riesco a risolvere. Questa è la mia versione:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SEATS_N 10
int main( void )
{
srand( time(NULL) );
int seats[ SEATS_N + 1 ] = {0};
int scelta;
int i, j = 0; /* contatori prima classe / economica */
int x; /* per il generatore num.casuale */
int change; /* input in caso di cambio sistemazione */
while ( i != SEATS_N/2 || j != SEATS_N/2 ) {
printf( "\nPlease type 1 for \"first class\""
"\nPlease type 2 for \"economic\": ");
scanf( "%d", &scelta );
if ( scelta != 1 && scelta != 2 ){
printf( "\nErrore, riprovare.\n" );
}
else {
if ( scelta == 1 ){
x = 1 + rand() % 5;
while ( seats[x] == 1 && i != 5 ){
x = 1 + rand() % 5;
}
if ( i != 5 ) {
seats[x] = 1;
printf( "\nFirst class, %d", x );
i++;
}
else {
printf( "\nNo first class seats left. Would you like an economic one instead?"
"\n(1 yes, otherwise no): ");
scanf( "%d", &change );
if ( change == 1 ) {
x = 6 + rand() % 5;
while ( seats[x] == 1 ) {
x = 6 + rand() % 5;
}
seats[x] = 1;
printf( "\nEconomic, %d", x );
j++;
}
else {
printf( "\nNext flight leaves in 3 hours.\n" );
}
}
}
if ( scelta == 2 ){
x = 6 + rand() % 5;
while ( seats[x] == 1 && j != 5 ){
x = 6 + rand() % 5;
}
if ( j != 5 ) {
seats[x] = 1;
printf( "\nEconomic, %d", x );
j++;
}
else {
printf( "\nNo economic seats left. Would you like a first class one instead?"
"\n(1 yes, otherwise no): ");
scanf( "%d", &change );
if ( change == 1 ) {
x = 1 + rand() % 5;
while ( seats[x] == 1 ) {
x = 1 + rand() % 5;
}
seats[x] = 1;
printf( "\nFirst class, %d", x );
i++;
}
else {
printf( "\nNext flight leaves in 3 hours.\n" );
}
}
}
}
}
printf( "\n\nPlane full, no seats left. Thank you.\n" );
return 0;
}
In economic class ne conta, giustamente, 5, mentre in first class solo 3 e poi il programma si chiude ("no seats left"). E voi come lo fareste?
Grazie a tutti!!
Allegati: