343 Ειςαγωγι ςτον Προγραμματιςμό

Σχετικά έγγραφα
343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

16. Πίνακεσ και Συναρτήςεισ

17. Πολυδιάςτατοι πίνακεσ

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Η γλώςςα προγραμματιςμού C

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

ςυςτιματα γραμμικϊν εξιςϊςεων

343 Ειςαγωγι ςτον Προγραμματιςμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

ΔΟΜΗ ΑΠΛΗΣ ΕΠΙΛΟΓΗΣ Αςκήςεισ με ψευδογλώςςα/ διάγραμμα ροήσ. Αντώνης Μαϊργιώτης

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

Οντοκεντρικόσ Προγραμματιςμόσ

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Πανεπιςτιμιο Κφπρου ΟΙΚ 223: Μακθματικά για οικονομολόγουσ ΙΙ Διδάςκων:

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

Η γραφικι παράςταςθ τθσ ςυνάρτθςθσ f(x)=αx+β είναι μια ευκεία με εξίςωςθ y=αx+β θ οποία τζμνει τον άξονα των y ςτο ςθμείο Β(0,β) και ζχει κλίςθ λ=α.

Βάςεισ Δεδομζνων Ι. Ενότθτα 10: Συνακροιςτικζσ ςυναρτιςεισ. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικών Πλθροφορικισ ΣΕ

ΥΡΟΝΣΙ ΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣ Η» ΔΙΑΓΩΝΙ ΜΑ ΑΕΠΠ

343 Ειςαγωγι ςτον Προγραμματιςμό

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

(Α3 1 ) Σασ δίνεται το παρακάτω αλγορικμικό τμιμα

Ε. ε περίπτωςθ που θ διαφορά των δφο ηαριϊν είναι 3 τότε ο παίκτθσ ξαναρίχνει μόνο ζνα ηάρι.

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Διάδοση θερμότητας σε μία διάσταση

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

1 ο Διαγώνιςμα για το Α.Ε.Π.Π.

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

ΦΥΕ 14 ΑΚΑΔ. ΕΤΟΣ Η ΕΡΓΑΣΙΑ. Ημερομηνία παράδοςησ: 12 Νοεμβρίου (Όλεσ οι αςκιςεισ βακμολογοφνται ιςοτίμωσ με 10 μονάδεσ θ κάκε μία)

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

Πωσ δθμιουργώ φακζλουσ;

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Αν η ςυνάρτηςη ƒ είναι ςυνεχήσ ςτο να προςδιορίςετε το α.

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

1. Κατέβαςμα του VirtueMart

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

1. Αν θ ςυνάρτθςθ είναι ΠΟΛΤΩΝΤΜΙΚΗ τότε το πεδίο οριςμοφ είναι το διότι για κάκε x θ f(x) δίνει πραγματικό αρικμό.

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Αςφάλεια και Προςταςία Δεδομζνων

Γενικά Μαθηματικά ΙΙ

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Οντοκεντρικόσ Ρρογραμματιςμόσ

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Θεςιακά ςυςτιματα αρίκμθςθσ

Γενικά Μαθηματικά ΙΙ Αςκήςεισ 11 ησ Ενότητασ

Ειδικά Θζματα Βάςεων Δεδομζνων

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Δομζσ Δεδομζνων Πίνακεσ

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο

Τάξη Β. Φυςικθ Γενικθσ Παιδείασ. Τράπεζα ιεμάτων Κεφ.1 ο ΘΕΜΑ Δ. Για όλεσ τισ αςκθςεισ δίνεται η ηλεκτρικθ ςταιερά

Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ

Συναρτήσεις και Πίνακες

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

Προχωρθμζνα Θζματα Συςτθμάτων Ελζγχου

Γενικά Μαθηματικά ΙΙ

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

α) Στο μιγαδικό επίπεδο οι εικόνεσ δφο ςυηυγϊν μιγαδικϊν είναι ςθμεία ςυμμετρικά ωσ προσ τον πραγματικό άξονα

Δομές Επανάληψης. Εισαγωγή στη C++

Δϋ Δθμοτικοφ 12 θ Κυπριακι Μακθματικι Ολυμπιάδα Απρίλιοσ 2011

ΜΑΘΗΜΑΤΙΚΑ ΕΠΙΠΕΔΟ (Β - Γ Λυκείου)

Εργαςτιριο Βάςεων Δεδομζνων

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version )

Transcript:

