Published using Google Docs
Φύλλο Ασκήσεων - Κεφάλαιο 11
Updated automatically every 5 minutes

ΚΕΦΑΛΑΙΟ 11

ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (while-do, repeat-until, for-do)

------------------------------------------------------------------------------------------------------------------------------------------------

χρησιμοπόιήστε για το περιβάλλον: http://www.tutorialspoint.com/compile_pascal_online.php

Επίσης οι ασκήσεις που έχουν “πέσει” τα προηγούμε χρόνια στις πανελλαδικές βρίσκονται εδώ: http://okiriostonipologiston.blogspot.gr/2014/02/10-11.html 

Η κάθε άσκηση μπορεί (και πρέπει) να λυθεί και με τις τρεις δομές επανάληψης

 

  1. Ερωτήσεις σχολικού βιβλίου 5, 6, 7, 8, 9, 10 (σελ 106, 107).

 

  1. Ασκήσεις σχολικού βιβλίου 1, 3, 4, 5 (σελίδες 107, 108).

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο να εμφανίζει 30 φορές τον χαρακτήρα @ στην ίδια σειρά. Να χρησιμοποιηθεί μία εντολή επανάληψης και μια μόνο εντολή εξόδου (write)

Αποτέλεσμα της εκτέλεσης του προγράμματος:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο να εμφανίζει εναλλάξ από 5 φορές τον καθένα τους χαρακτήρες @ και $ στην ίδια σειρά. Να χρησιμοποιηθεί μία εντολή επανάληψης και μία μόνο εντολή εξόδου.

Αποτέλεσμα της εκτέλεσης του προγράμματος: @$@$@$@$@$

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο να εμφανίζει ξεχωριστά από 5 φορές τον καθένα τους χαρακτήρες # και $ στην ίδια σειρά. Να χρησιμοποιηθεί εντολή επανάληψης.

Αποτέλεσμα της εκτέλεσης του προγράμματος: ##### $$$$$

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο να εμφανίζει τον χαρακτήρα & στην οθόνη όσες φορές του ορίσουμε εμείς. Ειδικότερα το πρόγραμμα
  1. θα ζητάει αριθμό (Ν) των εμφανίσεων του χαρακτήρα &
  2. χρησιμοποιώντας μία εντολή επανάληψης και μια μόνο εντολή εξόδου (write) θα εμφανίζει Ν φορές τον χαρακτήρα & (στην ίδια σειρά).

        Αποτέλεσμα της εκτέλεσης του προγράμματος:

Πόσες φορές θέλεις να εμφανιστεί ο χαρακτήρας &; 5 {ο χρήστη πληκτρολογεί μία τιμή}

&&&&&

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο να εμφανίζει οσεσδήποτε (έστω Ν) φορές στην οθόνη του υπολογιστή οποιονδήποτε χαρακτήρα (έστω Χ) έχει επιλέξει ο χρήσης. Ειδικότερα το πρόγραμμα αρχικά
  1. θα ζητάει το χαρακτήρα που θέλουμε να εμφανιστεί (έστω Χ), στη συνέχεια
  2. θα ζητάει αριθμό (Ν) των εμφανίσεων του χαρακτήρα και
  3. χρησιμοποιώντας μία εντολή επανάληψης και μια μόνο εντολή εξόδου (write) θα εμφανίζει Ν φορές τον χαρακτήρα Χ στην ίδια σειρά.

        Αποτέλεσμα της εκτέλεσης του προγράμματος:

Ποιος χαρακτήρας θέλεις να εμφανιστεί; % {ο χρήστη πληκτρολογεί μία τιμή}

Πόσες φορές θέλεις να εμφανιστεί;_ 8 {ο χρήστη πληκτρολογεί μία τιμή}

%%%%%%%% {εμφανίζεται η τιμή του προγράμματος}

        Program epanalipseis_me_while_do;

Var

    xaraktiras      :   char;

    epanalipseis    :   integer;

Begin

    write('Ποιός χαρακτήρας θες να εμφανιστεί; ');

    readln(xaraktiras);

    write('Πόσες φορές θέλεις να εμφανιστεί; ');

    readln(epanalipseis);

 

    while epanalipseis > 0 do

    begin

        write(xaraktiras);

        epanalipseis := epanalipseis - 1;

    end;    {while}

    writeln;

End.        {κυρίως προγράμματος}

 

Program epanalipseis_me_repeat_until;

Var

    xaraktiras      :   char;

    epanalipseis    :   integer;

