ΔΣ1. Κεφάλαιο 10. Μετατροπή νομισμάτων

Να γράψεις ένα πρόγραμμα το οποίο διαβάζει την τιμή βιβλίων σε ΕΥΡΩ και μετατρέπει τις τιμές τους σε Δραχμές, Γερμανικά Μάρκα, Γαλλικά Φράγκα και Ιταλικές Λιρέτες. Να χρησιμοποιήσεις για τις μετατροπές τις τρέχουσες ισοτιμίες των νομισμάτων.

ΛΥΣΗ (περισσότερα…)

ΔΣ3. Κεφάλαιο 10. Επικρατούσα τιμή στοιχείων πίνακα

Να επεκτείνεις το παράδειγμα 1, ώστε να υπολογίζει την επικρατούσα τιμή, δηλαδή την τιμή που εμφανίζεται περισσότερες φορές.

ΛΥΣΗ

! εύρεση της τιμής που εμφανίζεται συχνότερα σε έναν πίνακα
ΠΡΟΓΡΑΜΜΑ Επικρατούσα_Τιμή
ΜΕΤΑΒΛΗΤΕΣ  
ΑΚΕΡΑΙΕΣ: ΣΤΟΙΧΕΙΑ[100], ΠΛΗΘΟΣ, ΤΙΜΗ[100], ΣΥΧΝΟΤΗΤΑ[100], ΘΕΣΗ
ΑΡΧΗ 
ΚΑΛΕΣΕ Εισαγωγή_δεδ(ΣΤΟΙΧΕΙΑ, ΠΛΗΘΟΣ)
ΚΑΛΕΣΕ Ταξινόμησε(ΣΤΟΙΧΕΙΑ, ΠΛΗΘΟΣ)
ΚΑΛΕΣΕ Συχνότητα_στοιχείων(ΣΤΟΙΧΕΙΑ, ΠΛΗΘΟΣ, ΤΙΜΗ, ΣΥΧΝΟΤΗΤΑ)
ΘΕΣΗ<-- Θέση_μέγιστο_πίνακα(ΣΥΧΝΟΤΗΤΑ, ΠΛΗΘΟΣ)
! απαιτείται επέκταση για περισσότερες τιμές με ίδια μέγιστη συχνότητα
ΓΡΑΨΕ 'Επικρατούσα τιμή =', ΤΙΜΗ[ΘΕΣΗ] 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

! εισαγωγή στοιχείων σε πίνακα ίσα με πλήθος
ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_δεδ(στοιχεία, πλήθος)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, πλήθος, στοιχεία[100]
ΑΡΧΗ
! Εισαγωγή στοιχείων 
ΓΡΑΨΕ 'Δώσε το πλήθος των αριθμών (μέγιστο 100)' 
ΔΙΑΒΑΣΕ πλήθος 
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος 
    ΓΡΑΨΕ 'Δώσε έναν αριθμό' 
    ΔΙΑΒΑΣΕ στοιχεία[i] 
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ Ταξινόμησε(Πίνακας, Ν) 
!Ταξινόμηση των στοιχείων του πίνακα ('έξυπνη')
ΜΕΤΑΒΛΗΤΕΣ 
ΑΚΕΡΑΙΕΣ:I,Ν1,Τ,Βοηθητική, Πίνακας[100], Ν 
ΑΡΧΗ 
Ν1 <-- Ν 
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ 
    Τ <-- 0 
    ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ Ν1-1 
        ΑΝ Πίνακας[I] > Πίνακας[I+1] ΤΟΤΕ
           Βοηθητική <-- Πίνακας[I] 
           Πίνακας[I] <-- Πίνακας[I+1] 
           Πίνακας[I+1] <-- Βοηθητική 
           Τ <-- I 
        ΤΕΛΟΣ_ΑΝ 
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ 
    Ν1 <-- Τ 
ΜΕΧΡΙΣ_ΟΤΟΥ Τ=0 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

! δέχεται ως είσοδο ΤΑΞΙΝΟΜΗΜΕΝΟ πίνακα με στοιχεία ίσα με πλήθος
! καταχωρεί σε 2 νέους παράλληλους πίνακες τις μοναδικές τιμές στον πίνακα τιμή
! και τη συχνότητα εμφάνισης τους στον πίνακα συχνότητα
ΔΙΑΔΙΚΑΣΙΑ Συχνότητα_στοιχείων(στοιχεία, πλήθος, τιμή, συχνότητα)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: στοιχεία[100], πλήθος, i, j, συχνότητα[100], τιμή[100]
ΑΡΧΗ
! Αρχικοποίηση πίνακα-μετρητή συχνότητα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος
    συχνότητα[i]<--0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

τιμή[1]<-- στοιχεία[1]
συχνότητα[1] <-- 1
j<--1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ πλήθος
    ΑΝ στοιχεία[i] <> στοιχεία[i-1] ΤΟΤΕ
       j<--j+1
       τιμή[j]<--στοιχεία[i]
    ΤΕΛΟΣ_ΑΝ
    συχνότητα[j] <-- συχνότητα[j] + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