343 Ειςαγωγι ςτον Προγραμματιςμό Σμιμα Μακθματικϊν Πανεπιςτιμιο Ιωαννίνων Ακαδθμαϊκό Ζτοσ 2018-2019 Χάρθσ Παπαδόπουλοσ 207δ, B όροφοσ e-mail: charis@cs.uoi.gr Ωρεσ Γραφείου: Σρίτθ 11-13

Ενότθτεσ 1-24 ΕΠΑΝΑΛΗΨΗ 11-2

Γραπτζσ Εξετάςεισ Προςοχι ςτθν εκφϊνθςθ Δεν είναι απαραίτθτεσ οι εντολζσ using namespace std; system("pause"); ςε ολοκλθρωμζνα προγράμματα κεφτείτε ξεχωριςτά τον οριςμό των ςυναρτιςεων από τθν ςυνάρτθςθ main() ε επόμενο βιμα γράφετε τθν main() με ςτόχο να καλζςετε τθν ςυν/ςθ που φτιάξατε #include <iostream> void fun1( ); int fun2( ); int main( ) return 0; void fun1( ) int fun2() 11-3

Γραπτζσ Εξετάςεισ Προςοχι ςτθν εκφϊνθςθ Δεν είναι απαραίτθτεσ οι εντολζσ using namespace std; system("pause"); ςε ολοκλθρωμζνα προγράμματα κεφτείτε ξεχωριςτά τον οριςμό των ςυναρτιςεων από τθν ςυνάρτθςθ main() ε επόμενο βιμα γράφετε τθν main() με ςτόχο να καλζςετε τθν ςυν/ςθ που φτιάξατε #include <iostream> void fun1( ); int fun2( ); int main( ) return 0; void fun1( ) β) υποερϊτθμα int fun2() γ) υποερϊτθμα α) υποερϊτθμα 11-4

Μ.Ο. τριϊν ακεραίων Να γραφεί ζνα πρόγραμμα που διαβάηει τρεισ κετικοφσ ακεραίουσ και υπολογίηει το μζςο όρο των τριϊν ακεραίων 11-5

Μ.Ο. τριϊν ακεραίων Να γραφεί ζνα πρόγραμμα που διαβάηει τρεισ κετικοφσ ακεραίουσ και υπολογίηει το μζςο όρο των τριϊν ακεραίων #include <iostream> int main( ) int x, y, z, sum; double avg; cout << "Enter x,y,z:"; cin >> x >> y >> z; sum = x + y + z; avg = static_cast<double>(sum)/3; // ή avg = sum / 3.0 ; cout << "Avg: " << avg; return 0; 11-6

Μ.Ο. τριϊν ακεραίων Να γραφεί ζνα πρόγραμμα που διαβάηει τρεισ κετικοφσ ακεραίουσ και υπολογίηει το μζςο όρο των τριϊν ακεραίων. Κατά τθν είςοδο να γίνεται επαναλθπτικόσ ζλεγχοσ τιμϊν. 11-7

Μ.Ο. τριϊν ακεραίων Να γραφεί ζνα πρόγραμμα που διαβάηει τρεισ κετικοφσ ακεραίουσ και υπολογίηει το μζςο όρο των τριϊν ακεραίων. Κατά τθν είςοδο να γίνεται επαναλθπτικόσ ζλεγχοσ τιμϊν. #include <iostream> int main( ) int x, y, z, sum; double avg; do cout << "Enter x,y,z:"; cin >> x >> y >> z; while( (x < 0) (y < 0) (z <0) ); sum = x + y + z; avg = static_cast<double>(sum)/3; // ή avg = sum / 3.0 ; cout << "Avg: " << avg; 11-8

Μ.Ο. τριϊν ακεραίων Να γραφεί μια ςυνάρτθςθ που δζχεται τρεισ κετικοφσ ακεραίουσ και υπολογίηει το μζςο όρο των τριϊν ακεραίων. main(): Καλζςτε από τθν main() τθν ςυνάρτθςθ που φτιάξατε αφοφ πρϊτα διαβάςετε τουσ αρικμοφσ. Θα πρζπει κατά τθν είςοδο να ελζγχετε (επαναλθπτικά) για επιτρεπτζσ τιμζσ. 11-9

#include <iostream> double avg(int x, int y, int z); int main( ) int x, y, z; double avg; do cout << "Enter x,y,z:"; cin >> x >> y >> z; while( (x < 0) (y < 0) (z <0) ); cout << "Avg: " << avg(x, y, z); double avg(int x, int y, int z) int sum; sum = x + y + z; return ( static_cast<double>(sum) / 3 ); 11-10

