PiDefiner
Δραστήριο μέλος
Για ι από 1 μέχρι 5
Αντιμετάθεσε Α[ι],Α[Α[ι]]
τέλος_επανάληψης
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
δεν νομιζω να εδιναν γιατι ενας φιλοσ μου που το εκανε με πινακεσ δεν του το πηραν για σωστο
Ναι, και σε μένα δεν βγάζει νόημα. Και εγώ φέτος που το έγραψα σαν διαγώνισμα, αρχικά το έκανα με πίνακα (παρ' ότι η φωνή της καθηγήτριας μου αντηχούσε στο κεφάλι μου "Αν δεν ξέρουμε το μέγεθος του πίνακα, ή έστω μέχρι πόσα στοιχεία μπορεί να έχει, δεν τον δημιουργούμε" ), γιατί δεν μπορούσα να σκεφτώ κάτι άλλο. Μετά που το ξαναείδα και το "τρικ", το έσβησα και το έκανα χωρίς πίνακα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Γενικά, δεν έχουν πει ποτέ νομίζω "χωρίς την χρήση πίνακα".
---
Τρανταχτό παράδειγμα πέρσυ, που πολλά παιδιά έλυσαν το Γ θέμα με πίνακα, την έβγαλαν αμέσως και πήραν ακόμη και όλα τα μόρια, ενώ τα παιδιά που το έκαναν χωρίς πίνακα έπρεπε να σκεφτούν τέχνασμα για να υπολογίσουν το Γ4, κάτι που απαιτούσε καθαρότητα σκέψης, πονηράδα και χρόνο, με αποτέλεσμα πολλά από αυτά να χάσουν τα 6 μοριάκια του Γ4.
Το σωστό είναι να σκέφτεσαι αν μπορεί να λυθεί χωρίς πίνακα. Αν ναι, τότε λύνεις χωρίς πίνακα. Αν όχι, τότε το λύνεις με πίνακα.
Σοβαρά έδιναν μόρια πέρυσι αν το έλυνες με πίνακα;
Εμάς μας απαγόρευσε ρητά να χρησιμοποιήσουμε πίνακα. Αφού δεν γνωρίζαμε τον αριθμό τον επαναλήψεων.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Το γνωρίζω αυτό το κομμάτι της θεωρίας και ευχαριστώ!
Αλλά εξακολουθώ να μη καταλαβαίνω τις περιπτώσεις που δε χρειάζεται πίνακας.Ίσως επειδή εδώ και μισό χρόνο λύνω μόνο ασκήσεις με πίνακες και έχω ξεχάσει τα προηγούμενα.
Anyway,ελπίζω να βάλουνε άσκηση με πίνακα
Είναι πολύ απλό. Απλά ακολούθησε το διάγραμμα ροής για τη δημιουργία του οποίου επιστράτευσα κάθε γνώση και τεχνική που έμαθα φέτος.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Αυτό το γαμημένο κομμάτι με το χρόνο εκτέλεσης (έπεσε επαναληπτικές πέρυσι) το έχετε μάθει;
Εν τω μεταξύ όταν το δα στα θέματα λέω τι ναι τούτο, δε παιζει να ναι στην ύλη, δεν ειχα καν συνειδητοποιήσει την ύπαρξη του.
Λες αυτό με τη στοίβα όταν εκτελείται υποπρόγραμμα; Εγώ το μόνο που έχω μάθει είναι ότι η αμέσως επόμενη εντολή του κ.π. μπαίνει σε στοίβα και "περιμένει" μέχρι να τελειώσει το υποπρόγραμμα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Όταν καλώ μέσω διαδικασίας μία συνάρτηση τότε μπορεί αυτή να πάρει παράμετρο που δεν υπάρχει στη διαδικασία αλλά στο κύριο ή πρέπει υποχρεωτικά να την περάσω και στη διαδικασία ώστε να περάσει στη συνάρτηση;
Αν κατάλαβα καλά αυτό που λες, τότε το δεύτερο. Τα υποπρογράμματα να θυμάσαι ότι δεν έχουν καμία επικοινωνία μεταξύ τους, πέρα των παραμέτρων. Όπως δεν μπορείς να χρησιμοποιήσεις μια μεταβλητή του κύριου προγράμματος στη διαδικασία, αν αυτή δεν έχει περάσει με παράμετρο, έτσι δεν μπορείς να κάνεις και το ανάλογο με τη συνάρτηση.
Επίσης, εφ' όσον καλείς συνάρτηση μέσω διαδικασίας, να θυμάσαι ότι η συνάρτηση θα επιστρέψει μόνο μια τιμή (με το όνομά της), και οι παράμετροι που έχεις εισάγει στη συνάρτηση, δεν θα επιστρέψουν αλλαγμένοι στη διαδικασία (όπως γίνεται, δηλαδή, όταν επιστρέφονται οι παράμετροι από τη διαδικασία). Ελπίζω να σε κάλυψα.
Μια ερώτηση και εγώ, με αφορμή τα παραπάνω. Μπορώ να καλέσω διαδικασία μέσω συνάρτησης; Απ' όσο θυμάμαι η καθηγήτρια μου μου είπε πως κανονικά γίνεται, αλλά εμείς δεν θα το χρησιμοποιούμε. Ίσως να κάνω και λάθος, δεν θυμάμαι.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Δεν είναι απαραίτητο να είναι στο πρόχειρο.
Μπορείς να φτιάξεις πίνακα τιμών. Απλά, θα πρέπει μετά τον πίνακα τιμών να γραψεις Οθόνη τάδε τάδε τάδε.
Ε, ναι, δεν φαντάζομαι πως θα βαθμολογούσε κανεις αρνητικά επειδή έκανες πίνακα που δεν ζητούσε. Αλλά είναι εξίσου περιττό με το να δικαιολογήσεις ένα Σωστό-Λάθος.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Απλό αυτό που λέτε, δεν μου πέρασε καν από το μυαλό
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Αναφέρομαι στο Γ Θέμα ΟΕΦΕ 2012.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Επίσης, αν δεν είναι σίγουρο ότι ο αριθμός που διαβάζεις είναι μεταξύ των ορίων του πίνακα θα πρέπει να κάνεις μια παραλλαγή της σειριακής αναζήτησης.
Δεν μπορώ να σου γράψω αλγόριθμο αν δεν ξέρω λεπτομέρειες. Ο πίνακας είναι ταξινομημένος;
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Καλό είναι να ξέρεις τη θεωρία πολύ κοντά στο βιβλίο.
Προσωπικά, όταν έδινα το 2011, είχαν βάλει 12 μόρια καθαρή θεωρία.
Επειδή εγώ σιχαινόμουν τη θεωρία, τα ήξερα όλα εμπειρικά και σίγουρα κάποια πράγματα περιληπτικά από το βιβλίο.
Ο ένας μου έκοψε 2 μόρια (λογικά) ενώ ο άλλος 6 μόρια. Και έτσι βγήκε ένα 19,2
Δεν αξίζει να χάνεις μόρια από θεωρία!Γιαυτό ακολουθείς το βιβλίο.
Παντού θα βρεθούν οι μη καλοθελητές να σε πετσοκόψουν!
Και πέρυσι μπήκε μπόλικη θεωρία. Εγώ δεν την πάω καθόλου.
Αν και την έχω βγάλει πολλές φορές, πάλι όταν είναι για ανάπτυξη δεν μπορώ να τα θυμάμαι 100% όπως πρέπει. Επίσης ώρες-ώρες πέφτουν άκυρα κομμάτια, που αν δεν είχα δει από πριν δεν θα τα ήξερα καν (π.χ. ποιοι κανόνες πρέπει να τηρούνται κατά την χρήση εμφωλευμένων βρόχων ή να περιγράψεις τη λειτουργία της εντολής εκχώρησης)
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Φώτη Λαζαρινη έχω. Τα έχει ελαφρώς διαφορετικά διατυπωμένα
Τότε δεν ξέρω να σου πω.
Πάντως, απ' όσο γνωρίζω η θεωρία (εκτός από τους ορισμούς, φυσικά) δεν εξετάζεται τόσο αυστηρά ως προς τη διατύπωση, αρκεί να έχεις τα σημεία που είναι απαραίτητα (έτσι τουλάχιστον έχω καταλάβει από τα διαγωνίσματα που έχω γράψει μέχρι τώρα). Φαντάζομαι πως δεν θα υπάρχει πρόβλημα, αλλά καλύτερα περίμενε κάποιον που ξέρει σίγουρα να σου απαντήσει.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Πειράζει αν μάθω τη θεωρία από κάποιο βοήθημα και όχι από το σχολικό?
Ποιο βοήθημα έχεις; Εγώ του Γιώργου Καρκαμάνη που έχω τα έχει ολόιδια με το βιβλίο, αλλά χωρίς τα άχρηστα. Τα έχεις συγκρίνει καθόλου αυτά που γράφει με του βιβλίου;
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Το Γ ερώτημα θέλει λίγη περισσότερη σκέψη οπότε αν βρω χρόνο θα το κοιτάξω
Ωστόσο την λύση σου δεν την καταλαβαίνω ιδιαίτερα
1.Το παρακάτω κομμάτι θα ήταν πιο κομψό να το κάνεις δίχως χρήση έξτρα μεταβλητής.
Δηλαδή, αντί κάθε φορά να μηδενίζεις την αθρ, να γράφεις ΣΒ[ι]] <- 0
2.Επίσης για λόγους κομψότητας, το ι θα μπορούσε να ξεκινούσε από το 2 αφού το πρώτο στοιχείο το έχεις ήδη εκχωρήσει στην μεταβλητή
3.Ακριβώς, κάτω από το προηγούμενο quote γράφεις αυτό ενώ ο πίνακας λέγεται ΟΝΟΜΑΤΑ
4.Ομοίως κι εδώ, μπορείς απλά να γράψεις "Για ι από 1 μέχρι κ". Λιγότερες γραμμές κώδικα, πιο κατανοητό και λιγότερη μνήμη.
5.Στο κομμάτι αυτό, νομίζω πως έπρεπε να γράψεις "θμεγ← ΜΕΓΘ[κ]" γιατί οι αθλητές με το καλύτερο σκορ είναι διάσπαρτοι στον πίνακα. Ενώ με τον τρόπο σου είναι σαν να είναι στις πρώτες (πλ) θέσεις.
6.Κι εδώ το ίδιο με την ονομασία του πίνακα
Θα προσθέσω σχόλια όταν μπορέσω. Ίσως σήμερα το βράδυ, ίσως σε μερικές μέρες, οπότε με βολέψει. Για να να απαντήσω, όμως σε αυτά που έγραψες, αριθμώ τις παρατηρήσεις σου.
1. Γνωρίζω τον τρόπο που λες, αλλά γενικά τόσο στο σχολείο όσο και στο φροντιστήριο μας έχουν δείξει και τους δύο και προτιμώ αυτόν. Υπάρχει πρόβλημα αν τον χρησιμοποιώ;
2. Ναι, αυτό το ξεχνάω συχνά. Και απ' όσο γνωρίζω, μπορώ να χάσω μονάδες για την μια παραπάνω επανάληψη.
3. Απροσεξία μου.
4. Επειδή τα σκεφτόμουν εκείνη την ώρα, μάλλον θα είχα στο μυαλό μου ότι θα το χρησιμοποιήσω κάπως αλλιώς. Πάντως μ' αρέσει (και με βοηθάει στην κατανόηση) να χρησιμοποιώ διαφορετικό μετρητή για κάθε πίνακα με διαφορετικές θέσεις - όχι ότι σε αυτήν την άσκηση το ασχολήθηκα ιδιαίτερα με αυτό.
5. Έχεις δίκιο. Μου πήρε ώρα να καταλάβω ποιο είναι το λάθος, αλλά ναι, το κ είναι άσχετος αριθμός για τον πίνακα με τα ονόματα.
Edit: Προσέθεσα σχόλια μέχρι το β ερώτημα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Αν χρειαστεί, προσθέτω και εξηγήσεις σε κάθε τμήμα.
Αλγόριθμος ενόργανη
Για ι από 1 μέχρι 60 ![B]Διαβάζω τους πίνακες[/B]
Διάβασε ΟΝΟΜΑΤΑ[ι], ΕΘΝΟΣ[ι]
Για ξ από 1 μέχρι 6
Διάβασε ΒΑΘΜΟΙ[ι,ξ]
τέλος_επανάληψης
τέλος_επανάληψης
Για ξ από 1 μέχρι 6
Διάβασε ΑΓΩΝ[ξ]
τέλος_επανάληψης
Για ι από 1 μέχρι 60 ![B]Άθροισμα βαθμολογιών όλων των αθλημάτων για κάθε έναν αθλητή[/B]
αθρ←0
Για ξ από 1 μέχρι 6
αθρ←αθρ+ΒΑΘΜΟΙ[ι,ξ]
τέλος_επανάληψης
ΣΒ[ι]←αθρ
τέλος_επανάληψης
μεγ←ΣΒ[1] ![B]Αναζήτηση μεγίστου στον πίνακα με τις συνολικές βαθμολογίες[/B]
θ←1
Για ι από 1 μέχρι 60
Αν ΣΒ[ι]>μεγ τότε
μεγ←ΣΒ[ι]
θ←ι
τέλος_αν
τέλος_επανάληψης
Εμφάνισε ΟΝΟΜΑΤΑ[θ] ![B]Εδώ τελειώνει το α ερώτημα[/B]
Για ξ από 1 μέχρι 6 ![B]Αρχίζει το β ερώτημα. Εξωτερικό "Για" ώστε να περάσω από όλα τα αθλήματα[/B]
μεγ←ΒΑΘΜΟΙ[1,ξ] ![B]Εύρεση μεγίστου σε κάθε στήλη/άθλημα[/B]
Για ι από 2 μέχρι 60
Αν ΒΑΘΜΟΙ[ι,ξ]>μεγ τότε
μεγ←ΒΑΘΜΟΙ[ι,ξ]
τέλος_αν
τέλος_επανάληψης
κ←1 ![B]Μετρητής για τις θέσεις του πίνακα ΜΕΓΘ, στον οποίο θα είναι αποθηκευμένες οι θέσεις των αθλητών οι οποίοι έχουν βαθμολογία ίση με τη μέγιστη βαθμολογία[/B]
Για ι από 1 μέχρι 60
Αν ΒΑΘΜΟΙ[ι,ξ]=μεγ τότε ![B]Δημιουργία πίνακα ΜΕΓΘ[/B]
ΜΕΓΘ[κ]←ι
κ←κ+1
τέλος_αν
τέλος_επανάληψης
πλ←κ-1 ![B]Οι θέσεις του πίνακα ΜΕΓΘ[/B]
Για κ από 1 μέχρι πλ ![B]Δημιουργώ νέο πίνακα ΜΕΓ ο οποίος έχει ίδιο μέγεθος με τον ΜΕΓΘ. Σε κάθε θέση του αποθηκεύω την συνολική βαθμολογία κάθε αθλητή που βρέθηκε να έχει στο συγκεκριμένο άθλημα βαθμολογία ίση με τη μέγιστη[/B]
ΜΕΓ[κ]←ΣΒ[ΜΕΓΘ[κ]]
τέλος_επανάληψης
μεγ←ΜΕΓ[1] ![B]Αναζήτηση μέγιστης συνολικής βαθμολογίας ώστε βρω τον νικητή (ανάμεσα σε αυτούς που έχουν μέγιστη για το συγκεκριμένο άθλημα)[/B]
θμεγ←1
Για κ από 2 μέχρι πλ
Αν ΜΕΓ[κ]>μεγ τότε
μεγ←ΜΕΓ[κ]
θμεγ←ΜΕΓΘ[κ]
τέλος_αν
τέλος_επανάληψης
Εμφάνισε ΟΝΟΜΑΤΑ[θμεγ] ![B]Εμφανίζω τον νικητή[/B]
τέλος_επανάληψης ![B]τέλος β ερωτήματος[/B]
Για ι από 2 μέχρι 60
Για ξ από 60 μέχρι ι με_βήμα -1
Αν ΕΘΝΟΣ[ξ-1]>ΕΘΝΟΣ[ξ] τότε
Αντιμετάθεσε ΕΘΝΟΣ[ξ-1],ΕΘΝΟΣ[ξ]
Αντιμετάθεσε ΣΒ[ξ],ΣΒ[ξ-1]
Αντιμετάθεσε ΟΝ[ξ-1],ΟΝ[ξ]
τέλος_αν
τέλος_επανάληψης
τέλος_επανάληψης
Για ι από 1 μέχρι 60
ΣΕΒ[ι]←0
τέλος_επανάληψης
λ←1
Π←1
πλ←1
Όσο λ<= 60 επανάλαβε
Όσο ΕΘΝΟΣ[λ]=ΕΘΝΟΣ[Π] επανάλαβε
ΣΕΒ[πλ]←ΣΕΒ[πλ]+ΣΒ[λ]
Π←Π+1
τέλος_επανάληψης
ΝΕΘΝΟΣ←ΕΘΝΟΣ[λ]
πλ←πλ+1
λ←λ+Π
τέλος_επανάληψης
Για ι από 2 μέχρι πλ
Για ξ από πλ μέχρι ι με_βήμα -1
Αν ΣΒ[ξ-1]>ΣΒ[ξ] τότε
Αντιμετάθεσε ΣΒ[ξ-1],ΣΒ[ξ]
Αντιμετάθεσε ΝΕΘΝΟΣ[ξ-1],ΝΕΘΝΟΣ[ξ]
τέλος_αν
τέλος_επανάληψης
τέλος_επανάληψης
Για ι από 1 μέχρι 3
Εμφάνισε ΝΕΘΝΟΣ[ι]
τέλος_επανάληψης
Εμφάνισε πλ
Τέλος ενόργανη
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Η ταχύτητα ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού.
Σωστό μου φαίνεται, αλλά είναι εντός ύλης; Δεν το έχω διαβάσει κάπου.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Ναι, γίνεται. Αν ξέρεις ότι, ενώ η αρχική τιμή της μεταβλητής είναι ακέραια, στην πορεία αποκτά και δεκαδικά, τότε την ορίζεις ως πραγματική και εκχωρείς ακέραια τιμή.
Απλώς, άμα στην πορεία ΔΕΝ αποκτά δεκαδικά (παραμένει ακέραια) ενδέχεται να σου περικοπούν μόρια, γιατί ο βαθμολογητής θα πιστέψει ότι ξέρεις την διαφορά Πραγματικής και Ακέραιας μεταβλητής.
Όχι, εντάξει. Για Α Θέμα ΟΕΦΕ 2008 πρόκειται
Edit: Μια πιο "τεχνική" ερώτηση. Αφού εγώ την δώσω την τιμή 3, αυτή δεν θα έχει την τιμή 3.0, ουσιαστικά; Με άλλα λόγια - όπως αναφέρει το βιβλίο- δεν θα καταλαμβάνει χώρο πραγματικής (4 ή 8 bytes);
Είμαι σίγουρος πως αυτό γίνεται αν δώσεις ακέραια τιμή σε μεταβλητή που διαβάζεις και την έχεις δηλώσει ως πραγματική.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Προσωπικά θεωρώ και τις δύο λύσεις σωστές. Στο σχολικό ΔΕΝ υπάρχουν παραδείγματα όπου να χρειάζεται να γίνει τροποποίηση στο διάγραμμα ροής, ώστε να μπορεί να γραφτεί σε ψευδοκώδικα. Κάτι παρόμοιο είχε γίνει πέρσυ στις πανελλήνιες:
Ενώ η συνθήκη εξεταζόταν στην αρχή της επανάληψης, το βέλος που οδηγούσε στο βρόχγο ήταν αυτό του ΟΧΙ (Όσο ΟΧΙ(συνθήκη) επανάλαβε). Κάτι τέτοιο δεν υπάρχει μέσα στο βιβλίο και πολλοί δεν ξέραμε αν δικαιούμασταν να τροποποιήσουμε τη συνθήκη. Αντιθέτως, αν αντί για Όσο βάζαμε Μέχρις_ότου, με εσωτερικό Αν (για να εξασφαλίσουμε τον 1ο έλεγχο της Όσο που δεν προσφέρει η Μέχρις_ότου), τροποιούσαμε το διάγραμμα σε ένα βαθμό, αλλά αφήναμε αναλλοίωτη τη συνθήκη.
Υπήρξε μεγάλη αντίδραση μετά την παραλαβή των θεμάτων, δεδομένου ότι άλλοι υποστήριζαν ότι το Όσο είναι σωστό, άλλοι το Μέχρις_ότου και άλλοι ότι αμφότερα είναι σωστά. Το γεγονός είναι ότι όσοι έβαλαν Όσο τους το πήραν 100% σωστό. Εμένα που έβαλα Μέχρις_ότου, μου έκοψε 2 μόρια ο ένας εξεταστής και τίποτα ο δεύτερος.
Πάντως, δεδομένου του σαματά που έγινε πέρσυ στο διάγραμμα ροής, το αναμενόμενο είναι να βάλουν εντελώς normal ΔΡ φέτος και να κάνουν πατάτα σε κάποιο άλλο ερώτημα...
Έχεις δίκιο. Και εγώ όταν το έγραφα σαν διαγώνισμα μπόκαρα λίγο, γιατί ενώ γνώριζα τι ακριβώς γίνεται, δεν ήξερα αν ειναι σωστό να τροποποιήσω την συνθήκη. Τελικά το ρίσκαρα και φυσικά δεν έχασα μονάδες.
Ωραια, εγινε πληρως κατανοητο, ο αλγοριθμος σου μου φαινεται πιο λογικος και ευκολονοητος. Σε ευχαριστω πολυ για τη βοηθεια!
Είναι και πιο "γρήγορος", γιατί σκέψου πως εσύ πραγματοποιείς έναν έλεγχο για κάθε αριθμό που διαβάζεις, αλλά ο μόνος που σε ενδιαφέρει να δεις αν δεν είναι θετικός είναι ο τελευταίος θετικός που θα διαβάσεις (και μετά από αυτόν θα τελειώσει η επανάληψη). Πρακτικά, αυτό το σώζεις μετακινόντας το Διάβασε χ αμέσως πριν τον έλεγχο την συνθήκης της επανάληψης.
Ήθελα να στο εξηγήσω από πριν αλλά έπρεπε να φύγω
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Νομιζω πως εισαι λαθος γιατι το διαγραμμα πρώτα διαβαζει και μετά μπαινει σε επαναληψη ( αρα οσο) ενώ εσυ πρώτα εβαλες επαναληψη και μετα διαβασες. Ουσιαστικα ειναι σαν να σε οδηγει στο να πάρει όσο, και επισης βαζεις "αν" ενώ δεν θέλει, αλλα λογικά θα'μαι λάθος οπότε ας με διορθωσει καποιος!
Στο διάγραμμα ροής, το διάβασε x βρίσκεται ξεκάθαρα μέσα σε βρόχο. Δεν θεωρώ πως υπάρχει πρόβλημα να βάλεις ένα αν, αφού ακόμα και να βάλεις όσο, τροποποιείς τη συνθήκη. Ίσως η εκφώνηση θα ήταν πιο σωστή ζητώντας το ισοδύναμο τμήμα αλγορίθμου.
Η λύση σου δουλεύει, γιατί είναι σαν να έχεις μετατρέψει το Όσο τους βοηθιτικού σε Μέχρις_Ότου, άρα οι δύο αλγόριθμοι πραγματοποιούν ακριβώς το ίδιο (τώρα δεν το έλεγξα και τέλεια, αλλά νομίζω πως δεν έχει κάποια "γκρίζα ζώνη"). Θα μπορούσες επίσης να έχεις συπεριλάβει όλο το Μέχρις_Ότου σε ένα Αν και Διαβάζεις απ' έξω - σαν εναλλακτική - έτσι γλειτώνεις μερκούς ελέγχους. Δηλαδή
S←0
Διαβασε χ
Αν χ<0 τότε
Αρχή_επανάληψης
S←S+χ
Διάβασε χ
Μέχρις_Ότου χ>=0
Τέλος_αν
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Προφανώς κι όχι. Όταν μιλάμε για προγραμματισμό, ένας δεκαδικός αριθμός δεν είναι ίσος με έναν ακέραιο.
Δεκαδικός είναι ο αριθμός που έχει κινητή υποδιαστολή, δεν σημαίνει απαραίτητα πως πρέπει να είναι και διάφορο του μηδενός, το δεκαδικό μέρος.
Είσαι σίγουρος;
Γιατί, πρώτον, ό,τι έχω γράψει μέχρι τώρα, είναι λάθος αν δεν ισχύει αυτό, και δεύτερον, ο Online διευρμηνευτής της γλώσσας το βγάζει αληθές (τώρα κατεβάζω και την Γλωσσομάθεια, να το δοκιμάσω εκεί).
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Το πρώτο απ' ότι θυμάμαι ισχύει. Σίγουρα ισχύει σε αλγορίθμους, οπότε λογικό είναι νομίζω να ισχύει και για προγράμματα
Το δεύτερο δεν ισχύει, σε καμία περίπτωση. Όπως και στις κανονικές γλώσσες προγραμματισμού, έτσι και στην "ψευδογλώσσα" οι πίνακες είναι πάντα ορθ. παραλ.
Κρίμα... τώρα θα πρέπει να το κάνω τρεις φορές.
Edit: Και άλλη ερώτηση. Η έκφραση 3.0 = 3 είναι αληθής;
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Πάλι, δεν έφτασα μέχρι το τέλος, αλλά την έχω σαφώς σημαζέψει.
Θα ήθελα, αν μπορεί κάποιος να μου επικυρώσει 2 πράγματα, για να συνεχίσω την άσκσηση.
1) Η χρήση της έτοιμης συνάρτησης Α_Μ(x) μπορεί να γίνει κανονικά σε πρόγραμμα;
2) Αυτό που κάνω στο τέλος είναι αποδεκτό; Δηλαδή η δημιουργία δισδιάστατου πίνακα με διαφορετικό αριθμό στηλών (αφού δεν γνωρίζω πόσα ψηφία έχει κάθε αριθμός που διάβασα);
ΔΙΑΒΑΣΕ Ψ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Ψ<>Α_Μ(Ψ) ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΜΗ ΑΚΕΡΑΙΟ'
ΔΙΑΒΑΣΕ Ψ
ΑΛΛΙΩΣ_ΑΝ Ψ<0 Ή Ψ>9 ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΑΡΙΘΜΟ ΕΚΤΟΣ ΟΡΙΩΝ'
ΔΙΑΒΑΣΕ Ψ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ Ψ=Α_Μ(Ψ) ΚΑΙ Ψ>=0 ΚΑΙ Ψ<=9
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
ΔΙΑΒΑΣΕ Τ[i]
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Τ[i]<>Α_Μ(Τ[i]) ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΜΗ ΑΚΕΡΑΙΟ'
ΔΙΑΒΑΣΕ T[i]
ΑΛΛΙΩΣ_ΑΝ Τ[i]<0 Ή Τ[i]>999999 ΤΟΤΕ
ΓΡΑΨΕ 'ΈΔΩΣΕΣ ΑΡΙΘΜΟ ΕΚΤΟΣ ΟΡΙΩΝ'
ΔΙΑΒΑΣΕ Τ[i]
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ Τ[i]=Α_Μ(Τ[i]) ΚΑΙ Τ[i]>=0 ΚΑΙ T[i]<=999999
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
ντ←Τ[i]
Α[i]←0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Α[i]←Α[i] + 1
ντ←ντ mod 10
ΜΕΧΡΙΣ_ΟΤΟΥ ντ=0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Τώρα έχεις σε κάθε στοιχείο του πίανακα Α τον αριθμό των ψηφίων καθενός από τους 3 αριθμούς
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Α[i]
Ψ[i,j]← Τ[i] mod 10
Τ[i]← Τ[i] div 10
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Στην παραπάνω επανάληψη δημιουργούμε έναν δισδιάστατο πίνακα. Σε κάθε γραμμή του, υπάρχουν τα ψηφία του 3ψήφιου αριθμού που διαβάσαμε, ένα σε κάθε στήλη.
Edit1: μέχρι να απαντήσει κάποιος, δίαβασε την άσκηση μέχρι εδώ και πες μου αν δεν κατάλαβες κάτι ή αν εντοπίσεις κάποιο λάθος.
Edit2: Τελείωσα την 2η. Πιθανολογώ (όπως είπα, δεν είναι και αρκετά σαφείς οι εκφωνήσεις), πως μπορεί να θέλουν πίνακα, αφού δίνει τον περιορισμό των 172 γραμμάτων ανά λέξη, αλλά εφ' όσον ζητά "να τις βρίσκει", δεν είναι λάθος έτσι όπως το έκανα. Αν θες, μπορώ να στο γράψω και με πίνακα.
ΔΙΑΒΑΣΕ Γ !ΔΙΑΒΑΖΩ ΓΡΑΜΜΑ
P←0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 !ΘΑ ΔΙΑΒΑΣΕΙ 5 ΛΕΞΕΙΣ
ΠΛ←0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ !ΔΙΑΒΑΖΩ ΓΡΑΜΜΑΤΑ ΜΕΧΡΙ ΝΑ ΤΕΛΕΙΩΣΕΙ Η ΛΕΞΗ
ΔΙΑΒΑΣΕ ΓΡ
ΑΝ ΓΡ=Γ ΤΟΤΕ !ΕΛΕΓΧΟΣ ΑΝ ΤΟ ΓΡΑΜΜΑ ΤΗΣ ΛΕΞΗΣ ΕΙΝΑΙ ΙΔΙΟ ΜΕ ΤΟ ΓΡΑΜΑ ΠΟΥ ΔΙΑΒΑΣΕ ΑΡΧΙΚΑ
ΠΛ←ΠΛ+1 !ΑΝ ΕΙΝΑΙ, ΑΥΞΑΝΩ ΤΟ ΠΛΗΘΟΣ (ΠΛΗΘΟΣ ΓΙΑ ΚΑΘΕ ΛΕΞΗ)
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΌΤΟΥ ΓΡ='*'
ΓΡΑΨΕ ΠΛ !ΕΜΦΑΝΙΖΩ ΤΟ ΠΛΗΘΟΣ ΠΟΥ ΕΝΤΟΠΙΣΤΗΚΕ ΤΟ ΓΡΑΜΜΑ ΣΤΗ ΛΕΞΗ
ΑΝ ΠΛ<>0 ΤΟΤΕ !ΑΝ ΕΧΕΙ ΒΡΕΘΕΙ ΕΣΤΩ ΚΑΙ ΜΙΑ ΦΟΡΑ ΤΟ ΓΡΑΜΜΑ ΣΤΗ ΛΕΞΗ
P←P+1 !ΑΥΞΑΝΩ ΤΟ ΠΛΗΘΟΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ P !ΕΜΦΑΝΙΖΩ ΣΕ ΠΟΣΕΣ ΑΠΟ ΤΙΣ 5 ΛΕΞΕΙΣ ΕΜΦΑΝΙΣΤΗΚΕ ΤΟ ΓΡΑΜΜΑ
Edit3: Έτοιμη και η 3η άσκηση. Τώρα μένει να δουλέψω την 1η μέχρι το τέλος, αλλά για την ώρα δεν προλαβαίνω. Αν εντοπίσει κάποιος κάποιο λάθος ας μου πει.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΔΙΑΒΑΣΕ Τ[i] !ΔΙΑΒΑΖΩ ΤΟΥΣ 20 ΑΡΙΘΜΟΥΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΌ 2 ΜΈΧΡΙ 20 !ΤΟΥΣ ΤΑΞΙΝΟΜΩ
ΓΙΑ j ΑΠΌ 20 ΜΕΧΡΙ i ΜΕ_ΒΉΜΑ -1
ΑΝ Τ[j-1]>T[j] TOTE !ΚΑΤΑ ΑΥΞΟΥΣΑ ΣΕΙΡΑ
temp←Τ[j-1]
Τ[j-1]←Τ[j]
Τ[j]←temp
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 !ΤΟΥΣ ΕΜΦΑΝΙΖΩ ΤΑΞΙΝΟΜΗΜΕΝΟΥΣ
ΓΡΑΨΕ Τ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Θ←0 !ΠΛΗΘΟΣ ΘΕΤΙΚΩΝ
Μ←0 !ΠΛΗΘΟΣ ΜΗΔΕΝΙΚΩΝ
Α←0 !ΠΛΗΘΟΣ ΑΚΕΡΑΙΩΝ
ΓΙΑ i ΑΠΟ 1 ΜΈΧΡΙ 20
ΑΝ Α_Μ(Τ[i])=Τ[i] ΤΟΤΕ
Α←Α+1
ΤΕΛΟΣ_ΑΝ !ΈΝΑΣ ΑΚΕΡΑΙΟΣ ΜΠΟΡΕΊ ΝΑ ΕΊΝΑΙ ΘΕΤΙΚΌΣ Ή ΑΡΝΗΤΙΚΌΣ, ΟΠΌΤΕ ΜΠΑΊΝΕΙ ΣΕ ΞΕΧΩΡΙΣΤΌ ΑΝ
ΑΝ Τ[i]>0 ΤΟΤΕ !ΑΝ ΕΙΝΑΙ ΘΕΤΙΚΟΣ
Θ←Θ+1
ΑΛΛΙΩΣ_ΑΝ Τ[i]=0 ΤΟΤΕ !ΑΝ ΔΕΝ ΕΙΝΑΙ ΘΕΤΙΚΟΣ, ΑΛΛΑ ΕΙΝΑΙ ΜΗΔΕΝ
Μ←Μ+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Α, Θ, Μ, 20-(Θ+Μ) !ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΤΗΣ ΠΡΑΞΗΣ 20-(Θ+Μ) ΜΟΥ ΔΙΝΕΙ ΤΟ ΠΛΗΘΟΣ ΤΩΝ ΑΡΝΗΤΙΚΩΝ. Θ+Μ ΕΙΝΑΙ ΤΟ ΠΛΗΘΟΣ ΤΩΝ ΜΗ ΑΡΝΗΤΙΚΩΝ ΑΡΙΘΜΩΝ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Λύνεται και χωρίς πίνακες, αλλά βγαίνει τεράστιος.
Ορίστε και μερικά κομμάτια για να σε βοηθήσουν, αν δεν ξέρεις τι να κάνεις. Μη δίνεις σημασία στο ονόματα των μεταβλητών, ξεκίνησα να το λύνω χωρίς πίνακες.
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ψ1<>Α_Μ(ψ1) ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΔΕΚΑΔΙΚΟ. ΔΩΣΕ ΕΝΑΝ ΑΚΕΡΑΙΟ'
ΔΙΑΒΑΣΕ ψ1
ΑΛΛΙΩΣ_ΑΝ ψ1<0 Ή ψ1>9
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΤΙΜΗ ΕΚΤΟΣ ΟΡΙΩΝ. ΔΩΣΕ ΑΡΙΘΜΟ ΑΠΟ ΤΟ 0 ΜΕΧΡΙ ΤΟ 9'
ΔΙΑΒΑΣΕ ψ1
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΌΤΟΥ ψ1=Α_Μ(ψ1) ΚΑΙ ψ1>=0 ΚΑΙ ψ1<=9
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ τ1<>Α_Μ(τ1) ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΔΕΚΑΔΙΚΟ. ΔΩΣΕ ΕΝΑΝ ΑΚΕΡΑΙΟ'
ΔΙΑΒΑΣΕ τ1
ΑΛΛΙΩΣ_ΑΝ τ1<0 Ή τ1>999999
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΤΙΜΗ ΕΚΤΟΣ ΟΡΙΩΝ. ΔΩΣΕ ΑΡΙΘΜΟ ΑΠΟ ΤΟ 0 ΜΕΧΡΙ ΤΟ 999999'
ΔΙΑΒΑΣΕ τ1
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΌΤΟΥ τ1=Α_Μ(τ1) ΚΑΙ τ1>=0 ΚΑΙ τ1<=999999
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ τ2<>Α_Μ(τ2) ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΔΕΚΑΔΙΚΟ. ΔΩΣΕ ΕΝΑΝ ΑΚΕΡΑΙΟ'
ΔΙΑΒΑΣΕ τ2
ΑΛΛΙΩΣ_ΑΝ τ2<0 Ή τ2>999999
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΤΙΜΗ ΕΚΤΟΣ ΟΡΙΩΝ. ΔΩΣΕ ΑΡΙΘΜΟ ΑΠΟ ΤΟ 0 ΜΕΧΡΙ ΤΟ 999999'
ΔΙΑΒΑΣΕ τ2
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΌΤΟΥ τ2=Α_Μ(τ2) ΚΑΙ τ2>=0 ΚΑΙ τ2<=999999
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ τ3<>Α_Μ(τ3) ΤΟΤΕ
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΔΕΚΑΔΙΚΟ. ΔΩΣΕ ΕΝΑΝ ΑΚΕΡΑΙΟ'
ΔΙΑΒΑΣΕ τ3
ΑΛΛΙΩΣ_ΑΝ τ3<0 Ή τ3>999999
ΓΡΑΨΕ 'ΕΔΩΣΕΣ ΤΙΜΗ ΕΚΤΟΣ ΟΡΙΩΝ. ΔΩΣΕ ΑΡΙΘΜΟ ΑΠΟ ΤΟ 0 ΜΕΧΡΙ ΤΟ 999999'
ΔΙΑΒΑΣΕ τ3
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΌΤΟΥ τ3=Α_Μ(τ3) ΚΑΙ τ3>=0 ΚΑΙ τ3<=999999
ντ1←ψ1
ψηφ1←0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ψηφ1←ψηφ1+1
ντ1←ντ1 div 10
ΜΕΧΡΙΣ_ΟΤΟΥ ντ1=0
ντ2←τ2
ψηφ2←0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ψηφ2←ψηφ2+1
ντ2←ντ2 div 10
ΜΕΧΡΙΣ_ΟΤΟΥ ντ2=0
ντ3←τ3
ψηφ3←0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ψηφ3←ψηφ3+1
ντ3←ντ3 div 10
ΜΕΧΡΙΣ_ΟΤΟΥ ντ3=0
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Και μια δική μου ερώτηση: Στο πρόγραμμα μπορώ να χρησιμοποιώ κανονικά τις έτοιμες συναρτήσεις των αλγορίθμων, έτσι;
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Καλησπέρα, έλυσα μια άσκηση πάνω στην όσο...επανάλαβε και θα ήθελα, αν μπορείτε, να ελέγξετε αν η λύση μου είναι σωστή.
Η άσκηση ειναι η εξής: Να αναπτύξετε αλγόριθμο που θα διαβάζει έναν ακέραιο Ν>0 και θα υπολογίζει το άθροισμα S = 5/3 + 25/9 + 125/27 + ... μέχρι το S να ξεπεράσει την τιμή του ακέραιου Ν. Στο τέλος ο αλγόριθμος θα πρέπει να εκτυπώνει το πλήθος των όρων του αθροίσματος.
Η επανάληψη είναι σωστή, αλλά δεν διαβάζεις πουθενά τον Ν. Θα πρέπει να τον διαβάσεις μέσα σε μέχρις_ότου για να κάνεις έλεγχο εγκυρότητας.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Αν κατάλαβα καλά, θες να υπάρχει μεταβλητή χ στο πρόγραμμα και τα υποπρογράμματα σου? Αυτό γίνεται και δεν δημιουργεί κανένα πρόβλημα.
Πχ:
....
Κάλεσε ΔΙΑΔΙΚΑΣΙΑ1(μεταβλητή1,μεταβλητή2,μεταβλητή3,...,μεταβλητήΝ)
.....
ΔΙΑΔΙΚΑΣΙΑ1(variable1,variable2,variable3,....,variableN)
....
Απαραίτητη προϋπόθεση για την χρήση υποπρογραμμάτων είναι:
α) Να υπάρχει ίδιο πλήθος μεταβλητών μέσα στην παρένθεση, κατά την κλήση του υποπρογράμματος και
β) Να υπάρχει αντιστοιχία 1-1 στο είδος των μεταβλητών. Αν η μεταβλητή1 είναι ΛΟΓΙΚΗ, η variable1 πρέπει να είναι επίσης ΛΟΓΙΚΗ.
Τα ονόματα ΔΕΝ είναι απαραίτητο να είναι τα ίδια, αλλά ΔΕΝ δημιουργείται κανένα πρόβλημα αν είναι.
Οκ, αυτά τα ήξερα. Αν δεν υπάρχει θέμα με το πρόγραμμα που έγραψα, τότε μου λύθηκε η απορία
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
ΠΡΟΓΡΑΜΜΑ λ
...
ΚΑΛΕΣΕ Δ(x)
y<--Σ(x)
ΑΝ x>10 TOTE
ΓΡΑΨΕ 'Αληθές'
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ x
...
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Και ας πούμε ότι τα υποπρογράμματα είναι τα εξής:
ΣΥΝΑΡΤΗΣΗ Σ(x): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
x<-- x + 1
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΔΙΑΔΙΚΑΣΙΑ Δ(x)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ x
ΜΕΧΡΙΣ_ΟΤΟΥ x>0
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
(Επειδή το topic δεν είναι και ιδιαίτερα δημοφιλές, αν δεν απαντήσει κανείς μέχρι την Τρίτη το βράδυ θα μου απαντήσω εγώ )
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Αν έχεις και άλλες συγκεκριμένες απορίες, γράψτες και θα σου απαντήσουμε! Τι σου φαίνεται περίεργο ακριβώς; Η συσχέτιση με τους άλλους πίνακες;
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Και κάτι άλλο. Δεν ξέρω αν είναι λάθος, αλλά εγώ την αλλαγή των μεταβλητών στην φυσαλίδα την έχω μάθει ως εξής:
temp1←tablet[j-1]
ΓΡΑΠΤΟ[j-1]←ΓΡΑΠΤΟ[j]
ΓΡΑΠΤΟ[j]←temp1
Δεν ξέρω αν κάνει το ίδιο πράγμα, απλά σε τσέκαρε μήπως το έχεις μάθει και εσύ έτσι και το έγραψες καταλάθος ανάποδα. Αλλιώς δεν έχει πρόβλημα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
PiDefiner
Δραστήριο μέλος
Δεν είναι ανάγκη να διαβάζεις κάθε πίνακα σε διαφορετικό "για". Μπορείς να γράψεις ένα και να τα διαβάζεις όλα με μια εντολή:
Για j από 1 μέχρι 10
Διάβασε ΟΝΟΜΑ[j], ΓΡΑΠΤΟ[j], ΠΡΟΦ[j]
Τέλος_επανάληψης
Έτσι μάλιστα εξασφαλίζεις και ότι οι πίνακες θα είναι παράλληλοι, αν και αυτό δεν έχει τόσο σημασία σε επίπεδο ΑΕΠΠ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.