Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επιλογής => Μήνυμα ξεκίνησε από: d_bam στις 19 Οκτ 2007, 12:50:07 ΜΜ

Τίτλος: ΑΠΟΡΙΑ ΣΤΟΝ ΤΡΟΠΟ ΣΥΝΤΑΞΗΣ ΤΩΝ ΣΥΝΘΗΚΩΝ
Αποστολή από: d_bam στις 19 Οκτ 2007, 12:50:07 ΜΜ
Σε ασκήσεις που έχουν πέσει κατά καιρούς, υπάρχει πίνακας της μορφής:

μονάδες                    χρέωση ανα μοναδα
0 - 500                               10
501 - 1000                          20
πάνω από 1000                    30

και η άσκηση δεν εξασφαλίζει ότι οι μονάδες είναι πάντα μη αρνητικός αριθμός, ούτε λέει να γίνει έλεγχος

Σε μια τέτοια άσκηση, οι περιπτώσεις που θα πάρω θα πρέπει να  συμπεριλαμβάνουν το μηδέν ή όχι;

Είναι σωστό να πω:  ??????????????

Αν Μ<=500 τότε
     Χ <-- Μ*10
αλλιώς_αν Μ<=1000 τότε
     Χ <-- Μ*20
αλλιώς
     Χ <-- Μ*30
Τέλος_αν
Τίτλος: Απ: ΑΠΟΡΙΑ ΣΤΟΝ ΤΡΟΠΟ ΣΥΝΤΑΞΗΣ ΤΩΝ ΣΥΝΘΗΚΩΝ
Αποστολή από: thomas_lar στις 19 Οκτ 2007, 02:52:40 ΜΜ
Νομίζω ότι σ'αυτές τις περιπτώσεις πρέπει να κάνουμε ξεχωριστά έλεγχο για τις αρνητικές τιμές και όχι να τις συμπεριλάβουμε σε μία συνθήκη (όπως έκανες εσύ).
Δηλαδή να πάρουμε περιπτώσεις για τα 3 διαστήματα ( 0,500 - 501,1000 -  >1000 ) με Αν , Αλλιώς_Αν και στο Αλλιώς να ελέγξουμε την συμπεριφορά του αλγορίθμου για τις αρνητικές τιμές.
Τίτλος: Απ: ΑΠΟΡΙΑ ΣΤΟΝ ΤΡΟΠΟ ΣΥΝΤΑΞΗΣ ΤΩΝ ΣΥΝΘΗΚΩΝ
Αποστολή από: nikosx στις 19 Οκτ 2007, 03:39:42 ΜΜ
Η λύση σου είναι σωστή αφού και 0 να είναι οι μονάδες η χρέωση θα υπολογιστεί ως 0. Υπάρχουν βέβαια και ασκήσεις στις οποίες η εκφώνηση αναφέρει τι πρέπει να γίνει αν μπεί το 0 ή αρνητικός αριθμός ως είσιδος στον αλγόριθμο. Εκεί λειτουργείς ανάλογα.
Τίτλος: Απ: ΑΠΟΡΙΑ ΣΤΟΝ ΤΡΟΠΟ ΣΥΝΤΑΞΗΣ ΤΩΝ ΣΥΝΘΗΚΩΝ
Αποστολή από: Τhanos στις 19 Οκτ 2007, 11:40:20 ΜΜ
Σε περιπτωση ομως που η χρεωση που ζητειται στην δοθεισα ασκηση ειναι κλιμακωτη η λυση που προανεφερες δεν πρεπει να ειναι σωστη καθως π.χ. για 700 μοναδες με κλιμακωτη χρεωση θα πρεπει να χρεωθουν οι 500 πρωτες για 10 και επομενες 200 για 20.Αυτη ειναι η αποψη μου.Παντως υπο κανονικες συνθηκες (δλδ δεν ζητειται η χρεωση να γινει κλιμακωτα) πιστευω οτι η λυση σου στεκει! ;)
Τίτλος: Απ: ΑΠΟΡΙΑ ΣΤΟΝ ΤΡΟΠΟ ΣΥΝΤΑΞΗΣ ΤΩΝ ΣΥΝΘΗΚΩΝ
Αποστολή από: ppan στις 20 Οκτ 2007, 04:04:36 ΜΜ
Προφανώς η άσκηση, έτσι όπως την αναφέρεις, αφορά οπωσδήποτε κλιμακωτό υπολογισμό. Έτσι η σωστή λύση είναι (θεωρώντας ότι οι μονάδες που διαβάζονται είναι μη αρνητικός αριθμός):
Αν Μ<=500 τότε
     Χ <-- Μ*10
αλλιώς_αν Μ<=1000 τότε
     Χ <-- 500*10  + (Μ-500)*20
αλλιώς
     Χ <-- 500*10  + 500*20 + (Μ-1000)*30
Τέλος_αν

Αν βέβαια θέλεις να εξασφαλίσης ότι οι μονάδες Μ είναι οπωσδήποτε μη αρνητικός αριθμός τότε χρησιμοποιώντας μόνο δομή επιλογής θα είναι:

Αν  Μ<0 τότε
    Εμφάνισε  "μη αποδεκτή ποσότητα"
αλλιώς_αν Μ<=500 τότε
    Χ <-- Μ*10
αλλιώς_αν Μ<=1000 τότε
    Χ <-- 500*10  + (Μ-500)*20
αλλιώς
    Χ <-- 500*10  + 500*20 + (Μ-1000)*30
Τέλος_αν

ενώ με χρήση του ελέγχου ορθής καταχώρησης δεδομένων:

Αρχή_επανάληψης
   Διάβασε  Μ
Μέχρις_ότου  Μ>0
Αν Μ<=500 τότε
     Χ <-- Μ*10
αλλιώς_αν Μ<=1000 τότε
     Χ <-- 500*10  + (Μ-500)*20
αλλιώς
     Χ <-- 500*10  + 500*20 + (Μ-1000)*30
Τέλος_αν.