Μ.Ο. τριϊν ακεραίων Να γραφεί ζνα πρόγραμμα που διαβάηει τρεισ κετικοφσ ακεραίουσ και υπολογίηει το μζςο όρο των τριϊν ακεραίων. Θα πρζπει να χρθςιμοποιιςετε τουλάχιςτον τρεισ ςυν/ςεισ: μια για διάβαςμα μια για υπολογιςμό μια για εκτφπωςθ Θα πρζπει κατά τθν είςοδο να ελζγχετε (επαναλθπτικά) για επιτρεπτζσ τιμζσ. 11-11

#include <iostream> void read(int &x, int &y, int &z); double avg(int x, int y, int z); void print(double a); int main( ) int x, y, z; double mo; read(x,y,z); mo = avg(x,y,z); print(mo); void read(int &x, int &y, int &z) do cout << "Enter x,y,z:"; cin >> x >> y >> z; while( (x < 0) (y < 0) (z <0) ); void print(double a) cout << "Avg: " << a << endl; double avg(int x, int y, int z) int sum; sum = x + y + z; return ( static_cast<double>(sum) / 3 ); 11-12

Γενικά Όλεσ οι προθγοφμενεσ παραλλαγζσ ςτισ εκφωνιςεισ απαιτοφν και διαφορετικό τρόπο επίλυςθσ Πρόγραμμα Πρόγραμμα με ςυναρτιςεισ Πρόγραμμα με ςυναρτιςεισ και ζλεγχο δεδομζνων Πρόγραμμα με επιμζρουσ ςυναρτιςεισ (προςοχι ςτισ &παραμζτρουσ) Πρόγραμμα με επιμζρουσ ςυναρτιςεισ και επαναλθπτικό υπολογιςμό Θα πρζπει να τουσ καταλαβαίνουμε από τθν εκφϊνθςθ ποιο ολοκλθρωμζνο πρόγραμμα ηθτάμε τα υπόλοιπα παραδείγματα μόνο κάποια κατθγορία ηθτάμε και επιλφουμε Θα πρζπει ωςτόςο να μποροφμε να διαχειριςτοφμε και τισ υπόλοιπεσ κατθγορίεσ 11-13

Τπολογιςμόσ υνάρτθςθσ Δθμιουργιςτε μια ςυνάρτθςθ που δζχεται δφο ακζραιεσ τιμζσ x και n, και επιςτρζφει τθν τιμι τθσ ακόλουκθσ ςυνάρτθςθσ 3 5 x 2x 4x ( n 1) x n x n i 3,( 2) ( i 1) x i main(): Καλζςτε από τθν main() τθν ςυνάρτθςθ που φτιάξατε αφοφ πρϊτα διαβάςετε τα x και n και εκτυπϊςτε το ανάλογο αποτζλεςμα τθσ ςυνάρτθςθσ. Θα πρζπει κατά τθν είςοδο να ελζγχετε επαναλθπτικά αν το n είναι περιττό. 11-14

Τπολογιςμόσ υνάρτθςθσ Δθμιουργιςτε μια ςυνάρτθςθ που δζχεται δφο ακζραιεσ τιμζσ x και n, και επιςτρζφει τθν τιμι τθσ ακόλουκθσ ςυνάρτθςθσ 3 5 x 2x 4x ( n 1) x n x n i 3,( 2) ( i 1) x i main(): Καλζςτε από τθν main() τθν ςυνάρτθςθ που φτιάξατε αφοφ πρϊτα διαβάςετε τα x και n και εκτυπϊςτε το ανάλογο αποτζλεςμα τθσ ςυνάρτθςθσ. Θα πρζπει κατά τθν είςοδο να ελζγχετε επαναλθπτικά αν το n είναι περιττό. 11-15

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; 3 5 x 2x 4x ( n while( n % 2 == 0 ); cout << fun(x, n); return 0; 1) x n x n i 3,( 2) ( i 1) x i double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; return sum; 11-16

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; while( n % 2 == 0 ); cout << fun(x, n); return 0; double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; return sum; 11-17

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; while( n % 2 == 0 ); cout << fun(x, n); return 0; double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; return sum; 11-18

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; while( n % 2 == 0 ); cout << fun(x, n); return 0; double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; return sum; 11-19

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; while( n % 2 == 0 ); cout << fun(x, n); return 0; double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; return sum; 11-20

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; while( n % 2 == 0 ); cout << fun(x, n); return 0; Μπορεί να ηθτοφςαμε και ξεχωριςτι ςυνάρτηςη για το διάβαςμα double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; return sum; 11-21

