προσομοίωση

Ξεκίνησε από jimis, 26 Απρ 2006, 02:54:05 ΜΜ

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

jimis

Καλησπέρα!
Μου έφερε ένας μαθητής τα θέματα προσομοίωσης. Θα μπορούσατε να μου πείτε τη γνώμη σας για τα παρακάτω δυο θέματα

Θέμα 2ο
Δίνεται το επόμενο τμήμα προγράμματος σε ΓΛΩΣΣΑ

ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 3
   ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
        Α[ί, j]<- 0
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ Μαγικο_τετραγωνο{Α)
Sum<-0
ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 3
Sum<- Sum + Α[ί, 3]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Sum

ΔΙΑΔΙΚΑΣΙΑ Μαγικο_τετραγωνο{Β)
…..
ΑΡΧΗ
ί <-1
j <-4DIV2
Β[ί, j]<-1
ΓΙΑ key ΑΠΟ 2 ΜΕΧΡΙ 9
     ΑΝ ί>1 ΤΟΤΕ
   Κ<- ί-1
      ΑΛΛΙΩΣ
   Κ<-3
       ΤΕΛΟΣ_ΑΝ
       ΑΝ j > ί ΤΟΤΕ
             L<- j-1
        ΑΛΛΙΩΣ
   L<- 2
        ΤΕΛΟΣ_ΑΝ
        ΑΝ Β[Κ, L]>0 ΤΟΤΕ
   ί <- ί +1
   ΑΝ ί=4 ΤΟΤΕ
      ί <- 1
   ΤΕΛΟΣ_ΑΝ
         ΑΛΛΙΩΣ
            ί <- Κ
   j <- L
         ΤΕΛΟΣ_ΑΝ
          Β[ί, j]<- key
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ _ΔΙΑΔΙΚΑΣΙΑΣ

Να σχεδιάσετε τον πίνακα Α με τις τιμές που θα έχουν τα στοιχεία μετά το τέλος του ανώτερου τμήματος προγράμματος καθώς και την τιμή που τυπώνεται για το Sum

Πως θα ξέρουμε εδώ αν το Β[Κ, L]>0?


Θέμα 3ο

Κατά τη διάρκεια μιας μελέτης για τις ελληνικές τουριστικές επιχειρήσεις κατεγράφησαν για 3 συγκεκριμένες κατηγόριες δειγματοληπτικά οι εισπράξεις (σε ευρω) που πραγματοποιήθηκαν από 1000 ξενοδοχεία σε διάφορες περιοχές της χώρας για κάθε ένα μήνα του έτους. 

Να αναπτύξετε τμήμα αλγόριθμου η τμήμα προγράμματος σε ‘ΓΛΩΣΣΑ’ το οποίο:

(α) καταχωρεί στον πίνακα δυο διαστάσεων ΕΠΩΝ_ΚΑΤ την επωνυμία και την κατηγορία κάθε ξενοδοχείου ως εξής:
·   Στην πρώτη στήλη του πίνακα καταχωρείται η επωνυμία. Ο πρώτος χαρακτήρας κάθε επωνυμίας δεν πρέπει να ξεκινά από γράμμα μικρότερο από ‘Ε’ αλλά ούτε και από γράμμα μεγαλύτερο από ΄Ζ’.
·   Στη δεύτερη στήλη του πίνακα καταχωρείται η κατηγορία. Κάθε κατηγορία πρέπει να είναι μια από τις ακόλουθες: ‘B’, ‘Γ’, ‘Δ’.

(β) καταχωρεί στον πίνακα δυο διαστάσεων ΕΙΣ τη μηνιαία είσπραξη που πραγματοποίησε κάθε ξενοδοχείο. Κάθε είσπραξη δεν πρέπει να υπολείπεται των 15000 ευρω αλλά ούτε και να ξεπερνά τα 150000 ευρω.

