Θέμα Γ

Ξεκίνησε από gpapargi, Χθες στις 08:27:03 ΠΜ

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

gpapargi

Εδώ σχολιάζουμε το θέμα Γ
Γιώργος Παπαργύρης

Sergio

#1
Μια λύση..

ΠΡΟΓΡΑΜΜΑ Σούπερ_Μάρκετ
ΣΤΑΘΕΡΕΣ
  Ν = 150
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ι, ΑΠΟΘ[Ν], Κατ, Κουτ, Κατ_Εξ, π, π_5
  ΠΡΑΓΜΑΤΙΚΕΣ: ποσ
ΑΡΧΗ
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ ΑΠΟΘ[ι] 
    ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠΟΘ[ι] > 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  Κατ_Εξ <- 0
  π <- 0
  π_5 <- 0
  ΔΙΑΒΑΣΕ Κατ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    π <- π + 1
    ΔΙΑΒΑΣΕ Κουτ
    ΑΝ ΑΠΟΘ[Κατ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δεν υπάρχει απόθεμα'
    ΑΛΛΙΩΣ
      ΑΝ ΑΠΟΘ[Κατ] >= Κουτ ΤΟΤΕ
        ΑΠΟΘ[Κατ] <- ΑΠΟΘ[Κατ] - Κουτ
        π_5 <- π_5 + 1
      ΑΛΛΙΩΣ
        ΑΠΟΘ[Κατ] <- 0
      ΤΕΛΟΣ_ΑΝ
      ΑΝ ΑΠΟΘ[Κατ] = 0 ΚΑΙ Κατ_Εξ = 0 ΤΟΤΕ
        Κατ_Εξ <- Κατ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
    ΔΙΑΒΑΣΕ Κατ
  ΜΕΧΡΙΣ_ΟΤΟΥ Κατ = 0
  ΑΝ Κατ_Εξ = 0 ΤΟΤΕ
    ΓΡΑΨΕ "Δεν εξαντλήθηκε το απόθεμα σε ΚΑΝΕΝΑ κατάστημα"
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ "Το απόθεμα εξαντλήθηκε πρώτα στο κατάστημα ", Κατ_Εξ
  ΤΕΛΟΣ_ΑΝ
  ποσ <- π_5/π*100
  ΓΡΑΨΕ ποσ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

nikolasmer

Αυτό το εμφωλευμένο Αν στο ερώτημα Γ3 μπορούμε να το αποφύγουμε;
Εννοώ έτσι;


ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΑΠΟΘ[150], κ, πλ, Ι, ΚΑΤ, ΚΟΥΤΙΑ, ΠΡΩΤΟ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΠΟΣΟΣΤΟ
  ΛΟΓΙΚΕΣ: ΦΛΑΓΚ
ΑΡΧΗ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 150
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ ΑΠΟΘ[Ι] 
    ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠΟΘ[Ι] > 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  πλ <- 0
  κ <- 0
  ΦΛΑΓΚ <- ΨΕΥΔΗΣ
  ΔΙΑΒΑΣΕ ΚΑΤ
  ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
    ΔΙΑΒΑΣΕ ΚΟΥΤΙΑ                               ! Διάβασμα επιθυμητής ποσότητας
    πλ <- πλ + 1                              ! Αύξηση συνολικού πλήθους πελατών
    ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ                ! Έλεγχος αν το απόθεμα έχει μηδενιστεί
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
    ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤΙΑ ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤΙΑ! Ο πελάτης αγοράζει όλη την ποσότητα που ζήτησε
      κ <- κ + 1
    ΑΛΛΙΩΣ
      ΑΠΟΘ[ΚΑΤ] <- 0                    ! Ο πελάτης αγοράζει ό,τι έχει απομείνει
    ΤΕΛΟΣ_ΑΝ
    ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ ΦΛΑΓΚ = ΨΕΥΔΗΣ ΤΟΤΕ
      ΠΡΩΤΟ <- ΚΑΤ        ! Έλεγχος αν εξαντλήθηκε για πρώτη φορά κάποιο απόθεμα
      ΦΛΑΓΚ <- ΑΛΗΘΗΣ
    ΤΕΛΟΣ_ΑΝ
    ΔΙΑΒΑΣΕ ΚΑΤ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΑΝ ΦΛΑΓΚ = ΑΛΗΘΗΣ ΤΟΤΕ
    ΓΡΑΨΕ ΠΡΩΤΟ
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Δεν εξαντλήθηκε απόθεμα σε κανένα υποκατάστημα'
  ΤΕΛΟΣ_ΑΝ

  ΠΟΣΟΣΤΟ <- (κ/πλ)*100      ! Υπολογισμός ποσοστού πλήρους εξυπηρέτησης πελατών
  ΓΡΑΨΕ ΠΟΣΟΣΤΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Μερεντίτης Νικόλαος
Πληροφορικός

petrosp13

Αν θεωρήσουμε ότι ο πελάτης δεν μπορεί να ζητήσει μηδέν κουτιά, μπορούμε να βάλουμε τους ελέγχους

Αν απόθεμα >= κουτιά

Αλλιώς_Αν απόθεμα = 0

Μπορούμε να το θεωρήσουμε όμως;
Εγώ ψηφίζω Ναι
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

nikolasmer

Αυτή είναι η λύση της ΚΕΕ



ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΑΑ, ΑΡ_ΚΟΥΤ, ΑΠΟΘ[150], Ι, ΠΛ, ΠΛ0, ΠΡΩΤΟ, ΠΛΕ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΠΟΣΟΣΤΟ
ΑΡΧΗ
! Γ5
  ΠΛ <- 0
  ΠΛΕ <- 0
! Γ4
  ΠΛ0 <- 0
  ΠΡΩΤΟ <- 0
! Γ1
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 150
    ΓΡΑΨΕ 'ΔΩΣΕ ΑΠΟΘΕΜΑ ', Ι, 'ου ΥΠΟΚΑΤΑΣΤΗΜΑΤΟΣ'
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ ΑΠΟΘ[Ι] 
    ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠΟΘ[Ι] > 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Γ2
  ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΥΠΟΚΑΤΑΣΤΗΜΑΤΟΣ:'
  ΔΙΑΒΑΣΕ ΑΑ
  ΟΣΟ ΑΑ <> 0 ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΚΟΥΤΙΩΝ ΑΝΑΨΥΚΤΙΚΟΥ:'
    ΔΙΑΒΑΣΕ ΑΡ_ΚΟΥΤ
    ΠΛ <- ΠΛ + 1  
! Γ3
    ΑΝ ΑΠΟΘ[ΑΑ] >= ΑΡ_ΚΟΥΤ ΤΟΤΕ
      ΑΠΟΘ[ΑΑ] <- ΑΠΟΘ[ΑΑ] - ΑΡ_ΚΟΥΤ
      ΠΛΕ <- ΠΛΕ + 1
    ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΑΑ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
    ΑΛΛΙΩΣ
      ΑΠΟΘ[ΑΑ] <- 0
    ΤΕΛΟΣ_ΑΝ     
! Γ4
    ΑΝ ΑΠΟΘ[ΑΑ] = 0 ΤΟΤΕ
      ΠΛ0 <- ΠΛ0 + 1
      ΑΝ ΠΛ0 = 1 ΤΟΤΕ
        ΠΡΩΤΟ <- ΑΑ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
 ! Γ2
    ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΥΠΟΚΑΤΑΣΤΗΜΑΤΟΣ:'
    ΔΙΑΒΑΣΕ ΑΑ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Γ5
  ΠΟΣΟΣΤΟ <- ΠΛΕ/ ΠΛ* 100
  ΓΡΑΨΕ 'ΠΟΣΟΣΤΟ ΠΕΛΑΤΩΝ ΠΟΥ ΑΓΟΡΑΣΑΝ ΟΣΑ ΖΗΤΗΣΑΝ: ', ΠΟΣΟΣΤΟ, '%'
! Γ4
  ΑΝ ΠΡΩΤΟ > 0 ΤΟΤΕ
    ΓΡΑΨΕ 'ΣΤΟ ΥΠΟΚΑΤΑΣΤΗΜΑ ', ΠΡΩΤΟ, ' ΕΞΑΝΤΛΗΘΗΚΕ ΠΡΩΤΑ ΤΟ ΑΠΟΘΕΜΑ'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'ΣΕ ΚΑΝΕΝΑ ΥΠΟΚΑΤΑΣΤΗΜΑ ΔΕΝ ΕΞΑΝΤΛΗΘΗΚΕ ΤΟ ΑΠΟΘΕΜΑ'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Προβληματίζομαι λίγο γιατί να λύνει πρώτα το Γ3γ και μετά το Γ3β και γιατί δεν το έδωσε έτσι στην εκφώνηση.
Μερεντίτης Νικόλαος
Πληροφορικός

petrosp13

Γιατί το απόθεμα μπορεί να είναι μηδέν και άρα σίγουρα μικρότερο της ζητούμενης ποσότητας
Είναι άλλη περίπτωση όμως το μηδέν και άλλη το μικρότερο
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

nikolasmer

Έχω δεί κάποιες απαντήσεις στο δίκτυο για το Γ3 και Γ4:

1η Λύση
ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ<>0 ΕΠΑΝΑΛΑΒΕ
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΚΑΙ ΑΠΟΘ[ΚΑΤ] > 0 ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- 0
      ΓΡΑΨΕ 'Δεν υπάρχει απόθεμα'
   ΤΕΛΟΣ_ΑΝ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ FLAG = ΨΕΥΔΗΣ ΤΟΤΕ
     ΠΡΩΤΟ <- ΚΑΤ
      FLAG <- ΑΛΗΘΗΣ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

2η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ<>0 ΕΠΑΝΑΛΑΒΕ
   ΓΡΑΨΕ 'ΔΩΣΕ ΠΟΣΑ ΚΟΥΤΙΑ ΕΠΙΘΥΜΕΙΣ'
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] < ΚΟΥΤ ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΑΛΛΙΩΣ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΤΕΛΟΣ_ΑΝ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ FLAG = ΨΕΥΔΗΣ ΤΟΤΕ
      ΠΡΩΤΟ <- ΚΑΤ
      FLAG <- ΑΛΗΘΗΣ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

