Che cosa studi? Il testo è in effetti poco chiaro e denota, a mio parere, una mancanza di rispetto verso gli studenti che devono affrontare l'esame. E' vero che le specifiche dei clienti non sono mai molto chiare, ma non è certo una problematica davanti alla quale dovrebbero trovarsi studenti al loro primo esame di informatica. Scrivere un testo in modo chiaro e preciso non richiede poi tanto tempo. Credo inoltre che un esempio di input e output sia fondamentale per eliminare possibili ambiguità.
Dalla descrizione del problema capisco le seguenti cose:
1. C'è una costante N che rappresenta il numero di moli all'interno del porto. Questa costante va definita all'inizio del sorgente con una direttiva #define. Ad esempio:
- Codice:
#define N 10
Sfortunatamente non è chiaro quale valore si debba scrivere nella soluzione al problema.
2. I moli sono descritti all'interno di un file il cui nome viene passato come primo argomento al programma (sarà quindi in argv[1] se vengono usati i nomi "standard" per gli argomenti del main). Questo file avrà N righe e in ogni riga ci sono due valori interi. Il primo identifica il molo e il secondo rappresenta la dimensione del molo. Il tuo programma andrà quindi chiamato da linea di comando con una istruzione tipo:
- Codice:
nome_programma file.txt
dove file.txt avrà (per esempio) il seguente contenuto:
- Codice:
1 100
2 30
3 75
4 68
5 130
6 15
7 34
8 93
9 72
10 84
All'inizio del main dovrai quindi aprire questo file di testo e memorizzare i valori in un qualche arrray di lunghezza N.
3. Le navi vengono invece inserite da tastiera. Ogni nave è descritta da due valori interi: il numero identificativo e la sua dimensione. L'elenco delle navi terminerà con l'inserimento da tastiera della parola QUIT o finché tutti i moli saranno segnati come occupati. Un esempio di input potrebbe quindi essere:
- Codice:
125 40
12 34
14 100
QUIT
4. A questo punto la frase "Non possono attraccare al porto navi più piccole del molo ma navi più grandi." sembrerebbe indicare che una nave di dimensione 50 può attraccare in un molo di dimensione 15 ma non in un molo di dimensione 75. Va un po' contro quella che è la mia intuizione, ma così sembra dire il testo.
5. Ogni nuova nave letta da tastiera dovrai indicare il molo in cui farla attraccare. Questo molo va scelto in base al criterio precedente e alla differenza tra la lunghezza della nave e quella del molo. Tra tutti i moli liberi devi cioè scegliere quello la cui lunghezza sia più vicina alla lunghezza della nave. Se non ci sono moli adatti ad una nave immagino tu debba indicare un messaggio di errore. Se tutti i moli sono occupati devi invece scrivere un messaggio e terminare.
Spero di aver messo un po' più di chiarezza, anche se il testo è poco chiaro e potrei aver frainteso qualcosa. L'interpretazione di @Sherlock.h è in effetti diversa.