Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Μονοδιάστατοι πίνακες => Γ΄ Λυκείου => Εισαγωγή στοιχείων, εμφάνιση και υπολογισμοί => Μήνυμα ξεκίνησε από: clevercitizen στις 29 Ιαν 2007, 08:49:52 ΜΜ

Τίτλος: ΠΑΡΑΔΕΙΓΜΑ 1 /ΣΕΛ88 ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ
Αποστολή από: clevercitizen στις 29 Ιαν 2007, 08:49:52 ΜΜ
Συμφωνα με την εκφωνηση μας ζηταει να γραψουμε προγραμμα που να διαβαζει τα ονοματα 50 αεροπορικων εταιρειων.
Στο λυμμενο προγραμμα ομως παρουσιαζει και ενα Ν  στο οποιο καλειται ο χρηστης να βαλει τον αριθμο των εταιρειων. Yπαρχει λογος που το κανει αυτο???Αφου ο αριθμος των εταιρειων ειναι προκαθορισμενος απο την εκφωνηση(ουτε παρα πανω ουτε παρα κατω, ακριβως 50).
Μια ενδεικτικη λυση του προγραματος (σε συνδυασμο με την ασκηση ΔΣ1/σελ96) δινω παρακατω:

Κώδικας (ΓΛΩΣΣΑ) [Επιλογή]

ΠΡΟΓΡΑΜΜΑ Β
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ:ΜΟΝΕΥ[50],ΑΘΡ,ΜΟ,ΜΙΝ,ΜΑΧ
  ΑΚΕΡΑΙΕΣ:Ι
  ΧΑΡΑΚΤΗΡΕΣ:ΝΑΜΕ[50]
ΑΡΧΗ
  ΑΘΡ <-- 0
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
    ΔΙΑΒΑΣΕ ΜΟΝΕΥ[Ι]
    ΔΙΑΒΑΣΕ ΝΑΜΕ[Ι]
    ΑΘΡ <-- ΑΘΡ + ΜΟΝΕΥ[Ι]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΜΟ <-- ΑΘΡ/50
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
    ΑΝ ΜΟΝΕΥ[Ι]>ΜΟ ΤΟΤΕ
      ΓΡΑΨΕ 'ΠΑΝΩ ΑΠΟ ΜΟ',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΜΟΝΕΥ[Ι]<ΜΟ ΤΟΤΕ
      ΓΡΑΨΕ 'ΚΑΤΩ ΑΠΟ ΜΟ',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΜΙΝ <-- ΜΟΝΕΥ[1]
  ΜΑΧ <-- ΜΟΝΕΥ[1]
  ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 50
    ΑΝ ΜΙΝ>ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΜΙΝ <-- ΜΟΝΕΥ[Ι]
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΜΑΧ<ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΜΑΧ <-- ΜΟΝΕΥ[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
    ΑΝ ΜΙΝ=ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΓΡΑΨΕ 'Η ΕΤΑΙΡΕΙΑ ΜΕ ΤΙΣ ΛΙΓΟΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ Η',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΜΑΧ=ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΓΡΑΨΕ 'Η ΕΤΑΙΡΕΙΑ ΜΕ ΤΙΣ ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ Η',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ                                                     
Τίτλος: Απ: ΠΑΡΑΔΕΙΓΜΑ 1 /ΣΕΛ88 ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ
Αποστολή από: gpapargi στις 30 Ιαν 2007, 09:47:55 ΠΜ
Έχει φτιαχτεί το πρόγραμμα έτσι ώστε να μπορεί να υποστηρίξει και λιγότερες από 50 εταιρείες. Αυτό είναι κάτι συνηθισμένο στον προγραμματισμό. Θα πρέπει τα προγράμματα να είναι όσο γίνεται πιο γενικής χρήσεως. Οπότε δεσμεύει ένα πίνακα 50 θέσεων αλλά μπορεί να χρησιμοποιεί λιγότερες. (Ίσως θα ήταν καλύτερα αν η εκφώνηση έλεγε «το πολύ 50 εταιρείες».)

Φυσικά σε αυτή την περίπτωση θα πρέπει να έχει σε μια μεταβλητή τη θέση στην οποία τελειώνουν τα δεδομένα και αρχίζουν οι αχρησιμοποίητες θέσεις του πίνακα. Σκέψου ότι μπορεί μετά να γίνει κάποια επεξεργασία στον πίνακα (πχ ταξινόμηση ή αναζήτηση) και πρέπει να ξέρουμε που θα σταματήσει η σάρωση.  Αν προσέξεις, στη λύση του τετραδίου οι εντολές «Για» σταματούν σε αυτή τη θέση (Ν) και όχι στο 50.

Στο πρόγραμμα που έστειλες βλέπω εκ πρώτης όψεως ότι πριν την εύρεση ελαχίστου/μεγίστου αρχικοποιείς τις μεταβλητές min και max με το πρώτο στοιχείο του πίνακα. Αλλά η αρχικοποίηση βρίσκεται εντός της προηγούμενης εντολής «Για» και εκτελείται 50 φορές. Επίσης δεν αρχικοποιείς την τιμή του ΑΘΡ με 0.

Τίτλος: Απ: ΠΑΡΑΔΕΙΓΜΑ 1 /ΣΕΛ88 ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ
Αποστολή από: clevercitizen στις 30 Ιαν 2007, 03:38:07 ΜΜ
Παράθεση από: gpapargi στις 30 Ιαν 2007, 09:47:55 ΠΜ
Στο πρόγραμμα που έστειλες βλέπω εκ πρώτης όψεως ότι πριν την εύρεση ελαχίστου/μεγίστου αρχικοποιείς τις μεταβλητές min και max με το πρώτο στοιχείο του πίνακα. Αλλά η αρχικοποίηση βρίσκεται εντός της προηγούμενης εντολής «Για» και εκτελείται 50 φορές. Επίσης δεν αρχικοποιείς την τιμή του ΑΘΡ με 0.

Εχετε δικιο. Το 1 λαθος( τα ΜΙΝ και ΜΑΧ μεσα στην Για) εκ παραδρομης και το 2ο απροσεξιας:P(Τα διορθωσα.)
Παντως η εκφωνηση λεει ξεκαθαρα για 50 εταιρειες, ουτε λιγοτερες ουτε περισσοτερες.