Begin

    write('Ποιός χαρακτήρας θες να εμφανιστεί; ');

    readln(xaraktiras);

    write('Πόσες φορές θέλεις να εμφανιστεί; ');

    readln(epanalipseis);

 

    repeat

        write(xaraktiras);

        epanalipseis := epanalipseis - 1;

    until epanalipseis <= 0;  {της rereat}

    writeln;

End.                        {του κυρίως προγράμματος}

        Program epanalipseis_me_for_do;

Var

    xaraktiras          :   char;

    a, epanalipseis     :   integer;

Begin

    write('Ποιός χαρακτήρας θες να εμφανιστεί; ');

    readln(xaraktiras);

    write('Πόσες φορές θέλεις να εμφανιστεί; ');

    readln(epanalipseis);

 

    for a := 1 to epanalipseis do

    begin    

        write(xaraktiras);

    end;                    {της for}

    writeln;

End.                        {του κυρίως προγράμματος}

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας μία εντολή επανάληψης και μία μόνο εντολή εξόδου (write) να εμφανίζει στην οθόνη τους πρώτους 20 ακέραιους θετικούς αριθμούς, χωρισμένους μεταξύ τους με κόμμα, στην ίδια σειρά.

Αποτέλεσμα της εκτέλεσης του προγράμματος: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

 17, 18, 19, 20

 

Program epanalipseis_me_repeat_until;

Var

    a                :   integer;

Begin

a := 1;  

repeat

                     write(a);

                write(‘, ’);

                a := a + 1;

    until a > 20;  {της rereat}

    writeln;

End.                        {του κυρίως προγράμματος}

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας μία εντολή επανάληψης να υπολογίζει τον μέσο όρο των βαθμών μιας τάξης για ένα συγκεκριμένο μάθημα. Αρχικά το πρόγραμμα θα ζητάει το πλήθος των μαθητών της τάξης και στην συνέχεια θα ζητάει τον βαθμό του κάθε μαθητή. Τέλος θα εμφανίζει τον μέσο όρο της τάξης.

Δώσε μου αριθμό των μαθητών της τάξης: α {ο χρήστη πληκτρολογεί μία τιμή}

Δώσε τον βαθμό του 1ου μαθητή:  {ο χρήστη πληκτρολογεί μία τιμή}

Δώσε τον βαθμό του 2ου μαθητή:  {ο χρήστη πληκτρολογεί μία τιμή}

Δώσε τον βαθμό του Νου μαθητή:  {ο χρήστη πληκτρολογεί μία τιμή}

 

Ο μέσος όρος της τάξης είναι: {εμφανίζεται η τιμή του προγράμματος}

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας την εντολή επανάληψης while (ή την repeat) να αθροίζει αριθμούς τους οποίους εισάγει χρήστης από το πληκτρολόγιο μέχρι η τιμή τους αθροίσματος τους να ξεπεράσει το 50. Στο τέλος το πρόγραμμα να εμφανίζει το πλήθος των αριθμών που έχει εισάγει ο χρήστης και το άθροισμα τους.

Δώσε μου τον αριθμό: α {ο χρήστη πληκτρολογεί μία τιμή}

Δώσε μου τον αριθμό: α {ο χρήστη πληκτρολογεί μία τιμή}

                            …

Έδωσες Ν αριθμούς και το άθροισμα τους είναι: Χ {εμφανίζεται η τιμή του προγράμματος}

Program epanalipseis_mexri_to_50;

Var

    sum, ar, plithos                :   integer;

Begin

        sum := 0;

        plithos := 0;

        write(‘Δώσε μου έναν αριθμό ‘);

        readln(ar);

        while sum =< 50 do

        begin

                sum := sum + ar;

                plithos := plithos + 1;

                write(‘Δώσε μου άλλον αριθμό ‘);

                readln(ar);

        end; {της while}

        write(‘Το πλήθος των αριθμών είναι: ‘, plithos);

End. {του προγράμματος}

  1. Να γράψετε πρόγραμμα που να διαβάζει έναν ακέραιο αριθμό Ν ο οποίος θα πρέπει να ελέγχεται ώστε να είναι 0< Ν ≤20. Σε διαφορετική περίπτωση το πρόγραμμα θα ξαναζητάει το Ν μέχρι να η τιμή που θα δωθεί να είναι 0< Ν ≤20. Στη συνέχεια το πρόγραμμα να διαβάζει Ν αριθμούς και στο τέλος να εμφανίζει
  1. το άθροισμα τους
  2. το μέσο όρο τους
  3. το μικρότερο
  4. το μεγαλύτερο από αυτούς
  5. το πλήθος των θετικών
  6. το ποσοστό των αρνητικών

