Ερωτήσεις

Ξεκίνησε από despoina, 07 Μαρ 2013, 02:13:56 ΜΜ

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

despoina

Γεια σας και πάλι!

1) Στις λύσεις του βιβλίου του Κοψίνη είδα ότι το γράψε "E_τριγώνου" είναι λογικό λάθος, ενώ το διάβασε "E_τριγώνου" είναι συντακτικό λάθος. Αυτό είναι σίγουρα σωστό;

2) Όσον αφορά την αναζήτηση, το σχολικό στη σελίδα 64 αναφέρει ότι αν κάποιο στοιχείο εμφανίζεται στον πίνακα περισσότερο από μία φορές, τότε ο αλγόριθμος πρέπει να τροποποιηθεί κατά το εξής: η μεταβλητή done είναι περιττή και η αναζήτηση συνεχίζεται μέχρι το τέλος του πίνακα ελέγχοντας με τη συνθήκη i<=n. Ο αλγόριθμος που μπορεί να εφαρμοστεί όμως στην περίπτωση αυτή (μη μοναδικά στοιχεία),  χρησιμοποιεί τη δομή επανάληψης Για αλλά και τη μεταβλητή done. Είναι δηλαδή ως εξής:

Αλγόριθμος Σειρ_αναζ
Δεδομένα //Α,Ν//
Διάβασε x
done<-- ψευδής
Για i από 1 μέχρι Ν
    Αν Α=x τότε
        Εμφάνισε i
        done<-- αληθής
    Τέλος_αν
Τέλος_επανάληψης
Αν done=ψευδής τότε
        Εμφάνισε "Δε βρέθηκε το στοιχείο", x
Τέλος_αν
Τέλος Σειρ_αναζ

Αν κάποιος μπορεί να με βοηθήσει, τον ευχαριστώ ιδιαίτερα!

nikolasmer

1. Δεν βλέπω κάποιο λάθος ούτε συντακτικό ούτε λογικό όπως το θέτεις. Βέβαια εξαρτάται και από ολόκληρη τη δομή της άσκησης. πχ το όνομα του αλγορίθμου/προγράμματος κλπ.
2. Χρειάζεται η δομή Για , για να σαρώσει ολόκληρο τον πίνακα. Η μεταβλητή done χρειάζεται για να εμφανίσεις κάποιο μήνυμα στη συνέχεια. Για παράδειγμα αν έχεις βρεί ενα στοιχείο ή οχι. Όπως το γράφεις είναι σωστό.
Μερεντίτης Νικόλαος
Πληροφορικός

despoina

Ναι αλλά γιατί το βιβλίο λέει ότι η done είναι περιττή;

Όσον αφορά το πρώτο ερώτημα, το ότι υπάρχει λάθος είναι σίγουρο γιατί στην άσκηση έλεγε αντιστοιχίστε .....και είχε λογικά ή συντακτικά λάθη!  :)

petrosp13

Η κύρια λειτουργία της done είναι να σταματήσει την επανάληψη όταν βρεθεί το ζητούμενο
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

despoina

Πέτρο εννοείς δηλαδή ότι ο αλγόριθμος που έγραψα είναι λανθασμένος;;;

P.Tsiotakis

#5
Παράθεση από: denia_k στις 07 Μαρ 2013, 02:13:56 ΜΜ
1) Στις λύσεις του βιβλίου του Κοψίνη είδα ότι το γράψε "E_τριγώνου" είναι λογικό λάθος, ενώ το διάβασε "E_τριγώνου" είναι συντακτικό λάθος. Αυτό είναι σίγουρα σωστό;

το Διάβασε "Ε_τριγώνου" είναι σαφέστατα συντακτικό, γιατί η σύνταξη της εντολής θέλει μετά το διάβασε μεταβλητή και όχι μήνυμα

το Γράψε "Ε_τριγώνου" μάλλον είναι λογικό (όντως θέλουμε και την παραπάνω κωδικοποίηση για να απαντήσουμε) γιατι δε θα τυπώσει την τιμή της μεταβλητής αλλά μήνυμα. Υποθέτω οτι ήθελε να τυπώσει το περιεχόμενο της μεταβλητής
φυσικά, αν θέλαμε να τυπώσουμε αυτό το μήνυμα δεν υπάρχει κανένα λάθος.
ΑΝ ΥΠΑΡΧΕΙ ΛΑΘΟΣ, τότε είναι λογικό

P.Tsiotakis

Παράθεση από: denia_k στις 07 Μαρ 2013, 02:13:56 ΜΜ
2) Όσον αφορά την αναζήτηση, το σχολικό στη σελίδα 64 αναφέρει ότι αν κάποιο στοιχείο εμφανίζεται στον πίνακα περισσότερο από μία φορές, τότε ο αλγόριθμος πρέπει να τροποποιηθεί κατά το εξής: η μεταβλητή done είναι περιττή και η αναζήτηση συνεχίζεται μέχρι το τέλος του πίνακα ελέγχοντας με τη συνθήκη i<=n. Ο αλγόριθμος που μπορεί να εφαρμοστεί όμως στην περίπτωση αυτή (μη μοναδικά στοιχεία),  χρησιμοποιεί τη δομή επανάληψης Για αλλά και τη μεταβλητή done. Είναι δηλαδή ως εξής:

Αλγόριθμος Σειρ_αναζ
Δεδομένα //Α,Ν//
Διάβασε x
done<-- ψευδής
Για i από 1 μέχρι Ν
    Αν Α=x τότε
        Εμφάνισε i
        done<-- αληθής
    Τέλος_αν
Τέλος_επανάληψης
Αν done=ψευδής τότε
        Εμφάνισε "Δε βρέθηκε το στοιχείο", x
Τέλος_αν
Τέλος Σειρ_αναζ

Δες σειριακή, παραλλαγή1 στο http://ptsiotakis.mysch.gr/old/aepp/aepp_theory3b.htm
στην ουσία το done είναι ο διακόπτης που σπάει το Για. Αν φύγει τότε έχεις δομή Για

nikolasmer

Παράθεση από: nikolasmer στις 07 Μαρ 2013, 02:27:37 ΜΜ
1. Δεν βλέπω κάποιο λάθος ούτε συντακτικό ούτε λογικό όπως το θέτεις. Βέβαια εξαρτάται και από ολόκληρη τη δομή της άσκησης. πχ το όνομα του αλγορίθμου/προγράμματος κλπ.
2. Χρειάζεται η δομή Για , για να σαρώσει ολόκληρο τον πίνακα. Η μεταβλητή done χρειάζεται για να εμφανίσεις κάποιο μήνυμα στη συνέχεια. Για παράδειγμα αν έχεις βρεί ενα στοιχείο ή οχι. Όπως το γράφεις είναι σωστό.

Ούτε καν πρόσεξα το Γράψε και Διάβασε μπροστά από το "Ε_Τριγώνου".
ΑΚΥΡΗ η απάντησή μου.
Ο κύριος Τσιωτάκης έδωσε τη σωστή ερμηνεία.
Μερεντίτης Νικόλαος
Πληροφορικός

petrosp13

Παράθεση από: denia_k στις 07 Μαρ 2013, 02:41:25 ΜΜ
Πέτρο εννοείς δηλαδή ότι ο αλγόριθμος που έγραψα είναι λανθασμένος;;;

Όχι, απλά σου εξήγησα γιατί η μεταβλητή done είναι περιττή όταν θέλουμε να κάνουμε αναζήτηση σε όλες τις θέσεις ενός πίνακα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

despoina

Ευχαριστώ πολύ όλους και ιδιαίτερα τον κύριο Τσιωτάκη!  :)