Εντολή While - Άσκηση 1 -Υπολογισμός μέσου όρου αγνώστου πλήθους αριθμών

Ετικέτες: 
Να δημιουργηθεί πρόγραμμα το οποίο διαβάζει επαναληπτικά θετικούς ακέραιους αριθμούς, μέχρι να δοθεί αρνητικός αριθμός ή μηδέν. Στο τέλος της επαναληπτικής διαδικασίας αν έχουν εισαχθεί θετικοί ακέραιοι αριθμοί να εμφανίζει το πλήθος των αριθμών που διαβάστηκαν καθώς και τον μέσο όρο τους, στην περίπτωση που δε διαβάστηκε κανένας θετικός αριθμός να εμφανίζει το μήνυμα "Δεν πληκτρολογήθηκε κανένας θετικός αριθμός".
 
Λύση: 
program arithmoi;
var
number, sum, i:integer;
mo: real;
begin
write('Δώσε αριθμό..:');
readln(number);
sum:=0;
i:=0;
while (number > 0) do
    begin
    sum:=sum + number;
    i:=i+1;
    write('Δώσε επόμενο αριθμό...:');
    readln(number);
    end;
if i>0 then
        begin
            mo:=sum/i;
            writeln('Σύνολο θετικών αριθμών εισόδου..:',i);
            writeln('Μέσος όρος αριθμών...:',mo:0:2);
        end
        else writeln ('Δεν πληκτρολογήθηκε κανένας θετικός αριθμός');
end.
 
 
Παρατηρήσεις: 

Στην άσκηση αυτή δεν μπορούμε να χρησιμοποιήσουμε την εντολή REPEAT..UNTIL γιατί υπάρχει περίπτωση ο 1ος αριθμός εισόδου να είναι αρνητικός ή μηδέν, στην περίπτωση αυτή η εντολή REPEAT θα εκτελέσει μία τουλάχιστον επανάληψη και έτσι θα βάλει στο άθροισμα (sum) και στο σύνολο των αριθμών (i) λανθασμένα δεδομένα. Επιλέγουμε την εντολή WHILE για να ελέγξουμε σωστά και τον 1ο αριθμό. Επομένως διαβάζουμε τον πρώτο αριθμό έξω από την επαναληπτική διαδικασία και τον επόμενο ή τους επόμενους αριθμούς μέσα στη δομή WHILE και στο τέλος αυτής. Μόλις ολοκληρωθεί η επαναληπτική διαδικασία είμαστε υποχρεωμένοι από την εκφώνηση της άσκησης να ελέγξουμε την τιμή της μεταβλητής i για να διαπιστώσουμε άν διαβάστηκαν θετικοί αριθμοί, γι' αυτό και χρησιμοποιούμε τη συνθήκη i>0.