#include <iostream> #include <cmath> double fun(int x, int n); int main() int x, n; do cout << "Give x, odd n "; cin >> x >> n; while( n % 2 == 0 ); cout << fun(x, n); return 0; double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; void read(int& x, int& n) do cin >> x >> n; while( n%2==0 ); return sum; 11-22

#include <iostream> #include <cmath> double fun(int x, int n); void read(int& x, int& n); int main() int x, n; read(x,n); cout << fun(x, n); return 0; double fun(int x, int n) double sum; sum = x; for(int i = 3; i <= n; i = i + 2) sum = sum + (i-1) * pow(x, i) ; void read(int& x, int& n) do cin >> x >> n; while( n%2==0 ); return sum; 11-23

Πλικοσ ςυγκεκριμζνων ςτοιχείων ενόσ πίνακα Να γραφεί μια ςυνάρτθςθ που κα δζχεται ζναν μονοδιάςτατο πίνακα τφπου int και κα επιςτρζφει το πλικοσ των ςτοιχείων που ζχουν τιμι μεταξφ τθσ τιμισ του πρϊτου ςτοιχείου και του τελευταίου. Ενςωματϊςτε τθν ςυνάρτθςθ ςε ζνα κατάλλθλο πρόγραμμα: Θα διαβάηετε τα ςτοιχεία ενόσ πίνακα με μζγεκοσ 100 Θα εκτυπϊνετε το αποτζλεςμα τθσ ςυνάρτθςθσ 11-24

#include <iostream> int count(int x[], int n); int main() const int SIZE = 100; int x[size]; for(int i = 0; i < SIZE; i++) cin >> x[i]; cout << count(x, SIZE); return 0; int count(int x[], int n) int p; p = 0; for(int i = 0; i < n; i++) if( ( x[0] < x[i] && x[i] < x[n-1]) ( x[0] > x[i] && x[i] > x[n-1]) ) p++; return p; 11-25

#include <iostream> int count(int x[], int n); int main() const int SIZE = 100; int x[size]; for(int i = 0; i < SIZE; i++) cin >> x[i]; cout << count(x, SIZE); return 0; int count(int x[], int n) int p; p = 0; for(int i = 0; i < n; i++) if( ( x[0] < x[i] && x[i] < x[n-1]) ( x[0] > x[i] && x[i] > x[n-1]) ) p++; return p; 11-26

Πλικοσ ςυγκεκριμζνων ςτοιχείων ενόσ πίνακα Να γραφεί μια ςυνάρτθςθ που κα δζχεται ζναν μερικώσ ςυμπληρωμένο μονοδιάςτατο πίνακα τφπου int και κα επιςτρζφει το πλικοσ των ςτοιχείων που ζχουν τιμι μεταξφ τθσ τιμισ του πρϊτου ςτοιχείου και του τελευταίου. Ενςωματϊςτε τθν ςυνάρτθςθ ςε ζνα κατάλλθλο πρόγραμμα: Θα διαβάηετε τα ςτοιχεία ενόσ πίνακα με μζγεκοσ μέχρι 100 Θα εκτυπϊνετε το αποτζλεςμα τθσ ςυνάρτθςθσ 11-27

#include <iostream> int count(int x[], int my_n, int n); int main() const int SIZE = 100; int x[size], new_n; do cin >> new_n; while (new_n <= 0 new_n > SIZE); for(int i = 0; i < new_n; i++) cin >> x[i]; 1 οσ τρόποσ: Διαβάηει πρϊτα το Ν (μζγεκοσ του πίνακα) και ςτθ ςυνζχεια διαβάηει τα Ν ςτοιχεία cout << count(x, new_n, SIZE); return 0; int count(int x[], int my_n, int n) int p; p = 0; for(int i = 0; i < my_n; i++) if((x[0]<x[i] && x[i]<x[my_n-1]) (x[0]>x[i] && x[i]>x[my_n-1])) p++; return p; 11-28