3η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΑΛΛΙΩΣ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΤΕΛΟΣ_ΑΝ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ FLAG = ΨΕΥΔΗΣ ΤΟΤΕ
      ΠΡΩΤΟ <- ΚΑΤ
      FLAG <- ΑΛΗΘΗΣ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

4η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΤΟΤΕ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
   ΑΛΛΙΩΣ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΤΕΛΟΣ_ΑΝ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ FLAG = 0 ΤΟΤΕ
      FLAG <- 1
      ΓΡΑΨΕ 'ΕΞΑΝΤΛΗΘΗΚΕ ΠΡΩΤΟ ΤΟ ΑΠΟΘΕΜΑ ΤΟΥ ΚΑΤΑΣΤΗΜΑΤΟΣ', ΚΑΤ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

5η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ > 0 ΕΠΑΝΑΛΑΒΕ
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δεν υπάρχει απόθεμα'
   ΑΛΛΙΩΣ_ΑΝ ΚΟΥΤ <= ΑΠΟΘ[ΚΑΤ] ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΑΛΛΙΩΣ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΤΕΛΟΣ_ΑΝ
   ΑΝ FLAG = ΨΕΥΔΗΣ ΤΟΤΕ
      ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 150
         ΑΝ ΑΠΟΘ[i] = 0 ΤΟΤΕ
            ΠΡΩΤΟ <- i
            FLAG <- ΑΛΗΘΗΣ
         ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

