Τώρα είναι Πέμ 28 Μαρ 2024 04:28 pm

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 2 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
ΔημοσίευσηΔημοσιεύτηκε: Παρ 23 Ιαν 2009 03:56 am 
Χωρίς σύνδεση

Εγγραφή: Παρ 23 Ιαν 2009 02:49 am
Δημοσιεύσεις: 2
Syntax: [ Download ] [ Hide ]
!Το πρόγραμμα αυτό είναι υλοποίηση του αλγόριθμου παράδειγμα 2 σελ. 104-108 του τετραδίου μαθητή.
!Το πρόβλημα συνίσταται στην μεταφορά των αριθμών (ροδέλλες) από μία στήλη σε άλλη
!τηρώντας τους δύο παρακάτω κανόνες:'
!  Επιτρέπεται να μετακινούμε μόνο έναν αριθμό κάθε φορά'
!  Δεν επιτρέπεται να τοποθετούμε έναν μεγαλύτερο αριθμό πάνω από έναν μικρότερο'
!για να μπορέσουν να γίνουν οι μεταφορές υπάρχει τρίτη βοηθητική στήλη.
!Αντί για δίσκους διαφόρων μεγεθών εδώ χρησιμοποιούμε αριθμούς.
!Οι τρείς στύλοι είναι τρείς στοίβες που υλοποιούνται με την βοήθεια ενός πίνακα τριών στηλών
!σύμφωνα με το σχολικό βιβλίο σελ. 59-60.
!Η αναδρομή είναι εκτός διδακτέας ύλης.
!Αν θέλετε το πρόγραμμα να εκτελείται ταχύτερα τρέξτε το στην έκδοση με compiler.
!
!Αν οι αριθμοί δεν εμφανίζονται πάνω από τα Π Π Π: στο μενού επιλογές κάντε τσεκ στο 'διαχωρισμός παραμέτρων στις γράψε'
!
ΠΡΟΓΡΑΜΜΑ Towers
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ST[10,3], I, J, TOP[3], NUM, AR, TE
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώστε την ποσότητα των αριθμών που θα μετακινηθούν από την μία στήλη στην άλλη'
  ΔΙΑΒΑΣΕ  NUM
  ΟΣΟ NUM<1 Η NUM>9 ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ ' Η ποσότητα πρέπει να είναι μεταξύ του 1 και 9 συμπεριλαμβανομένων'
    ΔΙΑΒΑΣΕ NUM
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Υπάρχουν 3 διαθέσιμες στήλες η 1 η 2 και η 3.'
    ΓΡΑΨΕ 'Δώστε το νούμερο της στήλης στην οποία θα είναι αρχικά οι αριθμοί'
    ΔΙΑΒΑΣΕ AR
  ΜΕΧΡΙΣ_ΟΤΟΥ AR=1 Η AR=2 Η AR=3
  ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
    ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 9
      ST[I,J] <-- 0
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ST[10,J] <-- 10
    TOP[J] <-- 10
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ I ΑΠΟ 10-NUM ΜΕΧΡΙ 9
    ST[I,AR] <-- NUM+I-9
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  TOP[AR] <-- 10-NUM
  ΓΡΑΨΕ
  ΚΑΛΕΣΕ PRINT(ST,TOP)
  ΓΡΑΨΕ 'Η βάση της κάθε στήλης παριστάνεται με ένα Π'
  ΓΡΑΨΕ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώστε το νούμερο της στήλης στην οποία θα μεταφερθούν οι αριθμοί'
    ΔΙΑΒΑΣΕ TE
    ΑΝ TE=AR ΤΟΤΕ
      ΓΡΑΨΕ 'Οι αριθμοί βρίσκονται ήδη στην στήλη',AR
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ (TE=1 Η TE=2 Η TE=3) ΚΑΙ TE<>AR
  ΓΡΑΨΕ
  ΓΡΑΨΕ
  ΚΑΛΕΣΕ MOVEMANY(NUM,AR,TE,ST,TOP)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
!
!
ΔΙΑΔΙΚΑΣΙΑ MOVE(FROM,STO,ARAY,LEV)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: FROM, STO, ARAY[10,3], LEV[3]
ΑΡΧΗ
  ARAY[LEV[STO]-1,STO] <-- ARAY[LEV[FROM],FROM]
  LEV[STO] <-- LEV[STO]-1
  ARAY[LEV[FROM],FROM] <-- 0
  LEV[FROM] <-- LEV[FROM]+1
  ΚΑΛΕΣΕ PRINT(ARAY,LEV)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
!
!
ΔΙΑΔΙΚΑΣΙΑ MOVEMANY(DOWN,DEP,DEST,ST,TOP)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:DOWN,DOWN1,DEP,DEST,ST[10,3],TOP[3],TEMPOR
ΑΡΧΗ
  ΑΝ (DOWN=1) ΤΟΤΕ
    ΚΑΛΕΣΕ MOVE(DEP,DEST,ST,TOP)
  ΑΛΛΙΩΣ
    TEMPOR <-- 6-DEP-DEST
    DOWN1 <-- DOWN-1
    ΚΑΛΕΣΕ MOVEMANY(DOWN1,DEP,TEMPOR,ST,TOP)
    ΚΑΛΕΣΕ MOVE(DEP,DEST,ST,TOP)
    ΚΑΛΕΣΕ MOVEMANY(DOWN1,TEMPOR,DEST,ST,TOP)
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
!
!
ΔΙΑΔΙΚΑΣΙΑ PRINT(AR,PANO)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: AR[10,3],PANO[3],K,L,MIN
ΑΡΧΗ
  ΑΝ PANO[1]<PANO[2] ΤΟΤΕ
    MIN <-- PANO[1]
  ΑΛΛΙΩΣ
    MIN <-- PANO[2]
  ΤΕΛΟΣ_ΑΝ
  ΑΝ PANO[3]<MIN ΤΟΤΕ
    MIN <-- PANO[3]
  ΤΕΛΟΣ_ΑΝ
  ΓΙΑ K ΑΠΟ MIN ΜΕΧΡΙ 9
    ΓΙΑ L ΑΠΟ 1 ΜΕΧΡΙ 3
      ΑΝ (AR[K,L]<>0) ΤΟΤΕ
        ΓΡΑΨΕ_ AR[K,L]
      ΑΛΛΙΩΣ
        ΓΡΑΨΕ_ ' '
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Π Π Π'
  ΓΡΑΨΕ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Τετ 11 Νοέμ 2009 04:04 am 
Χωρίς σύνδεση

Εγγραφή: Παρ 23 Ιαν 2009 02:49 am
Δημοσιεύσεις: 2
tsapman έγραψε:
Syntax: [ Download ] [ Hide ]
Αρχικά τρέξτε το πρόγραμμα μόνο με 4 αριθμούς για να φανεί πως μετακινούνται.


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 2 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
Προβολές: