Ερώτηση σε ασκηση πινακα τιμών

Ξεκίνησε από Μαρια Κ., 03 Απρ 2006, 06:23:07 ΜΜ

« προηγούμενο - επόμενο »

Μαρια Κ.

Από θέματα προτεινόμενα των ΝΕΩΝ

Δίνεται
   s ← 2
   i ← 1
   Όσο ι<>8  επανέλαβε
       Αν (s mod 4= s) τότε
             s ← s + 2
       Αλλιώς
            Για j από 1 μέχρι i με_βήμα 2
                s ← s * j
            Τέλος_Επαναληψης
       Τέλος_αν
        Γράψε s
        i ← i * 2
  Τέλος_επανάληψης
Γράψε i , j

Τι τιμές θα εμφανιστούν κατά την εκτέλεση του αλγορίθμου;

Απάντηση: 4,4,12,8,5

Δεν χρειάζεται να σχηματισθεί ο πίνακας τιμών σε τέτοιου είδους ασκήσεις ή και έτσι θεωρείται σωστό;
Εγώ βρίσκω 4,4,12,8,3 μπορείτε να του ρίξετε μια ματιά μήπως κάνω εγώ λάθος. Ευχαριστώ.



graeep

Μαρία η απάντηση 4,4,12,8,5 είναι σωστή
Και γιατί το j είναι τειλικά 5;
Καταρχήν θυμίζω ότι το i σε αυτό το στάδιο εκτέλεσης είναι 4
Η επανάληψη
----------------------------------------
Για j από 1 μέχρι i με_βήμα 2
                s ← s * j
Τέλος_Επαναληψης
-----------------------------------------
θα διακοπεί μόνο όταν το j γίνει μεγαλύτερο του 4. Αυτό σημαίνει ότι τελικά η τιμή του j θα είναι 1+2+2=5

Σε τέτοιες ασκήσεις δεν απαιτείται πίνακας τιμών, αφού μας αφορούν μόνο οι μεταβλητές που εμφανίζονται στην "οθόνη"
Θα ήταν καλό όμως να φτιάξεις ένα πινακάκι με όνομα κάθε στήλης το όνομα της μεταβλητής που σε ενδιαφέρει. Εκεί θα γράφεις μόνο τις τιμές των μεταβλητών, όταν αυτές είναι έτοιμες προς εμφάνιση.
Μήπως οι αλγόριθμοι που στηρίζονται στη μηχανή Turing, μας εγκλωβίζουν σε τοπικό μέγιστο στη συνάρτηση της εξέλιξης της Πληροφορικής; ;)

Christos

Ο αλγόριθμος εμφανίζει 4,4,12,8,5.
Η διαφορά της δικής σου εκτέλεσης είναι ότι στην τελευταία επανάληψη(i=4), στον εσωτερικό βρόχο

    Για j από 1 μέχρι i με_βήμα 2
               s ← s * j
           Τέλος_Επαναληψης

το j θεωρείς οτι παίρνει τελευταία τιμή το 3, ενώ στην πραγματικότητα γίνεται αύξηση του i σε 5.

Δεν χρειάζεται να παραθέσεις και τον πίνακα τιμών αφού η άσκηση ζητάει μόνο τι εμφανίζει ο αλγόριθμος.