Υπόδειξη: το πρώτο πράγμα που πρέπει να σκεφετείτε είναι ποιά από τα παραπάνω θα υπολογισθούν μέσα στη δομή επανάληψης και ποιά εκτός.

Program askisi_ola_ta_lefta;

Var

n, a, arithmos, athroisma, mo, mikroteros                        :           integer;

        megaliteros, plithos_thetikon, plithos_arnitikon        :        integer;

        pososto_arnitikon, plithos : integer;

Begin

        athroisma := 0;  mo := 0;  

plithos_thetikon := 0; pososto_arnitikon := 0;

        megaliteros := -99999;

        mikroteros := 999999;

        plithos := 0;  plithos_arnitikon := 0;

        write(‘Δώσε μου έναν αριθμό N, όπου Ν > 0 και Ν <= 20‘);

        readln(n);

        while (n > 20) or (n <= 0) do

        begin

        write(‘Δώσε μου έναν αριθμό N, όπου Ν > 0 και Ν <= 20‘);

                readln(n);

        end;

        for a := 1 to n do

        begin

                writeln(‘Δώσε μου έναν αριθμό ‘);

                readln(arithmos);

                                

athroisma := athroisma + arithmos;

                plithos := plithos + 1;        {μήπως αυτό ταυτίζεται με το n?}

        

                if arithmos > 0 then

plithos_thetikon := plithos_thetikon + 1

