Παρασκευή 7 Νοεμβρίου 2014

2η ΕΡΓΑΣΙΑ ΣΤΗ ΔΟΜΗ ΕΠΙΛΟΓΗΣ 1/11/2014

            Άσκηση 1 - το δίλημμα του φυλακισμένου
Το πρόβλημα αυτό είναι γνωστό ως δίλημμα του φυλακισμένου. Η αστυνομία έχει συλλάβει δύο συνεργούς σε αδίκημα. Στον καθένα προτείνεται ο εξής συμβιβασμός:
• Ομολόγησε και πρόδωσε τον συνεργάτη σου όσο αυτός δεν έχει ομολογήσει ακόμη. Αν συμβεί αυτό εσύ θα αφεθείς ελεύθερος, ενώ ο συνεργός σου θα φυλακιστεί για 20 χρόνια.
• Αν ομολογήσει και σε προδώσει αυτός τότε θα αφεθεί αυτός ελεύθερος και θα φυλακιστείς εσύ για 20 χρόνια.
• Αν ομολογήσετε και προδώσετε και οι δύο ταυτόχρονα, τότε θα φυλακιστείτε και οι δύο για 5 χρόνια ο καθένας.
• Αν δεν ομολογήσει κανείς από τους δύο τότε, λόγω έλλειψης στοιχείων, θα καταδικαστείτε και οι δύο για ελαφρύτερα αδικήματα, σε 1 χρόνο ο καθένας.
Το πρόβλημα είναι τι πρέπει να κάνει ο κάθε φυλακισμένος, χωρίς να γνωρίζει τι θα κάνει ο άλλος. Αν μπορούσαν να συνεννοηθούν θα προτιμούσαν να μην προδώσει κανένας και να γλιτώσουν με μικρότερη ποινή. Να γραφεί αλγόριθμος σε ψευδογλώσσα ο οποίος να διαβάζει αν ομολόγησαν ή όχι οι δύο συνεργοί ρωτώντας για τον καθένα χωριστά και έπειτα να εμφανίζει τα χρόνια φυλακής που καταδικάστηκε ο καθένας

Αλγόριθμος ΑΣΚ1
Εμφάνισε 'ομολόγησε ο πρώτος; ναι ή όχι;'
            Διάβασε απ1
            Εμφάνισε 'ομολόγησε ο δεύτερος; ναι ή όχι;'
            Διάβασε απ2
            Αν απ1='ναι' και απ2='ναι' τότε
                  ποινή1  5
                  ποινή2  5
            αλλιώς_αν απ1='ναι' και απ2='όχι' τότε
                 ποινή1  0
                 ποινή2  20
            αλλιώς_αν απ1='όχι' και απ2='ναι' τότε
                ποινή1  20
                ποινή2  0
           αλλιώς
                ποινή1  1
                ποινή2  1
          Τέλος_αν
          Εμφάνισε 'ο πρώτος: ' , ποινή1
          Εμφάνισε 'ο δεύτερος: ' , ποινή2
          Τέλος ΑΣΚ1



            Άσκηση 2 - ελάχιστο/μέγιστο
Να γραφεί αλγόριθμος που να ζητά διαδοχικά τρεις αριθμούς και στο τέλος να εμφανίζει τον μικρότερο τους.

Αλγόριθμος ΑΣΚ2
             Εμφάνισε 'δώσε τον πρώτο αριθμό'
             Διάβασε αρ1
             Εμφάνισε 'δώσε τον δεύτερο αριθμό'
             Διάβασε αρ2
             Εμφάνισε 'δώσε τον τρίτο αριθμό'
             Διάβασε αρ3
             ελαχ  αρ1
            Αν αρ2 < ελαχ τότε
                  ελαχ  αρ2
            Τέλος_αν
            Αν αρ3 < ελαχ τότε
                  ελαχ  αρ3
            Τέλος_αν
            Εμφάνισε ελαχ
            Τέλος ΑΣΚ2




Άσκηση 3 - πρωτοβάθμια εξίσωση

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

           Αλγόριθμος ΑΣΚ3
            Εμφάνισε 'δώσε τους α και β'
            Διάβασε α,β
            Αν α  0 τότε
                   χ  (-1)*β/α
                  Εμφάνισε 'μια λύση: ' , χ
           Τέλος_αν
           Αν α = 0 και β  0 τότε
                 Εμφάνισε 'αδύνατη'
           Τέλος_αν
           Αν α = 0 και β = 0 τότε
                 Εμφάνισε 'αόριστη'
           Τέλος_αν
           Τέλος ΑΣΚ3

                     ή

           Αλγόριθμος ΑΣΚ3
           Εμφάνισε 'δώσε τους α και β'
           Διάβασε α,β
           Αν α  0 τότε
                  χ  (-1)*β/α
                  Εμφάνισε 'μια λύση: ' , χ
          αλλιώς
                  Αν β  0 τότε
                        Εμφάνισε 'αδύνατη'
                  αλλιώς
                        Εμφάνισε 'αόριστη'
                  Τέλος_αν
         Τέλος_αν
         Τέλος ΑΣΚ3




Άσκηση 4
Σε μια εταιρία, οι υπάλληλοι παίρνουν μηνιαίο οικογενειακό επίδομα ανάλογα με τον αριθμό των παιδιών που έχουν, όπως παρακάτω:
·         Για 1 παιδί , επίδομα 30 €
·         Για 2 παιδιά , επίδομα 60 €
·         Για 3 παιδιά , επίδομα 120 €
Άνω των 3 παιδιών , επίδομα 120 €, προσθέτοντας 120 € για κάθε επιπλέον παιδί άνω των τριών.
Να γίνει αλγόριθμος που θα
Α) διαβάζει το βασικό μισθό και τον αριθμό των παιδιών ενός υπαλλήλου,
Β) υπολογίζει το επίδομα που θα καταβληθεί και

Γ) εμφανίζει τις μηνιαίες αποδοχές το υπαλλήλου.


Αλγόριθμος ΑΣΚ4
             Εμφάνισε 'Δώσε βασικό μισθό και αριθμό παιδιών ενός υπαλλήλου'
             Διάβασε βασ , π
             Αν π = 0 τότε
                   επιδ  0
             αλλιώς_αν π = 1 τότε
                   επιδ  30
             αλλιώς_αν π = 2 τότε
                   επιδ  60
             αλλιώς_αν π = 3 τότε
                   επιδ  120
             αλλιώς
                   επιδ  120 + (π - 3)*120
             Τέλος_αν
             Εμφάνισε
 βασ + επιδ
             Τέλος ΑΣΚ4




Άσκηση 5
Σύμφωνα με τα όσα ισχύουν σε μία τράπεζα  κάποιος πελάτης μπορεί να κάνει μια ανάληψη από οποιοδήποτε ταμείο της , αλλά αυτή η ανάληψη χρεώνει τον πελάτη σύμφωνα με τον παρακάτω πίνακα.
 Ποσό ανάληψης    
    % χρέωση του ποσού ανάληψης  
Μέχρι 300 €
α%
   Από 301 μέχρι  και 1000 €  
β%
Πάνω από 1000€
α%+β%
Η χρέωση είναι κλιμακωτή και επίσης η χρέωση αυτή δεν πρέπει να είναι μικρότερη από 2 € και ούτε μεγαλύτερη από 5 €.
Να αναπτύξετε αλγόριθμο που
Α) να διαβάζει το Όνομα του πελάτη , το ποσό ανάληψης και τα ποσοστά χρέωσης α και β του ποσού ανάληψης (θεωρείστε ότι τα ποσοστά α και β είναι εκφρασμένα σε % )
Β) Να Διαβάζει το Υπόλοιπο του λογαριασμού του πελάτη (Υ)                              
Γ) Να υπολογίζει και να εμφανίζεται η χρέωση του ποσού ανάληψης                                    
Δ) Να ελέγχει αν μπορεί να πραγματοποιηθεί η συναλλαγή και να εκτυπώνει το υπόλοιπο του λογαριασμού του πελάτη σε περίπτωση που μπορεί να πραγματοποιηθεί η συναλλαγή , αλλιώς να εμφανίζεται μήνυμα αδυναμίας της συναλλαγής.


Αλγόριθμος ΑΣΚ5
             Εκτύπωσε 'Δώσε όνομα πελάτη ,ποσό ανάληψης, τα ποσοστά χρέωσης α και β του                & ποσού ανάληψης και το υπόλοιπο'
             Διάβασε ον , ποσό, α, β, Υ
             Αν ποσό  300 τότε
                    χρ  α/100*ποσό
             αλλιώς_αν ποσό  1000 τότε
                    χρ  300*α/100 + (ποσό - 300)*β/100
             αλλιώς
                    χρ  300*α/100 + 700*β/100 + (ποσό - 1000)*(α + β)/100
             Τέλος_αν 

Αν χρ < 2 τότε
                   χρ  2
             Τέλος_αν
             Αν χρ > 5 τότε
                   χρ  5
             Τέλος_αν 

             Εκτύπωσε 'χρέωση λογαριασμού: ', χρ
             Αν Υ  ποσό + χρ τότε
                   Υ  Υ - (ποσό + χρ)
                   Εκτύπωσε Υ
             αλλιώς
                   Εκτύπωσε 'Αδύνατη η συναλλαγή'
             Τέλος_αν
             Τέλος ΑΣΚ5



Άσκηση 6
Η ασφάλεια ενός συνθηματικού (password) εξαρτάται από πολλούς παράγοντες, όπως για παράδειγμα το μήκος του, η ύπαρξη πολλών ειδών χαρακτήρων και άλλους.
Ένα συνθηματικό μπορεί να βαθμολογηθεί για την ασφάλεια του ως εξής: Ο χρήστης θα καλείται να απαντά σε ερωτήσεις σχετικά με το συνθηματικό του και ανάλογα με τις απαντήσεις του, θα συγκεντρώνει κάποιους βαθμούς. Το συνθηματικό δεν πρέπει να φανερώνεται, ώστε να μην υπάρχει κίνδυνος υποκλοπής.
1.        Πλήθος χαρακτήρων
  • Τα συνθηματικά με πλήθος χαρακτήρων πάνω από 10 χαρακτήρες θα βαθμολογούνται με 3 πόντους.
  • Τα συνθηματικά με πλήθος χαρακτήρων από 9 έως και 10 θα βαθμολογούνται με 2 πόντους.
  • Τα συνθηματικά με πλήθος χαρακτήρων από 6 έως και 8 με 1 πόντο.