(γ) υπολογίζει και καταχωρεί στο μονοδιάστατο πίνακα ΜΕ το μέσο όρο ετήσιας είσπραξης κάθε ξενοδοχείου

(δ) βρίσκει και τυπώνει το πλήθος των ξενοδοχείων της κατηγορίας ‘Β’ τα οποία είχαν μέση ετήσια είσπραξη άνω των 80000 ευρω

(ε)σε περίπτωση που τα ξενοδοχεία που βρέθηκαν στο προηγούμενο ερώτημα είναι τουλάχιστον δέκα(10) αναζητά και τυπώνει τη επωνυμία και την αντίστοιχη μέση ετήσια είσπραξη των ξενοδοχείων αυτών.

Η αναζήτηση πρέπει να σταματά μόλις ολοκληρωθεί η τύπωση των ανώτερων στοιχείων και του τελευταίου ξενοδοχείου του προηγούμενου ερωτήματος.

Λύση
ΠΡΟΓΡΑΜΜΑ ΞΕΝΟΔΟΧΕΙΑ
ΜΕΤΑΒΛΗΤΕΣ
   ΠΡΑΓΜΑΤΙΚΕΣ:είσπραξη, άθροισμα, ΜΟ
   ΑΚΕΡΑΙΕΣ:πλήθος
   ΧΑΡΑΚΤΗΡΕΣ:επωνυμία, κατηγορία
ΑΡΧΗ
(α)
ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 1000
   ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ επωνυμία
   ΜΕΧΡΙΣ_ΟΤΟΥ επωνυμία =’Ε’ ή επωνυμία =’Ζ’
ΕΠΩΝ_ΚΑΤ [ί,1] <- επωνυμία
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ κατηγορία
   ΜΕΧΡΙΣ_ΟΤΟΥ κατηγορία =’Α’ ή κατηγορία =’Β’ ή κατηγορία =’Γ’
ΕΠΩΝ_ΚΑΤ [ί,2] <- κατηγορία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

(β)
ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 1000
   ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ είσπραξη
      ΜΕΧΡΙΣ_ΟΤΟΥ είσπραξη<150000 ΚΑΙ είσπραξη >15000
      ΕΙΣ[ί, j] <- είσπραξη
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

(γ)
ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 1000
      ΑΘΡΟΙΣΜΑ[ί]<- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
ΑΘΡΟΙΣΜΑ[ί]<- ΑΘΡΟΙΣΜΑ[ί] + ΕΙΣ[ί, j]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΕ [ί] <- ΑΘΡΟΙΣΜΑ[ί] / 12
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

(δ)
Πλήθος<- 0
ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 1000
    ΑΝ ΕΠΩΝ_ΚΑΤ [ί,2]= ‘Β’ ΤΟΤΕ
   ΑΝ ΜΕ[ί]>80000 ΤΟΤΕ
      Πλήθος<- Πλήθος + 1
ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

(ε)



θα ήθελα να ρωτήσω τα εξής:
1)   το ΜΟ το δηλώνουμε στις μεταβλητές?
2)   Πως μπορούμε να προσδιορίσουμε το πρώτο ψηφίο που μας ζητάει στο (α) ερώτημα?
3)   Στο (ε) θα πάρουμε
ΑΝ πλήθος>10 ΤΟΤΕ
Για ι από 1 μέχρι πλήθος….και μετά την αναζήτηση πως θα την κάνουμε?


Ευχαριστώ Δημήτρης

sgsfak

Παράθεση από: jimis στις 26 Απρ 2006, 02:54:05 ΜΜ
Καλησπέρα!
Μου έφερε ένας μαθητής τα θέματα προσομοίωσης. Θα μπορούσατε να μου πείτε τη γνώμη σας για τα παρακάτω δυο θέματα
...
Πως θα ξέρουμε εδώ αν το Β[Κ, L]>0?

