Salve,
Chiedo innanzitutto venia in caso il titolo non sia sufficientemente adeguato, non mi viene altro in mente.![]()
Ho sviluppato questo codice in basa ad un esercizio (aggiungo anche le richieste).
Codice:
Richieste:codice:#include <iostream> using namespace std; //funzioni int sceltaClasse(); //include il mess. di benvenuto void visualizzaCartaImbarco(int, int); int cercaPosti1(); //cerca i posti disponibili nella prima classe int cercaPosti2(); //cerca i posti disponibili nella classe economica void cercaAltro(int); const int size = 11; int arrayPosti[size] = {0}; //array di 10 elementi (escludendo l'elemento con indice 0) int main(void) { cout << "Benvenuto nel programma."; while (true){ //condizione? int classe = sceltaClasse(); int posto = 0; //controlli su classe if (classe == 1 ){ posto=cercaPosti1(); visualizzaCartaImbarco(classe, posto); } else if (classe == 2) { posto=cercaPosti2(); visualizzaCartaImbarco(classe, posto); } else cout << "Dato inserito non valido." << endl; } return 0; } int sceltaClasse() { int classeScelta; cout << "\nIn quale classe desidera viaggiare?\nDigitare 1 per la prima classe.\nDigitare 2 per la classe economica." << endl; cin >> classeScelta; return classeScelta; } int cercaPosti1() { for (int i = 1; i<5; i++) //cerco i posti nell'array, partendo dall'indice 1: se un elemento ha valore 0 lo utilizza come posto e lo incrementa. { if (arrayPosti[i] == 0) { arrayPosti[i]++; return i; } } cercaAltro(1); } int cercaPosti2() { for (int i = 6; i<10; i++)//cerco i posti nell'array, partendo dall'indice 1: se un elemento ha valore 0 lo utilizza come posto, lo incrementa, e lo ritorna. { if (arrayPosti[i] == 0) { arrayPosti[i]++; return i; } } cercaAltro(2); } void cercaAltro(int classe) { int x =0; switch (classe) { case 1: cout << "Non è stato possibile trovare un posto nella prima classe. Passare alla classe economica?\nDigiti 1 per passare alla classe economica;\nDigiti 2 per uscire dal programa." <<endl; cin >> x; if (x == 1){ cercaPosti2(); } else { cout << "Arrivederci!"<<endl; } break; case 2: cout << "Non è stato possibile trovare un posto nella classe economica. Passare alla prima classe?\nDigiti 1 per passare alla prima classe;\nDigiti 2 per uscire dal programa." <<endl; cin >>x; if (x == 1){ cercaPosti1(); } else{ cout << "Arrivederci!"<<endl; } break; default: cout << "Valore inserito non valido."<<endl; } } void visualizzaCartaImbarco(int classe, int posto) { cout << "\nPosto assegnato: " << posto << "\nNella classe: " << classe << endl; }
Non sapendo quale condizione utilizzare, ho impostato la condizione del while su true, che appunto impedisce il termine del programma.codice:Problema: Creazione di un programma che permetta di effettuare delle prenotazioni. Caratteristiche e dati particolari: -Massimo 10 posti nell'aereo; -Ci sono due classi: la prima classe(posti 1-5), e la classe economica (post 6-10); -Il programma, deve visualizzare la carta d'imbarco contenente il posto ed il tipo di classe; -Il programma, deve controllare che il posto sia libero: in caso tutta la classe sia completa, bisogna chiedere se passare all'altra (e viceversa). Altrimenti visualizzare un messaggio, che informa l'utente che il prossimo viaggio è fra 3 ore.
Un'idea sarebbe utilizzare un valore che è effettua la somma di tutti gli elementi dell'array: quando questo valore arriva al massimo (considerando che gli elementi dell'array hanno due valori: 0 ed 1) il while risulterà false e terminerà.
Ma non saprei come impostarlo; naturalmente altre proposte saranno bene accette.
Un altro problema, è questo:
http://i47.tinypic.com/2v2tvdd.png
Vi invito a darmi dei consigli, sono un novellino in materia![]()
Grazie per l'attenzione.

Rispondi quotando