Αποστολέας Θέμα: ΑΣΚΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ (ΚΙΝΗΤΗ ΤΗΛΕΦΩΝΙΑ)  (Αναγνώστηκε 1350 φορές)

landreou

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 124
ΑΣΚΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ (ΚΙΝΗΤΗ ΤΗΛΕΦΩΝΙΑ)
« στις: 12 Ιούλ 2013, 10:43:20 πμ »
Γεια στους φίλους του φόρουμ
Μια άσκηση που έλυσα μόνος θα ήθελα να μου πείτε
[1] τυχόντα λάθη να διορθώσω καθώς και
[2] αν δίνω λύση όπως τη ζητάει η εκφωνηση

Η ΕΚΦΩΝΗΣΗ

ΑΣΚΗΣΗ  1
Μία εταιρία κινητής τηλεφωνίας, έχει 10.000 πελάτες. Για αυτούς έχει καταχωρημένα τα ονόματά τους σε έναν πίνακα ΠΕΛΑΤΗΣ[10000], τον χρόνο ομιλίας σε λεπτά για κάθε έναν, για τους 12 μήνες της χρονιάς που πέρασε στον πίνακα ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[10000, 12], τα μηνύματα που έχουνε στείλει για κάθε μήνα σε έναν πίνακα ΜΗΝΥΜΑΤΑ[10000, 12] και σε έναν πίνακα ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ[10000] τον αριθμό 1 ή 2 ανάλογα με την τιμολογιακή πολιτική που επέλεξαν. Οι τιμολογιακές πολιτικές που υπάρχουν είναι:
Τιμολογιακή πολιτική   1                  2
Πάγιο                          10 €                 15 €
Δωρεάν Χρόνος Ομιλίας   60 λεπτά         100 λεπτά
Δωρεάν Μηνύματα           50                 100
Χρέωση ανά λεπτό μετά
τον δωρεάν χρόνο           0,15€ / λεπτό   0,13€ / λεπτό
ομιλίας   

1. Να γίνει διαδικασία με όνομα ΕΙΣΑΓΩΓΗ_ΔΕΔΟΜΕΝΩΝ η οποία θα γεμίζει τους προηγούμενους πίνακες και θα ελέγχει την σωστή εισαγωγή δεδομένων για τον πίνακα ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ (αποδεκτές τιμές μόνο οι 1 και 2).
2. Να γίνει η συνάρτηση ΥΠΟΛΟΓΙΣΜΟΣ_ΧΡΕΩΣΗΣ που θα υπολογίζει το ποσό που πρέπει να πληρώσει κάποιος βάσει του χρόνου ομιλίας του και του της τιμολογιακής πολιτικής που επέλεξε.
3. Να γίνει η διαδικασία ΕΜΦΑΝΙΣΗ_ΣΤΟΙΧΕΙΩΝ_ΠΑΝΩ_ΑΠΟ_ΟΡΙΟ που θα εμφανίζει τους πελάτες της εταιρίας των οποίων ο λογαριασμός τους (μηνιαίος ή ετήσιος) είναι πάνω από ένα δοθέν όριο καθώς και το ποσό που πρέπει να πληρώσουν.
4. Να γίνει το κυρίως πρόγραμμα το οποίο θα εντοπίζει τους πελάτες που έχουν μέσο μηνιαίο λογαριασμό πάνω από 150€ και στην συνέχεια τους πελάτες που έχουν ετήσιο λογαριασμό πάνω από 2000€.

( Η ΑΣΚΗΣΗ ΚΑΤΑ ΠΕΡΙΕΡΓΟ ΤΡΟΠΟ Ή ΠΑΡΑΛΕΙΨΗ ΔΕ ΜΙΛΑΕΙ ΓΙΑ ΧΡΕΩΣΗ ΑΝΑ ΜΗΝΥΜΑ)

Η ΛΥΣΗ ΠΟΥ ΔΙΝΩ

ΠΡΟΓΡΑΜΜΑ ΕΚΙΤΗΛ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[10,000,12],ΜΗΝΥΜΑΤΑ[10,000,12],ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ[10,000]
ΑΚΕΡΑΙΕΣ :Ι,Κ, ΧΡΕΩΣΗ_ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[10000,12]
ΠΡΑΓΜΑΤΙΚΕΣ : ΟΛΙΚΗ_ΧΡΕΩΣΗ[10,000],ΕΤΗΣΙΑ_ΧΡΕΩΣΗ[10000],ΕΤΗΣΙΑ_ΧΡΕΩΣΗ[10000]
ΠΡΑΓΜΑΤΙΚΕΣ : ΜΕΣΗ_ΜΗΝΙΑΙΑ_ΧΡΕΩΣΗ[10000]
ΧΑΡΑΚΤΗΡΕΣ : ΠΕΛΑΤΗΣ[10,000]
ΑΡΧΗ

ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΔΕΔΟΜΕΝΩΝ(ΠΕΛΑΤΗΣ,ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ,ΜΗΝΥΜΑΤΑ,ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ)

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10000