???
Θα πρέπει να παρακολουθήσεις τις μεταβλητές και να δεις τι τιμές έχουν τα K και L σε εκείνο το σημείο. Ο πίνακας Β του υποπρογράμματος είναι στην ουσία ο πίνακας Α του κυρίου προγράμματος και επομένως ότι αλλαγές γίνουν στον Β στο υποπρόγραμμα είναι σαν να γίνονται στον Α.
Παράθεση
Θέμα 3ο
...
θα ήθελα να ρωτήσω τα εξής:
1)   το ΜΟ το δηλώνουμε στις μεταβλητές?
To MO το έχεις δηλώσει στις μεταβλητές αλλά δεν το χρησιμοποιείς πουθενά στο πρόγραμμα. Εννοείται ότι ό,τι μεταβλητές χρησιμοποιήσεις σε ένα πρόγραμμα πρέπει να είναι δηλωμένες. Στην περίπτωση σου έχεις ξεχάσει να δηλώσεις τις i, j, ΕΠΩΝ_ΚΑΤ, ΕΙΣ, και ΜΕ.

Παράθεση
2)   Πως μπορούμε να προσδιορίσουμε το πρώτο ψηφίο που μας ζητάει στο (α) ερώτημα?

Περίπου όπως το έκανες αλλά το σωστό είναι:

Κώδικας: ΓΛΩΣΣΑ
   ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
     ΔΙΑΒΑΣΕ επωνυμία
   ΜΕΧΡΙΣ_ΟΤΟΥ επωνυμία >='Ε' ΚΑΙ επωνυμία <'Η'


Παράθεση
3)   Στο (ε) θα πάρουμε
ΑΝ πλήθος>10 ΤΟΤΕ
Για ι από 1 μέχρι πλήθος….και μετά την αναζήτηση πως θα την κάνουμε?

Κώδικας: ΓΛΩΣΣΑ
ΑΝ πλήθος>10 ΤΟΤΕ
 i <- 1
 ΟΣΟ πλήθος>0 ΕΠΑΝΑΛΑΒΕ
    ΑΝ ΕΠΩΝ_ΚΑΤ [ί,2]= 'Β' ΚΑΙ ΜΕ[ί]>80000 ΤΟΤΕ
      ΓΡΑΨΕ ΕΠΩΝ_ΚΑΤ [ί,1], ΜΕ[i]
      πλήθος <- πλήθος - 1
    ΤΕΛΟΣ_ΑΝ
    i <- i + 1
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ


Δε χρειάζεται στην επανάληψη του ΟΣΟ να ελέγξουμε για το i<=1000 επειδή γνωρίζουμε από το προηγούμενο ερώτημα ότι υπάρχουν ακριβώς "πλήθος" ξενοδοχεία που ικανοποιούν τα κριτήρια μέσα σταν πίνακα.

Στ.

Dinos

Όσον αφορά στο 2ο θέμα:
ΑΝ ΕΧΕΙΣ ΜΕΤΑΦΕΡΕΙ ΣΩΣΤΑ ΤΟΝ ΚΩΔΙΚΑ:

Α[1,1] = 0
Α[1,2] = 8
Α[1,3] = 0
Α[2,1] = 0
Α[2,2] = 9
Α[2,3] = 0
Α[3,1] = 2
Α[3,2] = 7
Α[3,3] = 0

και φυσικά Sum=0 (;)

Όσον αφορά στο 3ο θέμα:

ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_3_ΟΕΦΦ_2006
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:Ι, J, ΠΛΗΘΟΣ
  ΧΑΡΑΚΤΗΡΕΣ: ΕΠΩΝ_ΚΑΤ[1000, 2]
  ΠΡΑΓΜΑΤΙΚΕΣ: ΕΙΣ[1000, 12], ΜΟ[1000]