else

        if arithmos < 0 then                {θα αρκούσε ένα απλό else?}

                plithos_arnitikon := plithos_arnitikon + 1;

                

                        if mikroteros > arithmos then

                                mikroteros := arithmos;

                        if megaliteros < arithmos then

                                megaliteros := arithmos;

                end;         {της for }

                

                mo := athroisma div n;  {ή mo := ahtroisma div plithos;

                pososto_arnitikon := 100 * plithos_arnitikon div n;

                writeln(‘Το άθροισμα είναι: ‘, athroisma);

                writeln(‘Ο μέσος όρος είναι: ‘, mo);

writeln(‘Ο μικρότερος είναι: ‘, mikroteros);

writeln(‘Ο μεγαλύτερος είναι: ‘, megaliteros);

        writeln(‘Το πλήθος των θετικών είναι: ‘, plithos_thetikon);                

writeln(‘Το ποσοστό των αρνητικών είναι: ‘, pososto_arnitikon, ‘ %’);

        End.

                

        

  1. Με την εκκίνηση μιας συσκευής κινητού τηλεφώνου ζητείται ο κωδικός πρόσβασης (pin) και ο χρήστης έχει τρεις ευκαιρίες για την σωστή εισαγωγή του. Αν μετά την τρίτη φορά δεν εισαχθεί ο σωστός κωδικός τότε το τηλέφωνο κλειδώνει.  Να γραφεί το αντίστοιχο πρόγραμμα σε Pascal που εκτελεί το κινητό, ζητώντας μέχρι 3 φορές το σωστό pin. Αν αυτό εισαχθεί σωστά (σε μία από τις τρεις πρώτες προσπάθειες) να εμφανίζεται το μήνυμα ¨Καλώς ήρθες¨ διαφορετικά σε κάθε αποτυχημένη προσπάθεια εισαγωγής pin να εμφανίζει το μήνυμα “Λάθος pin, ξαναπροσπάθησε” και στο τέλος μετά από την τρίτη αποτυχημένη να εμφανίζεται το μήνυμα “Η συσκευή έχει κλειδώσει”. Για το παράδειγμα μας θεωρείστε ότι το pin έχει τιμή 2342.

Program epanalipseis_me_repeat_until;

Var

    pin, a                :   integer;

Begin

    a := 1;

    write('Δώσε το pin_');

    readln(pin);

    while (pin <> 2342) and (a <3) do

    begin

        write('Λάθος pin, ξαναπροσπάθησε, δώσε pin_' );

        readln(pin);

            a := a + 1;

    end;                                  {της while}

   

    if a < 3 then

        write('Καλώς ήρθες ')

    else

        write('Η συσκευή έχει κλειδώσει ');

    writeln;

End.                        {του κυρίως προγράμματος}

 

  1. Πόσες επαναλήψεις θα έχουμε από την εκτέλεση των παρακάτω εντολών;

arithmos:=0;

telos:=false;

while not telos do

begin

arithmos:=arithmos+2;

if arithmos > 100 then

telos:=true;

end;


  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας μία εντολή επανάληψης να υπολογίζει οποιαδήποτε (έστω τη Ν-οστή) δύναμη ενός οποιουδήποτε αριθμού (έστω Χ).  Το πρόγραμμα αρχικά θα ζητάει τον αριθμό Χ του οποίου θέλουμε να υπολογίζουμε τη δύναμη και στην συνέχεια θα ζητάει τη τιμή της Ν-οστής δύναμης που θέλουμε να υπολογίσουμε.

Δώσε μου τον αριθμό του οποίου τη δύναμη θέλεις να υπολογίσεις: 2 {ο χρήστη πληκτρολογεί μία

 τιμή}

Δώσε μου τη τιμή της δύναμης: 3 {ο χρήστη πληκτρολογεί μία τιμή}

Η 3η δύναμη του 2 είναι: 2*2*2 = 8 {εμφανίζεται η τιμή του προγράμματος}

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας την εντολή επανάληψης while (ή την repeat) να υπολογίζει και εμφανίζει τη προπαίδεια (μέχρι το 10) ενός οποιουδήποτε αριθμού (έστω Ν) αριθμού. Το πρόγραμμα αρχικά να ζητάει την εισαγωγή από το πληκτρολόγιο του αριθμού (Ν) του οποίου την προπαίδεια θέλουμε να υπολογίσουμε και στην συνέχεια να υπολογίζει και να εμφανίζει τα αποτελέσματα των πολλαπλασιασμών του με τους αριθμούς από το 1 έως το 10.

Δώσε μου τον αριθμό του οποίου θέλεις να υπολογίσεις τη προπαίδεια: 5 {ο χρήστη

πληκτρολογεί μία τιμή}

5 Χ 1 = 5

            …                                {εμφανίζεται η τιμή του προγράμματος}

5 Χ 9 = 45

5 Χ 10 = 50

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας την εντολή επανάληψης while (ή την repeat) να εμφανίζει τους ενδιάμεσους χαρακτήρες μεταξύ δύο άλλων οποιονδήποτε χαρακτήρων (π.χ. μεταξύ του α και του ε υπάρχουν οι χαρακτήρες β, γ, δ). Αρχικά το πρόγραμμα να ζητάει την εισαγωγή από το πληκτρολόγιο των δύο χαρακτήρων (α και ε) και στην συνέχεια να εμφανίζει τους ενδιάμεσους τους.

Δώσε μου τον πρώτο χαρακτήρα: α {ο χρήστη πληκτρολογεί μία τιμή}

Δώσε μου τον δεύτερο χαρακτήρα: ε {ο χρήστη πληκτρολογεί μία τιμή}

Μεταξύ του α και του ε μεσολαβούν οι β, γ, δ {εμφανίζεται η τιμή του προγράμματος}

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας την εντολή επανάληψης while (ή την repeat) να υπολογίζει τον μέσο όρο μιας ακολουθίας μεταβλητού πλήθους αριθμών (έστω Ν). Το πρόγραμμα να ζητάει την εισαγωγή των αριθμών από το πληκτρολόγιο μέχρι την στιγμή που ο χρήστης θα δώσει ως τιμή τον αριθμό μηδέν (0). Τέλος το πρόγραμμα να υπολογίζει και να εμφανίζει στην οθόνη τον μέσο όρο των αριθμών..

Δώσε μου τον 1ο αριθμό: 6 {ο χρήστη πληκτρολογεί μία τιμή}

Δώσε μου τον 2ο αριθμό: 17 {ο χρήστη πληκτρολογεί μία τιμή}

                            

Δώσε μου τον Νοστό αριθμό: 12 {ο χρήστη πληκτρολογεί μία τιμή}

Ο μέσος όρος των Ν αριθμών είναι : Χ {εμφανίζεται η τιμή του προγράμματος}

 

  1. Να γραφεί πρόγραμμα σε Pascal το οποίο χρησιμοποιώντας την εντολή επανάληψης while (ή την repeat) να προσομοιώνει τη λειτουργία ενός υπολογιστή τσέπης (κομπιουτεράκι). Δηλαδή να διαβάζει μια ακολουθία από αριθμητικές τιμές και αριθμητικούς τελεστές (+, -, *, /), να υπολογίζει την έκφραση και να εμφανίζει το αποτέλεσμα. Το πρόγραμμα να τερματίζει όταν για πράξη ο χρήστης δώσει το γράμμα “Τ”.

Δώσε μου δύο αριθμούς:  10 25

Δώσε μου τον τελεστή της πράξης ή Τ για τέλος του προγράμματος:  +

Το αποτέλεσμα είναι: 35

Δώσε μου δύο αριθμούς:  7 2

Δώσε μου τον τελεστή της πράξης ή Τ για τέλος του προγράμματος:  Τ

Τέλος προγράμματος

 

  1. Να γραφεί πρόγραμμα σε Pascal το χρησιμοποιώντας την εντολή επανάληψης for να εμφανίζει τα παρακάτω σχήματα:

 *            *******

   ***            *****

  *****            ***

 *******               *

  *****            ***

   ***            *****

         *            *******

  1. Μετέτρεψε το παρακάτω τμήμα αλγορίθμου σε εντολές της γλώσσας Pascal.

α:=4

β:=-3

Εφόσον β<=0 επανάλαβε

   β:=β+1

   α:=α+β-1

Τέλος

Εμφάνισε α

Εμφάνισε β

 

------------------------------------------------------------------------------------------------------------------------------------

Τις παρακάτω ασκήσεις τις βρήκα στο στέκι των πληροφορικών. Δυστυχώς δεν συγκράτησα το όνομα της συναδέλφου για να κάνω αναφορά…

 

  1. Να σχηματίσετε τον πίνακα τιμών του παρακάτω τμήματος προγράμματος αν δοθεί ως είσοδος το 2 και το 1 αντίστοιχα.

 

read(a, b);

while (a >= b) and (a div 10 < 1) do

   begin

   a := a * a;

   if (a div b > 2) then

            b := b + 1

   else

            a := a + 1

   end

write(a, b);

 

  1. Γράψτε αλγόριθμο ο οποίος διαβάζει αριθμούς από το πληκτρολόγιο μέχρι να δοθεί ως είσοδος ο αριθμός 0. Ο αλγόριθμος στη συνέχεια εμφανίζει το άθροισμα των αριθμών που διάβασε, το πλήθος τους, καθώς και το ποσοστό των αρνητικών αριθμών.

 

  1. Έχετε πάει στις εκπτώσεις βόλτα στα μαγαζιά, έχοντας 200€ στο πορτοφόλι σας. Γράψτε αλγόριθμο ο οποίος διαβάζει την τιμή του προϊόντος που θέλετε να αγοράσετε και την έκπτωση που του αντιστοιχεί και αφαιρεί από το ποσό που έχετε τη συνολική τιμή. Ο αλγόριθμος σταματά όταν τελειώσουν τα χρήματα ή όταν έχετε αγοράσει 10 προϊόντα.

 

  1. Τι θα εμφανίσει το παρακάτω τμήμα προγράμματος;

 

a := 6;

b := 11;

REPEAT

  c := (a + b) div 2;

  if (c > a) then

begin

a := c – a;

            b := b – c

   end

else

   begin

            a := 3 + a – c;

            b := c – b

   end;

   posotita := c + a * b

UNTIL (posotita < 0)

write(a, b, c);

 

  1. Γράψτε αλγόριθμο και λογικό διάγραμμα που ζητά από το χρήστη να δώσει δύο θετικούς αριθμούς. Ο αλγόριθμος πρέπει να ελέγχει αν κάθε αριθμός είναι θετικός, διαφορετικά ζητά ξανά από το χρήστη να κάνει νέα εισαγωγή ώσπου να δώσει έγκυρους αριθμούς. Ο αλγόριθμος στη συνέχεια υπολογίζει και εμφανίζει τον μεγαλύτερο μεταξύ των δύο αριθμών.

 

  1. Ξαναγράψτε το τμήμα προγράμματος της άσκησης 16, χρησιμοποιώντας την εντολή REPEAT … UNTIL, ώστε να δίνει τα ίδια αποτελέσματα

 

  1. Ξαναγράψτε τον κώδικα της άσκησης 19, χρησιμοποιώντας την εντολή while, ώστε να δίνει το ίδιο αποτέλεσμα.

 

  1. Τι θα εμφανίσουν τα παρακάτω τμήματα προγράμματος;

a := 6;

b := 11;

FOR i:=1 TO 5 DO

   BEGIN

   a := a + 1;

   b := b – 1;

   writeln(a, b);

   END;

 

a := 6;

b := 11;

FOR i:=5 DOWNTO 1 DO

   BEGIN

   a := a + 1;

   b := b – 1;

   writeln(a, b);

   END;

FOR letter:=’A’ to ‘Z’ DO

   writeln(letter);

 

  1. Ξαναγράψτε την προηγούμενη άσκηση, χρησιμοποιώντας την εντολή while και την REPEAT … UNTIL.

 

  1. Ξαναγράψτε τα παρακάτω τμήματα προγραμμάτων, χρησιμοποιώντας την εντολή FOR, ώστε να δίνουν το ίδιο αποτέλεσμα.

arithmos := 1;

while arithmos < 6 do

   begin

writeln(arithmos);

            arithmos := arithmos + 1;

   end;

 

 

X := 0;

REPEAT

   Y := X DIV 2;

   Z := X DIV 3;

   IF (Z>0) THEN

            A := Z

   ELSE

            A := Y;

writeln(X, Y, Z, A);

   X := X + 1;

UNTIL (X>10)

 

  1. Γράψτε αλγόριθμο που διαβάζει 40 ακεραίους και βρίσκει το άθροισμά τους καθώς και το γινόμενό τους.

 

  1. Γράψτε αλγόριθμο που διαβάζει 37 ακεραίους και εμφανίζει το μεγαλύτερο καθώς και τον μικρότερο από τους αριθμούς που δόθηκαν.

  1. Γράψτε αλγόριθμο, ο οποίος για μια τάξη 24 μαθητών διαβάζει τα ονόματα των μαθητών και το μέσο όρο τους στο Α’ τετράμηνο και εμφανίζει τα ονόματα των μαθητών που πήραν άριστα (πάνω από 18.5) και εκείνων που πήραν καλά (πάνω από 15).

  1. Γράψτε αλγόριθμο, ο οποίος θα διαβάζει τα ονόματα και τις 3 επιδόσεις των 20 αθλητών της δισκοβολίας σε ένα παγκόσμιο πρωτάθλημα και θα εκτυπώνει το όνομα του αθλητή που πήρε το χρυσό μετάλλιο.

  1. Εταιρία Πληροφορικής πληρώνει μηνιαίες υπερωρίες στους 50 υπαλλήλους της σύμφωνα με τον πίνακα:

 

Υπερωρίες (ώρες)

Χρήματα (€) ανά υπερωρία

1 έως 3

7

4 έως 6

9

Πάνω από 7

10

 

Γράψτε αλγόριθμο που διαβάζει τις υπερωριακές ώρες του περασμένου μήνα για κάθε υπάλληλο της εταιρίας και εμφανίζει πόσα χρήματα δικαιούται. Να κάνετε και το αντίστοιχο λογικό διάγραμμα.

 

  1. Γράψτε πρόγραμμα, το οποίο να διαβάζει:

α. το πλήθος των εργατών μιας εταιρίας

β. πόσες είναι οι υποχρεωτικές ώρες εργασίας (κάθε επιπλέον ώρα είναι υπερωρία)

γ. την ωριαία αμοιβή

δ. την επιπλέον αμοιβή για κάθε υπερωριακή ώρα

ε. τις ώρες εργασία κάθε εργάτη το μήνα που πέρασε

Το πρόγραμμα στη συνέχεια υπολογίζει και εμφανίζει τα χρήματα που πήρε ο κάθε εργάτης τον περασμένο μήνα, καθώς και το σύνολο των χρημάτων που πήραν όλοι οι εργάτες. Να υλοποιήσετε και το αντίστοιχο λογικό διάγραμμα.

 

Θέματα Πανελλαδικών

2011 - ΘΕΜΑ Γ

Program Thema_C_2011;

Const

        pagio = 3;

Var

        onoma                                                        :         String;

        mo, xrewsi, sinoliki_xrewsi                :        Real;

        GB, a                                                        :        Integer;

Begin

for a := 1 to 50 do

begin

        write('Δώσε το όνομα του υπαλλήλου ');

        readln(onoma);

        write('Δώσε τον όγκο των GB ');

        readln(GB);

        case GB of

                0..2 : xrewsi := pagio + GB*10;

                3..6 : xrewsi := pagio + 2*10 + (GB-2)*2.5;

        else

                        xrewsi := pagio + 2*10 + 4*2.5 + (GB-6)*1.5;

        end; {της case}

        writeln('Ο υπάλληλος ', onoma, ' όνομα θα χρειωθεί: ', xrewsi:10:2);

        sinoliki_xrewsi := sinoliki_xrewsi + xrewsi;

end;        {της for }

        mo := sinoliki_xrewsi / 50;

        writeln('O μέσος όρος της χρέωσης είναι: ', mo:10:2);

End.