#include <iostream> int count(int x[], int my_n, int n); int main() const int SIZE = 100; int x[size], new_n = 0, next; cin >> next; while( next!= -1 new_n < SIZE) x[new_n] = next; new_n++; cin >> next; cout << count(x, new_n, SIZE); return 0; int count(int x[], int my_n, int n) int p; p = 0; for(int i = 0; i < my_n; i++) if((x[0]<x[i] && x[i]<x[my_n-1]) (x[0]>x[i] && x[i]>x[my_n-1])) p++; return p; 2 οσ τρόποσ: Διαβάηει το επόμενο ςτοιχείο μζχρι το "-1" παρακολουκεί το πλικοσ των ςτοιχείων 11-29

Πλικοσ ςυγκεκριμζνων ςτοιχείων ενόσ πίνακα Να γραφεί μια ςυνάρτθςθ που κα δζχεται ζναν μερικώσ ςυμπληρωμένο μονοδιάςτατο πίνακα τφπου int και κα επιςτρζφει το πλικοσ των ςτοιχείων που ζχουν τιμι μεταξφ τθσ τιμισ του πρϊτου ςτοιχείου και του τελευταίου. Ενςωματϊςτε τθν ςυνάρτθςθ ςε ζνα κατάλλθλο πρόγραμμα: Θα ορίςετε και κα χρθςιμοποιείτε μια επιπλζον ςυνάρτθςθ για το διάβαςμα των ςτοιχείων του πίνακα Θα εκτυπϊνετε το αποτζλεςμα τθσ ςυνάρτθςθσ 11-30

#include <iostream> void read(int x[], int& my_n, int n); int count(int x[], int my_n, int n); int main() const int SIZE = 100; int x[size], new_n = 0, next; read(x, new_n, SIZE); cout << count(x, new_n, SIZE); return 0; int count(int x[], int my_n, int n) int p; p = 0; for(int i = 0; i < my_n; i++) if((x[0]<x[i] && x[i]<x[my_n-1]) (x[0]>x[i] && x[i]>x[my_n-1])) p++; return p; 11-31

#include <iostream> void read(int x[], int& my_n, int n); int count(int x[], int my_n, int n); int main() const int SIZE = 100; int x[size], new_n = 0, next; read(x, new_n, SIZE); cout << count(x, new_n, SIZE); return 0; int count(int x[], int my_n, int n) int p; p = 0; for(int i = 0; i < my_n; i++) if((x[0]<x[i] && x[i]<x[my_n-1]) (x[0]>x[i] && x[i]>x[my_n-1])) p++; return p; void read(int x[], int& my_n, int n) cin >> next; while( next!= -1 my_n < n) x[my_n] = next; my_n++; cin >> next; 11-32

Πλθςιζςτερο ςτο μζςο όρο Να γραφεί ζνα πρόγραμμα που κα διαβάηει ζναν μερικϊσ ςυμπλθρωμζνο πίνακα τφπου double και κα επιςτρζφει τθν τιμι του ςτοιχείου που είναι το πληςιέςτερο ςτον μζςο όρο όλων των ςτοιχείων. Θα πρζπει να χρθςιμοποιιςετε τουλάχιςτον τρείσ ςυν/ςεισ: μια για διάβαςμα του πίνακα μζχρι 100 ςτοιχείων δφο για υπολογιςμό 11-33

double closer(double a[], int my_n, int n) double p, mo; mo = avg(a,my_n,n); p = a[0]; for(int i = 0; i < my_n; i++) if( fabs(a[i]-mo) < fabs(p-mo) ) p = a[i]; return p; 11-34

double avg(double a[], int my_n, int n) double sum; sum = 0.0; for(int i = 0; i < my_n; i++) sum = sum + a[i]; if(my_n <= 0) cout << "No avg!"; return -1.0; return (sum / my_n); double closer(double a[], int my_n, int n) double p, mo; mo = avg(a,my_n,n); p = a[0]; for(int i = 0; i < my_n; i++) if( fabs(a[i]-mo) < fabs(p-mo) ) p = a[i]; return p; 11-35

double avg(double a[], int my_n, int n) double sum; sum = 0.0; for(int i = 0; i < my_n; i++) sum = sum + a[i]; if(my_n <= 0) cout << "No avg!"; return -1.0; return (sum / my_n); double closer(double a[], int my_n, int n) double p, mo; mo = avg(a,my_n,n); p = a[0]; for(int i = 0; i < my_n; i++) if( fabs(a[i]-mo) < fabs(p-mo) ) p = a[i]; return p; #include <cmath> 11-36

void read(double a[], int& my_n, int n) cin >> next; while( next!= -1 my_n < n) a[new_n] = next; my_n++; cin >> next; 11-37