ΑΡΧΗ

  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 1000
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'ΠΟΙΑ ΕΙΝΑΙ Η ΕΠΩΝΥΜΙΑ ΤΗΣ ΕΤΑΙΡΙΑΣ Νο:', Ι
      ΔΙΑΒΑΣΕ ΕΠΩΝ_ΚΑΤ[Ι, 1]
    ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΩΝ_ΚΑΤ[Ι, 1]>='Ε' ΚΑΙ ΕΠΩΝ_ΚΑΤ[Ι, 1]<'Η'
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'ΠΟΙΑ ΕΙΝΑΙ Η ΚΑΤΗΓΟΡΙΑ ΤΟΥ ΞΕΝΟΔΟΧΕΙΟΥ:', ΕΠΩΝ_ΚΑΤ[Ι, 1]
      ΔΙΑΒΑΣΕ ΕΠΩΝ_ΚΑΤ[Ι, 2]
    ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΩΝ_ΚΑΤ[Ι, 2]='Β' Η ΕΠΩΝ_ΚΑΤ[Ι, 2]='Γ' Η ΕΠΩΝ_ΚΑΤ[Ι, 2]='Δ'
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΠΛΗΘΟΣ <-- 0
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 1000
    ΓΡΑΨΕ 'ΔΩΣΤΕ ΕΙΣΠΡΑΞΕΙΣ ΓΙΑ ΤΟ ΞΕΝΟΔΟΧΕΙΟ:', ΕΠΩΝ_ΚΑΤ[Ι, 1]
    ΜΟ[Ι] <-- 0
    ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 12
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        ΓΡΑΨΕ 'ΓΙΑ ΤΟ ΜΗΝΑ:', J
        ΔΙΑΒΑΣΕ ΕΙΣ[Ι, J]
      ΜΕΧΡΙΣ_ΟΤΟΥ ΟΧΙ(ΕΙΣ[Ι, J]<15000 Η ΕΙΣ[Ι, J]>150000)
      ΜΟ[Ι] <-- ΜΟ[Ι] + ΕΙΣ[Ι, J]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    MO[I] <-- MO[I]/12
    ΑΝ ΕΠΩΝ_ΚΑΤ[Ι, 2] = 'Β' ΚΑΙ ΜΟ[Ι] > 80000 ΤΟΤΕ
      ΠΛΗΘΟΣ <-- ΠΛΗΘΟΣ + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΑΝ ΠΛΗΘΟΣ >= 10 ΤΟΤΕ
    Ι <-- 1
    ΟΣΟ ΠΛΗΘΟΣ > 0 ΚΑΙ Ι<=1000 ΕΠΑΝΑΛΑΒΕ
      ΑΝ ΕΠΩΝ_ΚΑΤ[Ι, 2] = 'Β' ΚΑΙ ΜΟ[Ι] > 80000 ΤΟΤΕ
        ΓΡΑΨΕ ΕΠΩΝ_ΚΑΤ[Ι, 1], ΜΟ[Ι]
        ΠΛΗΘΟΣ <-- ΠΛΗΘΟΣ - 1
      ΤΕΛΟΣ_ΑΝ
      Ι <-- Ι + 1
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ         




ΠΑΡΑΤΗΡΗΣΕΙΣ:
Το 2ο θέμα είναι αρκετά πολύπλοκο με μεγάλο πλήθος επαναλήψεων (απέχει από το βαθμό δυσκολίας των Πανελληνίων)
Το 3ο θέμα είναι δύσκολο (όχι όμως "απίθανο") με υπερβολικό αριθμό ελέγχων.

kiro

Θα ήθελα να ρωτήσω κάτι σχετικά με το 3ο θέμα, όπως το γράφετε παραπάνω σχετικά με τον έλεγχο του πρώτου ψηφίου της επωνυμίας με την συνθήκη

ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΩΝ_ΚΑΤ[Ι, 1]>='Ε' ΚΑΙ ΕΠΩΝ_ΚΑΤ[Ι, 1]<'Η'