2.        Σύνθεση συνθηματικού
  • Όσα συνθηματικά περιέχουν και αριθμούς και γράμματα θα παίρνουν 3 επιπλέον πόντους.
  • Όσα συνθηματικά περιέχουν και κεφαλαίους και πεζούς χαρακτήρες θα παίρνουν 2 επιπλέον πόντους.
  • Όσα συνθηματικά περιέχουν και ειδικούς χαρακτήρες (όπως πχ. #,!) θα παίρνουν 3 επιπλέον πόντους.
Να γραφεί αλγόριθμος ο οποίος:
a.            θα διαβάζει, για κάθε ένα από δύο συνθηματικά:
a1)     το πλήθος των χαρακτήρων
a2)     μία απάντηση (ΝΑΙ/ΟΧΙ) για το αν περιέχει αριθμούς και γράμματα.
a3)     μία απάντηση (ΝΑΙ/ΟΧΙ) για το αν περιέχει κεφαλαίους και πεζούς χαρακτήρες.
a4)     μία απάντηση (ΝΑΙ/ΟΧΙ) για το αν περιέχει ειδικούς χαρακτήρες (όπως π.χ. #, ! )
b.            θα υπολογίζει και θα εμφανίζει τη βαθμολογία των δύο συνθηματικών.
c.             θα συγκρίνει την ασφάλεια  των δύο συνθηματικών με βάση τη βαθμολογία που εξάγεται από την παραπάνω διαδικασία. Πιο ασφαλές είναι εκείνο το συνθηματικό που συγκεντρώνει περισσότερους βαθμούς. Σε περίπτωση ισοβαθμίας, πιο ασφαλές θεωρείται το συνθηματικό που περιέχει και ειδικούς χαρακτήρες, έπειτα αυτό που περιέχει κεφαλαίους και πεζούς, έπειτα αυτό που περιέχει αριθμούς και γράμματα.

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


Αλγόριθμος ΑΣΚ6
             Εμφάνισε 'δώσε πλήθος χαρακτήρων του 1ου και του 2ου pass'
             Διάβασε πλ1, πλ2
             Αν πλ1 < 6 τότε
                   βαθ1  0
            αλλιώς_αν πλ1  8 τότε
                   βαθ1  1
            αλλιώς_αν πλ1  10 τότε
                   βαθ1  2
            αλλιώς
                   βαθ1  3
            Τέλος_αν
            Αν πλ2 < 6 τότε
                  βαθ2  0
           αλλιώς_αν πλ2  8 τότε
                  βαθ2  1
          αλλιώς_αν πλ2  10 τότε
                  βαθ1  2
          αλλιώς
                  βαθ1  3
          Τέλος_αν
          Εμφάνισε 'περιέχει αριθμούς και γράμματα το 1ο;ναι ή όχι;'
          Διάβασε απ1
          Αν απ1 = 'ναι' τότε
                βαθ1  βαθ1 + 3
          Τέλος_αν
          Εμφάνισε 'περιέχει αριθμούς και γράμματα το 2ο;ναι ή όχι;'
          Διάβασε απ2
          Αν απ2 = 'ναι' τότε
                βαθ2  βαθ2 + 3
          Τέλος_αν
          Εμφάνισε 'περιέχει κεφαλαία και πεζά το 1ο;ναι ή όχι;'
          Διάβασε απ1
          Αν απ1 = 'ναι' τότε
                βαθ1  βαθ1 + 2
          Τέλος_αν
          Εμφάνισε 'περιέχει κεφαλαία και πεζά το 2ο;ναι ή όχι;'
         Διάβασε απ2
         Αν απ2 = 'ναι' τότε
               βαθ2  βαθ2 + 2
         Τέλος_αν
         Εμφάνισε 'περιέχει ειδικούς χαρακτήρες (όπως π.χ. #, ! )το 1ο;ναι ή όχι;'
         Διάβασε απ1
         Αν απ1 = 'ναι' τότε
               βαθ1  βαθ1 + 3
         Τέλος_αν
         Εμφάνισε 'περιέχει ειδικούς χαρακτήρες (όπως π.χ. #, ! )το 2ο;ναι ή όχι;'
         Διάβασε απ2
         Αν απ2 = 'ναι' τότε
               βαθ2  βαθ2 + 3
        Τέλος_αν
        Εμφάνισε βαθ1, βαθ2
        Αν βαθ1 = βαθ2 τότε
              Εμφάνισε 'ίδιας ασφάλειας'
        αλλιώς_αν βαθ1 > βαθ2 τότε
              Εμφάνισε 'ασφαλέστερο το 1ο'
        αλλιώς
              Εμφάνισε 'ασφαλέστερο το 2ο'
        Τέλος_αν
        Τέλος ΑΣΚ6

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου