Εντολή for - Άσκηση 1 - Διαγωνισμός ζωγραφικής

Ετικέτες: 
Εκατό (100) ζωγράφοι λαμβάνουν μέρος σε διεθνή διαγωνισμό ζωγραφικής. Κάθε ζωγράφος παραδίδει στην κριτική επιτροπή του διαγωνισμού ένα έργο του/της για να βαθμολογηθεί, η βαθμολογική κλίμακα είναι από το 1 έως και το 100. Να κατασκευάσετε πρόγραμμα το οποίο:
  1. Για κάθε ζωγράφο διαβάζει το όνομά του/της, την ονομασία του έργου του/της καθώς και τη βαθμολογία που έδωσε στο έργο η κριτική επιτροπή.
  2. Υπολογίζει το καλύτερα βαθμολογημένο έργο (υποθέστε ότι είναι μόνο 1) και εμφανίζει με κατάλληλα μηνύματα το όνομα του ζωγράφου, την ονομασία του έργου καθώς και τη βαθμολογία που πήρε από την κριτική επιτροπή.
 
Λύση: 
program painting;
var
bath, max, i :integer;
ono, maxono :string[20];
ergo,maxerg :string[40];
begin
write('Δώσε το όνομα του 1ου καλλιτέχνη...:');
readln(ono);
write('Δώσε το όνομα του έργου του...:');
readln(ergo);
write('Δώσε τον βαθμό της κριτικής επιτροπής...:');
readln(bath);
max:=bath;
maxono:=ono;
maxerg:=ergo;
for i:=2 to 100 do
begin
    write('Δώσε το όνομα του/της ', i ,' διαγωνιζομένου/νης...:');
    readln(ono);
    write('Δώσε το όνομα του έργου του/της...:');
    readln(ergo);
    write('Δώσε τη βαθμολογία της κριτικής επιτροπής...:');
    readln(bath);
    if bath>max
        then
            begin
                max:=bath;
                maxono:=ono;
                maxerg:=ergo;
            end;
end;
writeln('Όνομα νικητή/τριας διαγωνισμού...:',maxono);
writeln('Έργο..:',maxerg);
writeln('Βαθμολογία...:',max);
end.
 
Παρατηρήσεις: 
Στην άσκηση αυτή έχουμε την εύρεση μέγιστης τιμής από ένα σύνολο γνωστών δεδομένων. Σ' αυτές τις περιπτώσεις χρησιμοποιήσουμε την εντολή επανάληψης FOR. Υποθέτουμε ότι ο 1ος ζωγράφος έχει το καλύτερα βαθμολογημένο έργο και τοποθετούμε τα απαραίτητα στοιχεία στις αντίστοιχες μεταβλητές max, maxono, maxerg. Πρέπει να βάλουμε αναγκαστικά τιμή στη μεταβλητή max γιατι στην αντίθετη περίπτωση δε θα μπορέσει να εκτελεστεί την 1η φορά η εντολή if.