#include <iostream> #include <cmath> void read(double a[], int& my_n, int n); double avg(double a[], int my_n, int n); double closer(double a[], int my_n, int n); int main() const int SIZE = 100; double a[size], int new_n = 0; read(a, new_n, SIZE); cout << closer(a, new_n, SIZE); return 0; void read(double a[], int& my_n, int n)... double closer(double a[], int my_n, int n)... double avg(double a[], int my_n, int n)... δεν χρειάηεται να τα ξαναγράψουμε ςτο ερϊτθμα που αφορά τθ main() 11-38

#include <iostream> #include <cmath> void read(double a[], int& my_n, int n); double avg(double a[], int my_n, int n); double closer(double a[], int my_n, int n); χρειάηονται ωςτόςο οι δθλϊςεισ των ςυναρτιςεων int main() const int SIZE = 100; double a[size], int new_n = 0; read(a, new_n, SIZE); cout << closer(a, new_n, SIZE); return 0; void read(double a[], int& my_n, int n)... double closer(double a[], int my_n, int n)... double avg(double a[], int my_n, int n)... δεν χρειάηεται να τα ξαναγράψουμε ςτο ερϊτθμα που αφορά τθ main() 11-39

Ελάχιςτθ απόλυτθ τιμι Να γραφεί μια ςυνάρτθςθ θ οποία κα δζχεται ζναν μονοδιάςτατο πίνακα τφπου double και κα επιςτρζφει τθν ελάχιςτθ από τισ απόλυτεσ τιμζσ των ςτοιχείων του 11-40

Ελάχιςτθ απόλυτθ τιμι Να γραφεί μια ςυνάρτθςθ θ οποία κα δζχεται ζναν μονοδιάςτατο πίνακα τφπου double και κα επιςτρζφει τθν ελάχιςτθ από τισ απόλυτεσ τιμζσ των ςτοιχείων του double closerabs(double a[], int n) double u; u = fabs(a[0]); for(int i = 0; i < n; i++) if( fabs(a[i]) < u ) u = fabs(a[i]); return u; 11-41

Τπολογιςμόσ πολυωνφμου Για να υπολογίςουμε τθν τιμι ενόσ πολυωνφμου ς' ζνα ςθμείο x, πρζπει να υπολογίςουμε το άκροιςμα: v 0 + v 1 x + v 2 x 2 + v 3 x 3 +... Να γραφεί μια ςυνάρτθςθ θ οποία α) Θα δζχεται ζναν μονοδιάςτατο πίνακα v τφπου double και μια τιμι x, επίςθσ double. β) Θα υπολογίηει και κα επιςτρζφει τθν τιμι του πολυωνφμου. 11-42

Τπολογιςμόσ πολυωνφμου Για να υπολογίςουμε τθν τιμι ενόσ πολυωνφμου ς' ζνα ςθμείο x, πρζπει να υπολογίςουμε το άκροιςμα: v 0 + v 1 x + v 2 x 2 + v 3 x 3 +... Να γραφεί μια ςυνάρτθςθ θ οποία α) Θα δζχεται ζναν μονοδιάςτατο πίνακα v τφπου double και μια τιμι x, επίςθσ double. β) Θα υπολογίηει και κα επιςτρζφει τθν τιμι του πολυωνφμου. double compute(double v[], int n, double x) double s; s = 0; for(int i = 0; i < n; i++) s = s + v[i]*pow(x,i); return s; 11-43

Εφρεςθ max από 2 πίνακεσ Να γραφεί ςυνάρτθςθ που δζχεται δφο πίνακεσ a,b και επιςτρζφει ποιοσ πίνακασ από τουσ δφο ζχει το μεγαλφτερο άκροιςμα. κεφτείτε πρϊτα τθν διλωςθ τθσ ςυνάρτθςθσ τι κα επιςτρζφει; 11-44

Εφρεςθ max από 2 πίνακεσ Να γραφεί ςυνάρτθςθ που δζχεται δφο πίνακεσ a,b και επιςτρζφει ποιοσ πίνακασ από τουσ δφο ζχει το μεγαλφτερο άκροιςμα. κεφτείτε πρϊτα τθν διλωςθ τθσ ςυνάρτθςθσ τι κα επιςτρζφει; Θεωρούμε ότι αν θ ςυνάρτθςθ επιςτρζφει 1 τότε αναφερόμαςτε ςτον πίνακα a (sum(a) > sum(b)), 2 τότε αναφερόμαςτε ςτον πίνακα b (sum(a) < sum(b)), και 3 τότε αναφερόμαςτε και ςτουσ 2 πίνακεσ (sum(a)=sum(b)) 11-45

