ΠΑΡΑΔΕΙΓΜΑ 1 /ΣΕΛ88 ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ

Ξεκίνησε από clevercitizen, 29 Ιαν 2007, 08:49:52 ΜΜ

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

clevercitizen

Συμφωνα με την εκφωνηση μας ζηταει να γραψουμε προγραμμα που να διαβαζει τα ονοματα 50 αεροπορικων εταιρειων.
Στο λυμμενο προγραμμα ομως παρουσιαζει και ενα Ν  στο οποιο καλειται ο χρηστης να βαλει τον αριθμο των εταιρειων. Yπαρχει λογος που το κανει αυτο???Αφου ο αριθμος των εταιρειων ειναι προκαθορισμενος απο την εκφωνηση(ουτε παρα πανω ουτε παρα κατω, ακριβως 50).
Μια ενδεικτικη λυση του προγραματος (σε συνδυασμο με την ασκηση ΔΣ1/σελ96) δινω παρακατω:

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ Β
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ:ΜΟΝΕΥ[50],ΑΘΡ,ΜΟ,ΜΙΝ,ΜΑΧ
  ΑΚΕΡΑΙΕΣ:Ι
  ΧΑΡΑΚΤΗΡΕΣ:ΝΑΜΕ[50]
ΑΡΧΗ
  ΑΘΡ <-- 0
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
    ΔΙΑΒΑΣΕ ΜΟΝΕΥ[Ι]
    ΔΙΑΒΑΣΕ ΝΑΜΕ[Ι]
    ΑΘΡ <-- ΑΘΡ + ΜΟΝΕΥ[Ι]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΜΟ <-- ΑΘΡ/50
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
    ΑΝ ΜΟΝΕΥ[Ι]>ΜΟ ΤΟΤΕ
      ΓΡΑΨΕ 'ΠΑΝΩ ΑΠΟ ΜΟ',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΜΟΝΕΥ[Ι]<ΜΟ ΤΟΤΕ
      ΓΡΑΨΕ 'ΚΑΤΩ ΑΠΟ ΜΟ',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΜΙΝ <-- ΜΟΝΕΥ[1]
  ΜΑΧ <-- ΜΟΝΕΥ[1]
  ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 50
    ΑΝ ΜΙΝ>ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΜΙΝ <-- ΜΟΝΕΥ[Ι]
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΜΑΧ<ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΜΑΧ <-- ΜΟΝΕΥ[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
    ΑΝ ΜΙΝ=ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΓΡΑΨΕ 'Η ΕΤΑΙΡΕΙΑ ΜΕ ΤΙΣ ΛΙΓΟΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ Η',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΜΑΧ=ΜΟΝΕΥ[Ι] ΤΟΤΕ
      ΓΡΑΨΕ 'Η ΕΤΑΙΡΕΙΑ ΜΕ ΤΙΣ ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ Η',ΝΑΜΕ[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ                                                     
ΘΕΛΩ
                ΑΛΛΑΓΗ
                ΕΚΠΑΙΔΕΥΤΙΚΟΥ
                ΣΥΣΤΗΜΑΤΟΣ

gpapargi

Έχει φτιαχτεί το πρόγραμμα έτσι ώστε να μπορεί να υποστηρίξει και λιγότερες από 50 εταιρείες. Αυτό είναι κάτι συνηθισμένο στον προγραμματισμό. Θα πρέπει τα προγράμματα να είναι όσο γίνεται πιο γενικής χρήσεως. Οπότε δεσμεύει ένα πίνακα 50 θέσεων αλλά μπορεί να χρησιμοποιεί λιγότερες. (Ίσως θα ήταν καλύτερα αν η εκφώνηση έλεγε «το πολύ 50 εταιρείες».)

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

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

Γιώργος Παπαργύρης

clevercitizen

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

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