! επιστρέφει τη θέση του μέγιστου στοιχείου ενός πίνακα
ΣΥΝΑΡΤΗΣΗ Θέση_μέγιστο_πίνακα(συχνότητα,πλήθος) : ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: συχνότητα[100], θέση, πλήθος, max, i
ΑΡΧΗ
θέση<--1
max<--συχνότητα[1]
ΓΙΑ i ΑΠΟ 2 ΜΈΧΡΙ πλήθος
    ΑΝ συχνότητα[i]> max ΤΌΤΕ
       max<--συχνότητα[i]
       θέση<--i
    ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Θέση_μέγιστο_πίνακα<-- θέση
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΣ4. Κεφάλαιο 10. Υπολογισμών ολικής αντίστασης / αγωγιμότητας, ΔΕ5 με τη χρήση υποπρογραμμάτων

Να γράψεις το πρόγραμμα ΔΕ5 του κεφαλαίου 8 που υπολογίζει τη συνολική χωρητικότητα πυκνωτών και τη συνολική αντίσταση αντιστάσεων με τη χρήση υποπρογραμμάτων.

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ ΟΛΙΚΗ_R_C
 ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ: ΕΠΙΛΟΓΗ, ΠΛΗΘΟΣ
 ΠΡΑΓΜΑΤΙΚΕΣ: ΟΛΙΚΗ, ΜΕΓΕΘΟΣ[100] ! άθροιση μέχρι 100 στοιχείων
 ΛΟΓΙΚΕΣ: Άθροισμα_Αντιστρόφων
 ΑΡΧΗ
 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
     ΚΑΛΕΣΕ Μενού(ΕΠΙΛΟΓΗ)
     ΑΝ ΕΠΙΛΟΓΗ = 5 ΤΟΤΕ 
        ΓΡΑΨΕ 'ΕΞΟΔΟΣ'
     ΑΛΛΙΩΣ
        ΚΑΛΕΣΕ Εισαγωγή_Δεδ(ΜΕΓΕΘΟΣ, ΠΛΗΘΟΣ)
        ΑΝ ΕΠΙΛΟΓΗ = 1 ΤΟΤΕ                  ! αντιστάσεις σε σειρά
           Αθροισμα_Αντιστρόφων <-- ΨΕΥΔΗΣ
        ΑΛΛΙΩΣ_ΑΝ ΕΠΙΛΟΓΗ=2 ΤΟΤΕ             ! αντιστάσεις παράλληλα
           Άθροισμα_Αντιστρόφων <-- ΑΛΗΘΗΣ
        ΑΛΛΙΩΣ_ΑΝ ΕΠΙΛΟΓΗ = 3 ΤΟΤΕ           ! πυκνωτές σε σειρά
           Άθροισμα_Αντιστρόφων <-- ΑΛΗΘΗΣ
        ΑΛΛΙΩΣ_ΑΝ ΕΠΙΛΟΓΗ=4 ΤΟΤΕ             ! πυκνωτές παράλληλα
           Άθροισμα_Αντιστρόφων <-- ΨΕΥΔΗΣ
        ! Προαιρετικά, έλεγχος εισόδου.
        ΑΛΛΙΩΣ
           ΓΡΑΨΕ 'Επίλεξε από 1 ως 5'
        ΤΕΛΟΣ_ΑΝ
        ΟΛΙΚΗ<-- Ολ_Μέγεθος(Άθροισμα_Αντιστρόφων, ΜΕΓΕΘΟΣ, ΠΛΗΘΟΣ)
        ΚΑΛΕΣΕ Εμφάνιση_αποτ(ΕΠΙΛΟΓΗ,ΟΛΙΚΗ)
     ΤΕΛΟΣ_ΑΝ
 ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΙΛΟΓΗ = 5
 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Μενού(επιλογή)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:επιλογή