int maxab(int a[], int na, int b[], int nb) int i, suma=0, sumb=0; for(i = 0; i < na; i++) suma = suma + a[i]; for(i = 0; i < nb; i++) sumb = sumb + b[i]; if(suma > sumb) return 1; if(suma < sumb) return 2; if(suma == sumb) return 3; 11-46

Σο τρίγωνο του Pascal Να γραφεί μια ςυνάρτθςθ που κα δζχεται ζναν διςδιάςτατο ακζραιο πίνακα με το πολφ 100 ςτιλεσ και κα τον γεμίηει με τισ τιμζσ των ςτοιχείων του τριγϊνου του Pascal. Σο τρίγωνο του Pascal περιζχει ςε κάκε γραμμι τουσ ςυντελεςτζσ τθσ ανάπτυξθσ του (Α+Β) Κ, όπου Κ είναι ο αρικμόσ τθσ γραμμισ: Κ = 1 1 1 Κ = 2 1 2 1 Κ = 3 1 3 3 1 Κ = 4 1 4 6 4 1 Κ = 5 1 5 10 10 5 1 Η γραμμι Κ του τριγϊνου ζχει Κ+1 ςτοιχεία. Σο πρϊτο και το τελευταίο είναι μονάδα. Κάκε ενδιάμεςο ςτοιχείο ςχθματίηεται ςαν άκροιςμα των δυο ςτοιχείων τθσ προθγοφμενθσ γραμμισ που βρίςκονται ακριβϊσ πάνω από αυτό και ςτθν αμζςωσ προσ αριςτερά κζςθ. Φυςικά, αυτόσ ο κανόνασ δεν ιςχφει για τθν πρϊτθ γραμμι που δεν ζχει ενδιάμεςα ςτοιχεία, οφτε υπάρχει προθγοφμενθ γραμμι. 1 θ γραμμι: p[0][0] =1; p[0][1] = 1; Σα υπόλοιπα ςτοιχεία του πίνακα ζχουν τιμι 0. 11-47

Σο τρίγωνο του Pascal Να γραφεί μια ςυνάρτθςθ που κα δζχεται ζναν διςδιάςτατο ακζραιο πίνακα με το πολφ 100 ςτιλεσ και κα τον γεμίηει με τισ τιμζσ των ςτοιχείων του τριγϊνου του Pascal. Σο τρίγωνο του Pascal περιζχει ςε κάκε γραμμι τουσ ςυντελεςτζσ τθσ ανάπτυξθσ του (Α+Β) Κ, όπου Κ είναι ο αρικμόσ τθσ γραμμισ: Κ = 1 1 1 Κ = 2 1 2 1 Κ = 3 1 3 3 1 Κ = 4 1 4 6 4 1 Κ = 5 1 5 10 10 5 1 Πϊσ κα "γεμίηαμε" τθν κάκε γραμμι p[ ][ j ] αν ξεκινοφςαμε με δεδομζνθ τθν προθγοφμενθ γραμμι p[ ] [ j 1 ]; Η γραμμι Κ του τριγϊνου ζχει Κ+1 ςτοιχεία. Σο πρϊτο και το τελευταίο είναι μονάδα. Κάκε ενδιάμεςο ςτοιχείο ςχθματίηεται ςαν άκροιςμα των δυο ςτοιχείων τθσ προθγοφμενθσ γραμμισ που βρίςκονται ακριβϊσ πάνω από αυτό και ςτθν αμζςωσ προσ αριςτερά κζςθ. Φυςικά, αυτόσ ο κανόνασ δεν ιςχφει για τθν πρϊτθ γραμμι που δεν ζχει ενδιάμεςα ςτοιχεία, οφτε υπάρχει προθγοφμενθ γραμμι. 1 θ γραμμι: p[0][0] =1; p[0][1] = 1; Σα υπόλοιπα ςτοιχεία του πίνακα ζχουν τιμι 0. 11-48

Σο τρίγωνο του Pascal void pascal(int p[][100], int n1) int i,j; for(i = 0; i < n1; i++) for(j = 0; j < 100; j++) p[i][j]=0; p[1][0]=1; p[1][1]=1; for(i=2; i<n1; i++) p[i][0]=1; for(j = 1; j < 100; j++) p[i][j] = p[i-1][j-1] + p[i-1][j]; 11-49

