Procedures - Άσκηση 2 - Συνδυαστική άσκηση

Ετικέτες: 
Να γίνει πρόγραμμα σε Pascal το οποίο βρίσκει τη μεγαλύτερη τιμή από ένα πλήθος τιμών που επιθυμεί ο χρήστης. Το πρόγραμμα πρέπει να υλοποιεί τα παρακάτω:
 
  1. Διαβάζει το πλήθος των τιμών που θέλει να εισάγει ο χρήστης, κάνοντας έλεγχο εγκυρότητας για το πλήθος το οποίο πρέπει να είναι στο διάστημα τιμών 1 έως και 20. Στην περίπτωση λανθασμένης πληκτρολόγησης το πλήθος πρέπει να εισάγεται ξανά.
  2. Καλεί διαδικασία με όνομα MAX η οποία δέχεται το πλήθος των τιμών που θα εισαχθούν και στην συνέχεια διαβάζει τις τιμές και επιστρέφει τη μεγαλύτερη τιμή στο πρόγραμμα.
  3. Εμφανίζει τη μεγαλύτερη τιμή από αυτές που δόθηκαν.
Σε όλες τις εντολές εισόδου και εξόδου να υπάρχουν κατάλληλα διαμορφωμένα μηνύματα.
 
Λύση: 
program numbers;
var
    n,m:integer;
 
Procedure MAX (n:integer; var m:integer);
var
    i,x:integer;
begin
    write ( ' Δώσε τον 1o αριθμό..:' );
    readln (x);
    m := x;
    for i := 2 to n do
        begin
            write ( ' Δώσε τον ',i,'o αριθμό..:' );
            readln (x);
            if x > m
                then m := x;
        end;
end;
 
begin
        repeat
            write ( ' Δώσε το πλήθος των αριθμών που θέλεις να εισάγεις (1 έως 20)..:' );
            readln (n);
        until (n>0) and (n<=20);
        MAX (n,m);
        writeln ( ' Ο μέγαλύτερος από τους αριθμούς που δόθηκαν ειναι ο...:',m );
end.
 
Παρατηρήσεις: 
 
Άσκηση με μεγάλο βαθμό δυσκολίας για τα δεδομένα του ΕΠΑΛ σύμφωνα και με τα θέματα των πανελλαδικών μέχρι το 2014. Εδώ βλέπουμε ξεκάθαρα ότι μια διαδικασία μπορεί να πραγματοποιήσει όλες τις λειτουργίες ενός προγράμματος. Πρέπει να δοθεί μεγάλη προσοχή στο τμήμα δηλώσεων της διαδικασίας MAX , στο τμήμα δηλώσεων των υποπρογραμμάτων, δηλώνουμε μεταβλητές που θα χρησιμοποιήσουμε αποκλειστικά μέσα στο υποπρόγραμμα, με λίγα λόγια δεν είναι παράμετροι.