ΑΡΧΗ
  ΓΡΑΨΕ '1. Αντιστάσεις σε Σειρά'
  ΓΡΑΨΕ '2. Αντιστάσεις Παράλληλα'
  ΓΡΑΨΕ '3. Πυκνωτές σε Σειρά'
  ΓΡΑΨΕ '4. Αντιστάσεις σε Σειρά'
  ΓΡΑΨΕ '5. Έξοδος'
  ΓΡΑΨΕ 'Επίλεξε υπολογισμό (1-5)'
  ΔΙΑΒΑΣΕ επιλογή
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_δεδ(στοιχείο, πλήθος)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:πλήθος, i 
ΠΡΑΓΜΑΤΙΚΕΣ:στοιχείο[100]
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε πλήθος στοιχείων'
 ΔΙΑΒΑΣΕ πλήθος
 ΓΙΑ i από 1 μέχρι πλήθος
  ΓΡΑΨΕ 'Δώσε μέγεθος στοιχείου: ', i
  ΔΙΑΒΑΣΕ στοιχείο[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Εμφάνιση_αποτ(επιλογή, τιμή)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: τιμή
ΑΚΕΡΑΙΕΣ: επιλογή
ΑΡΧΗ
ΑΝ ΕΠΙΛΟΓΗ = 1 Ή ΕΠΙΛΟΓΗ = 2 ΤΟΤΕ
   ΓΡΑΨΕ 'ΣΥΝΟΛΙΚΗ ΑΝΤΙΣΤΑΣΗ = ', τιμή
ΤΕΛΟΣ_ΑΝ
ΑΝ ΕΠΙΛΟΓΗ = 3 Ή ΕΠΙΛΟΓΗ = 4 ΤΟΤΕ
   ΓΡΑΨΕ 'ΣΥΝΟΛΙΚΗ ΧΩΡΗΤΙΚΟΤΗΤΑ= ', τιμή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ Ολ_Μέγεθος(Αντίστροφοι, στοιχείο, πλήθος): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλήθος, i
ΠΡΑΓΜΑΤΙΚΕΣ: στοιχείο[100], Sum
ΛΟΓΙΚΕΣ: Αντίστροφοι
ΑΡΧΗ
Sum<--0
ΑΝ Αντίστροφοι = ΨΕΥΔΗΣ ΤΟΤΕ 
   ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος
       Sum <-- Sum + στοιχείο[i]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
   ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος
       Sum <-- Sum + 1 / στοιχείο[i]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ

Ολ_Μέγεθος <-- Sum
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 

ΔΣ5. Κεφάλαιο 10. Πρόσθεση κλασμάτων

Να γραφεί πρόγραμμα το οποίο να προσθέτει δύο κλάσματα. Το πρόγραμμα δέχεται τέσσερις ακεραίους αριθμούς, τους παρονομαστές και τους αριθμητές των δύο κλασμάτων, υπολογίζει και εκτυπώνει τον αριθμητή και τον παρονομαστή του αποτελέσματος. Α/Β + Γ/Δ = Ε/Ζ

Υπόδειξη: Ενώ το πρόβλημα αρχικά φαίνεται απλό, η υλοποίησή του είναι αρκετά πολύπλοκη. Αρχικά πρέπει να απλοποιηθούν τα κλάσματα, στη συνέχεια να γίνουν ομώνυμα, να προστεθούν οι αριθμητές και τέλος να απλοποιηθεί το αποτέλεσμα. Οι διαδικασίες αυτές απαιτούν τον υπολογισμό του ΜΚΔ (για την απλοποίηση) και του ΕΚΠ για τη μετατροπή των κλασμάτων σε ομώνυμα. Να χρησιμοποιήσετε τις συναρτήσεις της άσκησης ΔΕ1.

ΛΥΣΗ (περισσότερα…)

ΔΣ6. Κεφάλαιο 10. Αναζήτηση ριζών εξίσωσης, μέθοδος της διχοτόμησης (παράγραφος 4.3)

Δίνεται η εξίσωση e^x – 2x – 1 = 0. Να γραφεί πρόγραμμα το οποίο να βρίσκει μια ρίζα της εξίσωσης αυτής στο διάστημα [1,2] με τη μέθοδο της διχοτόμησης, όπως περιγράφηκε στην παράγραφο 4.3 του βιβλίου σου.

…” Ο τρόπος που λειτουργεί η δυαδική αναζήτηση είναι ανάλογος με αυτόν της μεθόδου της διχοτόμησης. Η μέθοδος της διχοτόμησης (ή του Bolzano) χρησιμοποιείται για την εύρεση μιας ρίζας της εξίσωσης f(x)=0 στο διάστημα [a, b]. Ως γνωστό, στο διάστημα αυτό υπάρχει μία τουλάχιστον ρίζα, αν ισχύει f(a).f(b)<0 (για την ακρίβεια μπορεί να υπάρχει περιττός αριθμός ριζών). Με τη μέθοδο της διχοτόμησης βρίσκεται ένα σημείο x1 ( = (a+b)/2) στο μέσο του διαστήματος [a, b] και εξετάζεται, αv f(a).f(x1)<0. Αν ναι, τότε η ρίζα υπάρχει στο διάστημα [a, x1], αλλιώς στο [x1, b]. Στη συνέχεια βρίσκεται το μέσο x2 του υποδιαστήματος που υπάρχει η ρίζα και επαναλαμβάνονται τα ίδια. Έτσι σε κάθε επανάληψη εξαιρείται από την έρευνα το μισό διάστημα και προφανώς η ακολουθία τιμών x1, x2,… συγκλίνει προς τη ρίζα της εξίσωσης. Η διαδικασία τερματίζεται, όταν η προσέγγιση της ρίζας θεωρείται ικανοποιητική.”

ΛΥΣΗ (περισσότερα…)