προσδιορίζεται το πρώτο ψηφίο η είναι σαν να παίρνουμε την επωνυμία σαν ένα γράμμα μόνο? Θα μπορούσε να υπάρξει συνθήκη που να προσδιορίζει το πρώτο ψηφίο όπως κάναμε με έναν τριψήφιο αριθμό και προσδιορίζαμε το πρώτο ή το δεύτερο κτλ.?

lsourtzo

#4
Όταν ταξινομείς χαρακτήρες τότε πρέπει να ξέρεις ότι η ταξινόμηση τους ακολουθεί τους παρακάτω κανόνες …

Το ‘Α’ < ‘ΑΑ’
Το ‘ΑΑ’ < ‘ΑΑΑ’
Το ‘Α’ < ‘Β’
Κτλ κτλ

Όπως όταν ταξινομείς αλφαβητικά κάποια ονόματα θεωρείς ότι το Μήνα προηγείται του Μηνάς

Οπότε ποιο συγκεκριμένα στο ερώτημα σου …
Εφόσον το ‘Ε’ < ‘ΕΑ’  τότε λέγοντας ΕΠΩΝ_ΚΑΤ[Ι, 1]>='Ε' συμπεριλαμβάνεις όλα τα ονόματα που ξεκινούν από ‘Ε’

Αν έχεις απορίες βαλτα σε ένα excel και κάνε ταξινόμηση και θα δεις …

alkisg

Σχετικά με την ταξινόμηση και τα τονούμενα / άτονα:
σε όλες τις κωδικοσελίδες (ANSI, iso-8859-7, unicode κτλ) τα τονούμενα ταξινομούνται διαφορετικά από τα άτονα. Π.χ. έναρξη->εκτέλεση->charmap και διαλέγουμε γραμματοσειρά fixedsys για να δούμε τη σειρά των χαρακτήρων σε ταξινόμηση windows-1253, στην οποία π.χ. το ή θεωρείται μικρότερο από το η αλλά ακόμα και από το α, κι έτσι 'Μήνας' < 'Μηνά'!!!

Επίσης, σε όλες τις κωδικοσελίδες, τα κεφαλαία είναι μικρότερα από τα πεζά.

Το Excel δεν ταξινομεί με βάση κάποια κωδικοσελίδα, αλλά με τη λογική του τηλεφωνικού καταλόγου, η οποία δε διακρίνει μεταξύ πεζών, κεφαλαίων και τονισμένων ή άτονων.

Το ζήτημα είναι ότι στο βιβλίο δεν είναι σαφές ποια ταξινόμηση χρησιμοποιεί η ΓΛΩΣΣΑ, οπότε και δεν μπορούμε να είμαστε σίγουροι για τις παραπάνω συγκρίσεις...

lsourtzo

Γενικά συμφωνώ !

το μηνάς και το μήνα ήταν ένα παράδειγμα για γίνει στο περίπου κατανοητός ο τρόπος ταξινόμησης ...
το ίδιο και η προτροπή για το excel ...
συμφωνώ ότι δεν αναφέρετε στο βιβλίο ο ακριβείς τρόπος ταξινόμησης στην γλώσσα, αλλά νομίζω ότι η ερώτηση του kiro ήταν σε πολύ ποιο βασικό επίπεδο ... για αυτό και η διευκρινήσεις ήταν και αυτές εξίσου γενικές !



nekis

Αγαπητοί συνάδελφοι καλημέρα
Νομίζω ότι υπάρχει λάθος στο μαγικό τετράγωνο στο τμήμα του κώδικα (αν ειναι ακριβής η μεταφορά):
ΑΝ j > ί ΤΟΤΕ
             L<- j-1
        ΑΛΛΙΩΣ
   L<- 2
Η τελευταία εντολή θα πρέπει να είναι L<- 3

kiro

ειναι 1 αντι για ί
ΑΝ j > 1 ΤΟΤΕ
             L<- j-1
        ΑΛΛΙΩΣ
   L<- 2