Ανάςτροφοσ Να γραφεί μια μζκοδοσ θ οποία κα δζχεται ζναν μερικϊσ ςυμπλθρωμζνο διςδιάςτατο τετράγωνο πίνακα τφπου double με το πολφ 100 ςτιλεσ και κα αναςτρζφει τον πίνακα εςωτερικά, μζςα ςτον ίδιο πίνακα. 11-50

Ανάςτροφοσ Να γραφεί μια μζκοδοσ θ οποία κα δζχεται ζναν μερικϊσ ςυμπλθρωμζνο διςδιάςτατο τετράγωνο πίνακα τφπου double με το πολφ 100 ςτιλεσ και κα αναςτρζφει τον πίνακα εςωτερικά, μζςα ςτον ίδιο πίνακα. void reversed(int a[][100], int n1) for(int i = 0; i < n1; i++) for(int j = 0; j < i; j++) double z=a[i][j]; a[i][j]=a[j][i]; a[j][i]=z; 11-51

Ανάςτροφοσ Να γραφεί μια μζκοδοσ θ οποία κα δζχεται ζναν μερικϊσ ςυμπλθρωμζνο διςδιάςτατο τετράγωνο πίνακα τφπου double με το πολφ 100 ςτιλεσ και κα αναςτρζφει τον πίνακα εςωτερικά, μζςα ςτον ίδιο πίνακα. void reversed(int a[][100], int n1) for(int i = 0; i < n1; i++) for(int j = 0; j < i; j++) double z=a[i][j]; a[i][j]=a[j][i]; a[j][i]=z; ΠΡΟΟΧΗ: Αν είχαμε a[i][j]=a[j][i]; τότε κα καταςτρζφαμε τον πίνακα a. 11-52

Ανάςτροφοσ Να γραφεί μια μζκοδοσ θ οποία κα δζχεται ζναν μερικϊσ ςυμπλθρωμζνο διςδιάςτατο τετράγωνο πίνακα τφπου double με το πολφ 100 ςτιλεσ και κα αναςτρζφει τον πίνακα εςωτερικά, μζςα ςτον ίδιο πίνακα. void reversed(int a[][100], int n1) for(int i = 0; i < n1; i++) for(int j = 0; j < i; j++) double z=a[i][j]; a[i][j]=a[j][i]; a[j][i]=z; ΠΡΟΟΧΗ: Αν αντί για j < i γράψουμε j<100, τότε θ ςυν/ςθ δεν κα δουλζψει. Προςπακιςτε να εντοπίςετε τθν αιτία τθσ αποτυχίασ. ΠΡΟΟΧΗ: Αν είχαμε a[i][j]=a[j][i]; τότε κα καταςτρζφαμε τον πίνακα a. 11-53

Εφρεςθ γραμμισ μεγίςτου ςτοιχείου Να γραφεί μια ςυνάρτθςθ θ οποία κα δζχεται ζναν πίνακα τφπου double με 50 ςτιλεσ και κα επιςτρζφει τον αρικμό τθσ γραμμισ ςτθν οποία ανικει το μεγαλφτερο ςτοιχείο. 11-54

Εφρεςθ γραμμισ μεγίςτου ςτοιχείου Να γραφεί μια ςυνάρτθςθ θ οποία κα δζχεται ζναν πίνακα τφπου double με 50 ςτιλεσ και κα επιςτρζφει τον αρικμό τθσ γραμμισ ςτθν οποία ανικει το μεγαλφτερο ςτοιχείο. int maxline(int a[][50], int n1) int i,j,im,jm; im = 0; jm = 0; for(i = 0; i < n1; i++) for(j = 0; j < 50; j++) if( b[i][j] > b[im][jm] ) im=i; jm=j; return im; 11-55

Βιβλιογραφία Καλι Μελζτθ [1] W. Savitch, Πλιρθσ C++, Εκδόςεισ Σηιόλα, 2011 [2] Η. Deitel and P. Deitel, C++ Προγραμματιςμόσ 6θ Εκδοςθ, Εκδόςεισ Μ. Γκιοφρδασ, 2013 Ύλη βιβλιογραφίασ [1]: Κεφάλαια: 1, 2, 3, 4, 5, 9, 13 Ενότθτεσ: 6.1 Παραρτιματα: 1, 2, 3 [2]: Κεφάλαια: 1, 2, 4, 5, 6, 7, 18, 19, 21 Ενότθτεσ: 8.6, 17.1-17.10 Παραρτιματα: Α, Β, Γ, Δ, Σ 11-56