Κεφάλαιο 11 : Επανάληψη 3 ο Φύλλο Εργασιών Άσκηση 01 Να γραφτεί τµήµα προγράµµατος που θα εµφανίζει τους περιττούς ακέραιους αριθµούς από 1 έως 99. Να γράψετε τρεις παραλλαγές του προγράµµατος : µε την εντολή while... do, την εντολή... until, και την εντολή for. Σε κάθε περίπτωση να χρησιµοποιήσετε το µικρότερο δυνατό αριθµό εντολών. var i:integer; i:=1; while i <= 99 do writeln( Περιττός : ', i); i := i+2; i:=1; writeln(περιττός : ', i); i := i+2; until i > 99; for i := 1 to 99 do if i mod 2 <> 0 then writeln( Περιττός : ', i); Άσκηση 02 Να γράψετε πρόγραµµα Pascal που θα διαβάζει ακέραιους αριθµούς από το πληκτρολόγιο µέχρι να δοθεί ο αριθµός 0, και θα εµφανίζει α) το πλήθος όλων των αριθµών που δόθηκαν β) το πλήθος των αριθµών που είναι µεγαλύτεροι από 5 γ) το πλήθος των αριθµών που είναι µικρότεροι από 5 δ) το πλήθος των εµφανίσεων του 5 ε) το άθροισµα και το µέσο όρο όλων των αριθµών που δόθηκαν στ) το άθροισµα και το µέσο όρο των αριθµών που είναι µικρότεροι από 5 ζ) το άθροισµα και το µέσο όρο των αριθµών που είναι µεγαλύτεροι από 5 Να γράψετε το πρόγραµµα χρησιµοποιώντας την εντολή while... do και... until 1
var x,tnum,numg5,numl5,num5:integer; sum,sumg5,suml5:integer; mo,mog5,mol5:real; tnum:=0; numg5:=0; numl5:=0; num5:=0; sum:=0; sumg5:=0; suml5:=0; while x > 0 do tnum:=tnum+1; sum:=sum+x; if x > 5 then numg5:=numg5+1; sumg5:=sumg5+x end else if x < 5 then numl5:=numl5+1; suml5:=suml5+x end else num5:=num5+1; readln(x) writeln('πλήθος αριθµών : ',tnum); writeln('άθροισµα αριθµών : ',sum); if tnum > 0 then writeln('mo αριθµών : ',sum/tnum:0:2); writeln('πλήθος αριθµών > 5 : ',numg5); writeln('άθροισµα αριθµών > 5 : ',sumg5); if numg5 > 0 then writeln('μο αριθµών > 5 : ',sumg5/numg5:0:2); writeln('πλήθος αριθµών < 5 : ',numl5); writeln('άθροισµα αριθµών < 5 : ',suml5); if numl5 > 0 then writeln('μο αριθµών < 5 : ',suml5/numl5:0:2); writeln('πλήθος εµφανίσεων του 5 :', num5); 2
var x,tnum,numg5,numl5,num5:integer; sum,sumg5,suml5:integer; mo,mog5,mol5:real; tnum:=0; numg5:=0; numl5:=0; num5:=0; sum:=0; sumg5:=0; suml5:=0; if x > 0 then tnum:=tnum+1; sum:=sum+x; if x > 5 then numg5:=numg5+1; sumg5:=sumg5+x end else if x < 5 then numl5:=numl5+1; suml5:=suml5+x end else num5:=num5+1; readln(x) until x = 0; writeln('πλήθος αριθµών : ',tnum); writeln('άθροισµα αριθµών : ',sum); if tnum > 0 then writeln('mo αριθµών : ',sum/tnum:0:2); writeln('πλήθος αριθµών > 5 : ',numg5); writeln('άθροισµα αριθµών > 5 : ',sumg5); if numg5 > 0 then writeln('μο αριθµών > 5 : ',sumg5/numg5:0:2); writeln('πλήθος αριθµών < 5 : ',numl5); writeln('άθροισµα αριθµών < 5 : ',suml5); if numl5 > 0 then writeln('μο αριθµών < 5 : ',suml5/numl5:0:2); writeln('πλήθος εµφανίσεων του 5 :', num5); 3
Άσκηση 03 Να γράψετε πρόγραµµα Pascal που θα διαβάζει ακέραιους αριθµούς από το πληκτρολόγιο µέχρι να δοθεί ο αριθµός 0, και θα εµφανίζει : α) τον µέγιστο και τη σειρά µε την οποία δόθηκε β) τον ελάχιστο και τη σειρά µε την οποία δόθηκε Αν ο ελάχιστος ή ο µέγιστος δοθούνε περισσότερες από µία φορές τότε ως σειρά εµφάνισης να λογίζεται η τελευταία φορά που δόθηκαν. var i,x,max,min,maxi,mini:integer; max:=-maxint; min:=maxint; max min while x <> 0 do if x >= max then max := x; maxi := i if x <= min then min := x; mini := i; readln(x) writeln('max : ',max); writeln('max I: ',maxi); writeln('min : ',min); writeln('min I: ',mini) 4
var i,x,max,min,maxi,mini:integer; max:=-maxint; min:=maxint; max min if x <> 0 then if x >= max then max := x; maxi := i if x <= min then min := x; mini := i; readln(x) until x = 0; writeln('max : ',max); writeln('max I: ',maxi); writeln('min : ',min); writeln('min I: ',mini) Άσκηση 04 Να γράψετε πρόγραµµα σε Pascal το οποίο να διαβάζει αριθµούς από το πληκτρολόγιο µέχρι να δοθεί αριθµός µεταξύ 10 και 20. Αρχικά να εµφανίζει µήνυµα προτροπής ( ώσε αριθµό µεταξύ 10 και 20 ). Για κάθε λανθασµένη προσπάθεια να εµφανίζει το µήνυµα Λάθος αριθµός, ξαναδώσε. Στο τέλος να εµφανίζει το πλήθος των λανθασµένων καταχωρήσεων. Να γράψετε δύο παραλλαγές του προγράµµατος, µια µε while και µία µε. 5
program aalal; var x,i:integer; write(' ώσε έναν αριθµό µεταξύ 10 και 20 : '); while (x<10) or (x>20) do write( Λάθος αριθµός ξαναδώσε : '); writeln(i, ' λανθασµένες προσπάθειες'); (' ώσε έναν αριθµό µεταξύ 10 και 20 : '); if (x<10) or (x>20) then write( Λάθος αριθµός ξαναδώσε : '); until (x>=10) and (x<=20); write( Λάθος αριθµός ξαναδώσε : '); Άσκηση 05 Να γράψετε ένα πρόγραµµα Pascal το οποίο θα διαβάζει ακέραιους αριθµούς από το πληκτρολόγιο και θα τους προσθέτει. Το πρόγραµµα θα τερµατίζεται όταν το άθροισµα τους ξεπεράσει το 120. Στο τέλος θα εµφανίζει το άθροισµα και το πλήθος των αριθµών που αθροίστηκαν. Να χρησιµοποιήσετε την εντολή while και. 6
program lalal; var x,s,i:integer; i:=1; readln(s); while s <= 120 do s:=s+x; writeln(i, ' ',s); s:=0; s:=s+x; until s> 120; writeln(i, ' ',s); Άσκηση 06 Να γράψετε ένα πρόγραµµα που θα διαβάζει το ύψος της στάθµης µιας λίµνης, το ρυθµό αύξησης της στάθµης της και ένα όριο και θα υπολογίζει σε πόσο χρόνο η στάθµη θα ξεπεράσει αυτό το όριο. Το ύψος δίνεται σε µέτρα, και ο ρυθµός αύξησης σε µέτρα/λεπτό. Να γράψετε το πρόγραµµα και µε την εντολή while και µε την εντολή. var y,y1,orio,r,t:double; readln(y); y1:=y; readln(r); readln(orio); t:=0; while y <= orio do y:=y+r; t:=t+1; writeln(t:0:2, ' ', y:0:2); t:=0; if y1 <= orio then y1:=y1+r; t:=t+1; until y1>orio; 7
writeln(t:0:2, ' ', y1:0:2); Άσκηση 07 Από έρευνες έχει φανεί ότι µια κοινότητα µελισσών αναπτύσσεται µε ρυθµό 4,8% ετησίως. Nα γράψετε ένα πρόγραµµα το οποίο θα διαβάζει τον πληθυσµό µιας κυψέλης και τη χωρητικότητά της, και θα υπολογίζει και θα τυπώνει τα χρόνια που χρειάζονται µέχρι ο πληθυσµός να ξεπεράσει τη χωρητικότητα. var p,c,y:real; readln(p); {plithismos} readln(c); {xvrhtikotita} y:=0; {xronia} while p <= c do p:=p+p*0.05; y:=y+1; writeln(y:0:2, ' ',p:0:2); readln(p); {plithismos} readln(c); {xvrhtikotita} y:=0; {xronia} if p <= c then p:=p+p*0.05; y:=y+1; until p > c; writeln(y:0:2, ' ',p:0:2); 8