ΕΤΗΣΙΑ_ΧΡΕΩΣΗ[Ι] <- 0                    ! ΔΗΜΙΟΥΡΓΩ ΠΙΝΑΚΑ ΜΕ ΤΙΣ ΕΤΗΣΙΕΣ ΧΡΕΩΣΕΙΣ

ΜΕΣΗ_ΜΗΝΙΑΙΑ_ΧΡΕΩΣΗ <- 0           ! ΚΑΙ ΠΙΝΑΚΑ ΜΕ ΤΗΝ ΜΕΣΗ ΜΗΝΙΑΙΑ ΧΡΕΩΣΗ ΠΟΥ ΘΑ ΧΡΗΣΙΜΟΠΟΙΗΣΩ ΜΕΤΑ

ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 12

! ΕΠΙΣΗΣ ΣΗΜΙΟΥΡΓΩ ΑΛΛΟΝ ΕΝΑ ΠΙΝΑΚΑ ΧΡΕΩΣΗ_ΑΝΑ_ΜΗΝΑ[10000,12]
! ΟΤΙ ΣΕ ΚΑΘΕ ΘΕΣΗ ΥΠΟΛΟΓΙΖΩ ΜΕΣΩ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ ΤΗΝ ΧΡΕΩΣΗ ΑΝΑ ΜΗΝΑ
ΧΡΕΩΣΗ_ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[Ι,Κ] <- ΥΠΟΛΟΓΙΣΜΟΣ_ΧΡΕΩΣΗΣ(ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ,ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ)

ΕΤΗΣΙΑ_ΧΡΕΩΣΗ[Ι] <-ΕΤΗΣΙΑ_ΧΡΕΩΣΗ[Ι] + ΧΡΕΩΣΗ_ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[Ι,Κ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΜΕΣΗ_ΜΗΝΙΑΙΑ_ΧΡΕΩΣΗ[Ι] <- ΕΤΗΣΙΑ_ΧΡΕΩΣΗ[Ι] / 12

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΗ_ΠΑΝΩ_ΑΠΟ_ΟΡΙΟ(ΜΕΣΗ_ΜΗΝΙΑΙΑ_ΧΡΕΩΣΗ,ΠΕΛΑΤΗΣ,150)

ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΗ_ΠΑΝΩ_ΑΠΟ_ΟΡΙΟ(ΕΤΗΣΙΑ_ΧΡΕΩΣΗ,ΠΕΛΑΤΗΣ,2000)

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




ΣΥΝΑΡΤΗΣΗ ΥΠΟΛΟΣΙΜΟΣ_ΧΡΕΩΣΗΣ(ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ,ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ):ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Κ,ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[10000,12],ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ[10000]
ΠΡΑΓΜΑΤΙΚΕΣ : ΧΡΕΩΣΗ
ΑΡΧΗ
ΑΝ ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ = 1 ΤΟΤΕ  ! ΤΙΜΟΛΟΓΙΑΚΗ ΠΟΛΙΤΙΚΗ 1
   ΑΝ ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[Ι,Κ] <= 60 ΤΟΤΕ
      ΧΡΕΩΣΗ<- 10 ! ΜΟΝΟ ΠΑΓΙΟ
   ΑΛΛΙΩΣ
      ΧΡΕΩΣΗ <- (ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[Ι,Κ]-60)*0.15
   ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΑΝ ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[Ι,Κ] <= 100 ΤΟΤΕ
      ΧΡΕΩΣΗ<- 15 ! ΜΟΝΟ ΠΑΓΙΟ
   ΑΛΛΙΩΣ
      ΧΡΕΩΣΗ<- (ΧΡΟΝΟΣ_ΟΜΙΛΙΑΣ[Ι,Κ]-100)*0.13
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΥΠΟΛΟΓΙΣΜΟΣ_ΧΡΕΩΣΗΣ <- ΧΡΕΩΣΗ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΔΕΔΟΜΕΝΩΝ(Π,ΧΟ,Μ,ΤΧ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Ι,Κ,Μ [10,000,12],ΧΟ[10,000,12],ΤΧ[10,000]
ΧΑΡΑΚΤΗΡΕΣ : Π[10,000]
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10,000
   ΔΙΑΒΑΣΕ Π[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10,000
   ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 12
      ΔΙΑΒΑΣΕ Μ[Ι,Κ]
      ΔΙΑΒΑΣΕ ΧΟ[Ι,Κ]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10,000
   ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ ΤΧ[Ι]
   ΜΕΧΡΙΣ_ΟΤΟΥ (ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ = 1) Ή (ΤΡΟΠΟΣ_ΧΡΕΩΣΗΣ = 2)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕΜΦΑΝΙΣΗ_ΠΑΝΩ_ΑΠΟ_ΟΡΙΟ(ΠΙΝΑΚΑΣ,ΟΝΟΜΑ,ΟΡΙΟ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Ι
ΠΡΑΓΜΑΤΙΚΕΣ : ΠΙΝΑΚΑΣ[10000]
ΧΑΡΑΚΤΗΡΕΣ : ΟΝΟΜΑ[10000]
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10000
   ΑΝ ΠΙΝΑΚΑΣ > ΟΡΙΟ ΤΟΤΕ
      ΓΡΑΨΕ ΟΝΟΜΑ[Ι] , ΠΙΝΑΚΑΣ[Ι]
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