ΘΕΜΑ Τράπεζας θεμάτων 30175

Ξεκίνησε από George Eco, 20 Μαΐου 2023, 04:28:45 ΜΜ

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

George Eco

30175

ΘΕΜΑ 4

Να αναπτύξετε ένα πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:

4.1 Να περιέχει κατάλληλο τμήμα δηλώσεων.
Μονάδες 4

4.2 Να διαβάζει μη αρνητικούς ακέραιους αριθμούς με έλεγχο εγκυρότητας. Το
πρόγραμμα να τερματίζεται όταν εισαχθεί ο αριθμός 0.
Μονάδες 9

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


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

Δείτε τη προτεινόμενη λύση....
ΠΡΟΓΡΑΜΜΑ Δ_5
! Δ1
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: a, sum, count
ΑΡΧΗ
  sum <- 0
  count <- 0
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ a
  ΜΕΧΡΙΣ_ΟΤΟΥ a >= 0
  ΟΣΟ a <> 0 ΕΠΑΝΑΛΑΒΕ
! Δ3
    ΑΝ a > sum/2 ΤΟΤΕ
      count <- count + 1
    ΤΕΛΟΣ_ΑΝ
    sum <- sum + a
! Δ2
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ a
    ΜΕΧΡΙΣ_ΟΤΟΥ a >= 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  count <- count - 1                !Για να μην συμπεριληφθεί και το 1ο στοιχείο
  ΓΡΑΨΕ count
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ



Τα σχόλια δικά σας.
Ενδεικτικά παραθέτω τη δική μου λύση, προς διευκόλυνση όλων.


ΠΡΟΓΡΑΜΜΑ Α_30175
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αρ, πλ, αθ
  ΠΡΑΓΜΑΤΙΚΕΣ: ημι
ΑΡΧΗ

  αθ <- 0
  πλ <- 0

  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ αρ
    ΜΕΧΡΙΣ_ΟΤΟΥ αρ >= 0

    ΑΝ αρ <> 0 ΤΟΤΕ
      αθ <- αθ + αρ
      ημι <- αθ/ 2
      ΑΝ αρ > ημι ΤΟΤΕ
        πλ <- πλ + 1
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ αρ = 0
  
ΑΝ πλ > 0 ΤΟΤΕ  
   πλ <- πλ - 1
ΤΕΛΟΣ_ΑΝ
 
  ΓΡΑΨΕ πλ

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


Το ερώτημα είναι το εξής.
Υπάρχει διασφάλιση ποιότητας θεμάτων στη τράπεζα;
Γιατί αυτό που βλέπω εγώ απαντά με ΟΧΙ.
Βρίσκω συνεχώς προβλήματα κι αρχίζω κι αναρωρτιέμαι σοβαρά τώρα,γιατί θα πρέπει να χρησιμοποιούμε ένα τέτοιο pool από θέματα αμφισβητούμενης ποιότητας. Κάτι πρέπει να γίνει. Τουλάχιστο πλέον για του χρόνου, γιατί φέτος... δε θα γίνει τίποτα.


ssimaiof

Παράθεση από: George Eco στις 20 Μαΐου 2023, 04:28:45 ΜΜ4.3 Να υπολογίζει και εμφανίζει το πλήθος των αριθμών που εισάχθηκαν και ήταν
μεγαλύτεροι από το ημιάθροισμα όλων των προηγουμένων.
Νομίζω ότι είναι απολύτως σαφές στο "ΠΡΟΗΓΟΥΜΕΝΩΝ".
Άρα στη λύση σου πρέπει πρώτα να γίνει ο έλεγχος, η μέτρηση και μετά το άθροισμα.
Εκεί που θέλει διευκρίνηση είναι στο "ΟΛΩΝ". Στο "ΟΛΩΝ" περιλαμβάνεται το κενό σύνολο ή όχι; Δηλαδή εάν εννοεί ότι επειδή ο πρώτος έγκυρος αριθμός δεν έχει προηγούμενους πρέπει να εξαιρεθεί από την μέτρηση. Δεν φαίνεται πουθενά από την εκφώνηση. Ίσα ίσα που αν δοθεί κατευθείαν το μηδέν θα πρέπει να εμφανίσει -1;
Σε γραπτό μαθητών μου θα δεχόμουν ως σωστή λύση που δεν θα περιλάμβανε την εξαίρεση.
Μια λίγο διαφορετική λύση:

ΠΡΟΓΡΑΜΜΑ Δ_5
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: a, sum, count
ΑΡΧΗ
  sum <- 0
  count <- 0
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ a
    ΑΝ a > 0 ΤΟΤΕ
      ΑΝ a > sum/2 ΤΟΤΕ
        count <- count + 1
      ΤΕΛΟΣ_ΑΝ
      sum <- sum + a
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ a = 0
  ΓΡΑΨΕ count
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Σταύρος Σημαιοφορίδης

Melakos Thanasis

#2
ΠΡΟΓΡΑΜΜΑ Δ_5
! Δ1
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: a, sum, count
ΑΡΧΗ
  sum <- 0
  count <- 0
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώστε έναν αριθμό ή 0 για τέλος  '
    ΔΙΑΒΑΣΕ a
  ΜΕΧΡΙΣ_ΟΤΟΥ a >= 0
  ΟΣΟ a <> 0 ΕΠΑΝΑΛΑΒΕ
! Δ3
    ΑΝ a > sum/2 ΤΟΤΕ
      count <- count + 1
    ΤΕΛΟΣ_ΑΝ
    sum <- sum + a
! Δ2
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'Δώστε έναν αριθμό ή 0 για τέλος  '
      ΔΙΑΒΑΣΕ a
    ΜΕΧΡΙΣ_ΟΤΟΥ a >= 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  count <- count - 1!Για να μην συμπεριληφθεί και το 1ο στοιχείο
  ΑΝ count = 0 ΤΟΤΕ
    ΓΡΑΨΕ 'Δεν υπήρξε κανένας αριθμός που να πληροί τα κριτήρια που θέσατε'
  ΑΛΛΙΩΣ_ΑΝ count = 1 ΤΟΤΕ
    ΓΡΑΨΕ 'Ένας αριθμός πληροί τα κριτήρια που θέσατε'
  ΑΛΛΙΩΣ_ΑΝ count > 0 ΤΟΤΕ
    ΓΡΑΨΕ 'Το πλήθος των αριθμών που πληρούν τα κριτήρια που θέσατε είναι: ', count
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Δεν δώσατε κανένα αριθμό για επεξεργασία'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τι λέτε γι αυτό?

George Eco

Μια χαρά τα λες ssimaiof! Δεν είναι σε αυτό η ένστασή μου. Είναι σαφές όντως.
Αν τερματιστεί το πρόγραμμα ΔΕ θα εμφανίσει αποτέλεσμα συνάδελφε. Είναι διατυπωμένο λάθος.