6η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δεν υπάρχει απόθεμα'
   ΑΛΛΙΩΣ_ΑΝ ΚΟΥΤ > ΑΠΟΘ[ΚΑΤ] ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- 0
      ΑΝ ΠΡΩΤΟ = 0 ΤΟΤΕ
         ΠΡΩΤΟ <- ΚΑΤ
      ΤΕΛΟΣ_ΑΝ
   ΑΛΛΙΩΣ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ ΠΡΩΤΟ = 0 ΤΟΤΕ
         ΠΡΩΤΟ <- ΚΑΤ
      ΤΕΛΟΣ_ΑΝ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΤΕΛΟΣ_ΑΝ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

7η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
   ΑΛΛΙΩΣ_ΑΝ ΚΟΥΤ <= ΑΠΟΘ[ΚΑΤ] ΤΟΤΕ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
   ΑΛΛΙΩΣ_ΑΝ ΚΟΥΤ > ΑΠΟΘ[ΚΑΤ] ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΤΕΛΟΣ_ΑΝ
   ΑΝ FLAG = ΨΕΥΔΗΣ ΤΟΤΕ
      ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
         FLAG <- ΑΛΗΘΗΣ
         ΠΡΩΤΟ <- ΚΑΤ
      ΤΕΛΟΣ_ΑΝ
   ΤΕΛΟΣ_ΑΝ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

8η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
   ΓΡΑΨΕ 'ΠΟΣΑ ΚΟΥΤΙΑ ΕΠΙΘΥΜΕΙΣ;'
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] < ΚΟΥΤ ΚΑΙ ΑΠΟΘ[ΚΑΤ] <> 0 ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
   ΤΕΛΟΣ_ΑΝ
   ΑΝ ΠΡΩΤΟ = 0 ΚΑΙ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΠΡΩΤΟ <- ΚΑΤ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

9η Λύση

ΔΙΑΒΑΣΕ ΚΑΤ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δεν υπάρχει απόθεμα'
   ΑΛΛΙΩΣ
      ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΤΟΤΕ
         ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
         ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
      ΑΛΛΙΩΣ
         ΑΠΟΘ[ΚΑΤ] <- 0
      ΤΕΛΟΣ_ΑΝ
      ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ ΠΡΩΤΟ = 0 ΤΟΤΕ
         ΠΡΩΤΟ <- ΚΑΤ
      ΤΕΛΟΣ_ΑΝ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΜΕΧΡΙΣ_ΟΤΟΥ ΚΑΤ = 0

Τροφοδοτώντας την εκφώνηση σε ΑΙ και ρωτόντας για το αλγοριθμικό αποτύπωμα κάθε μιας πήρα τα εξής:

"""Με αυστηρά αλγοριθμικά κριτήρια:
Καλές: 3η, 6η, 7η, 8η
Μέτριες: 4η, 5η, 9η
Προβληματική:

Η λύση που μοιάζει υπερβολικά περισσότερο με της Κεντρικής Επιτροπής είναι η 4η λύση.
Έχει σχεδόν ίδια λογική:

ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΤΟΤΕ
   ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΤΟΤΕ
   ΓΡΑΨΕ 'ΔΕΝ ΥΠΑΡΧΕΙ ΑΠΟΘΕΜΑ'
ΑΛΛΙΩΣ
   ΑΠΟΘ[ΚΑΤ] <- 0
ΤΕΛΟΣ_ΑΝ


Αυτή είναι ουσιαστικά η ίδια τριμερής διάκριση με την επίσημη λύση:
  • επαρκεί το απόθεμα → αφαιρείται η ποσότητα και αυξάνεται ο μετρητής πλήρους εξυπηρέτησης
  • απόθεμα μηδέν → μήνυμα
  • ανεπαρκές αλλά θετικό απόθεμα → μηδενισμός αποθέματος
Πολύ κοντά είναι και η 8η λύση, γιατί ακολουθεί την ίδια λογική, απλώς έχει αλλάξει τη σειρά των δύο τελευταίων περιπτώσεων.

Η πιο καλή μορφή θα ήταν αυτή:

ΔΙΑΒΑΣΕ ΚΑΤ
ΟΣΟ ΚΑΤ <> 0 ΕΠΑΝΑΛΑΒΕ
   ΔΙΑΒΑΣΕ ΚΟΥΤ
   ΠΕΛΑΤΕΣ <- ΠΕΛΑΤΕΣ + 1
   ΑΝ ΑΠΟΘ[ΚΑΤ] >= ΚΟΥΤ ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- ΑΠΟΘ[ΚΑΤ] - ΚΟΥΤ
      ΠΛΗΡΕΙΣ <- ΠΛΗΡΕΙΣ + 1
   ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] > 0 ΤΟΤΕ
      ΑΠΟΘ[ΚΑΤ] <- 0
   ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Δεν υπάρχει απόθεμα'
   ΤΕΛΟΣ_ΑΝ
   ΑΝ ΑΠΟΘ[ΚΑΤ] = 0 ΚΑΙ ΠΡΩΤΟ = 0 ΤΟΤΕ
      ΠΡΩΤΟ <- ΚΑΤ
   ΤΕΛΟΣ_ΑΝ
   ΔΙΑΒΑΣΕ ΚΑΤ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αυτή είναι η πιο καθαρή αλγοριθμικά, γιατί:
  • πρώτα ελέγχει αν μπορεί να δοθεί όλη η ποσότητα,
  • μετά ελέγχει αν υπάρχει θετικό αλλά ανεπαρκές απόθεμα,
  • αλλιώς σημαίνει ότι το απόθεμα είναι μηδέν,
  • κρατά το πρώτο υποκατάστημα που εξαντλήθηκε χωρίς περιττό μετρητή όπως το ΠΛ0.
Άρα, ως πλήρη λύση Θέματος Γ, θα πρότεινα προσέγγιση τύπου 8ης λύσης, αλλά με τον έλεγχο:

ΑΛΛΙΩΣ_ΑΝ ΑΠΟΘ[ΚΑΤ] > 0 ΤΟΤΕ

αντί για πιο σύνθετες συνθήκες."""
Μερεντίτης Νικόλαος
Πληροφορικός

nikolasmer

Παράθεση από: petrosp13 στις Σήμερα στις 06:55:21 ΜΜΓιατί το απόθεμα μπορεί να είναι μηδέν και άρα σίγουρα μικρότερο της ζητούμενης ποσότητας
Είναι άλλη περίπτωση όμως το μηδέν και άλλη το μικρότερο
Δηλαδή αν η εκφώνηση ήταν 
Γ3 α) μετά Γ3 γ) και μετά Γ3 β) δε θα ήταν σωστό;
Μερεντίτης Νικόλαος
Πληροφορικός