16

Click here to load reader

Πίνακες 2 Διαστάσεων B

Embed Size (px)

DESCRIPTION

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον,Δομές Δεδομένων,Δισδιάστατοι Πίνακες,Μέγιστος-Ελάχιστος,Σχέση δεικτών γραμμής και στήλης

Citation preview

Page 1: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος που θα διαβάζει ένα πίνακα 10x10 , και θα υπολογίζει το ελάχιστο στοιχείο του καθώς και τη θέση του ελαχίστου.

Θεωρώ ως ελάχιστοτο πρώτο στοιχείο του πίνακα, καικατόπιν το συγκρίνουμεεπαναληπτικάμε τα υπόλοιπα στοιχεία.Ο αλγόριθμος είναι ο ακόλουθος:

Αλγόριθμος Ελάχιστο_στοιχείο

Τέλος Ελάχιστο_στοιχείο

Για i από 1 μέχρι 10Για j από 1 μέχρι 10

! Γραμμές! Στήλες

Εμφάνισε “Δώσε το στοιχειό ”, i , jΔιάβασε Π[i,j]

Τέλος_επανάληψηςΤέλος_επανάληψης

min←Π[1,1]

Για i από 1 μέχρι 10Για j από 1 μέχρι 10

! Γραμμές! Στήλες

min ← Π[i,j]Αν Π[i,j] < min τότε

Τέλος_ανΤέλος_επανάληψης

Τέλος_επανάληψηςΕμφάνισε “Το ελάχιστο στοιχείο είναι ”,min

Εμφάνισε “Η θέση του στοιχείου είναι:”,γραμμή_min,στήλη_min

Αρχικοποίηση της γραμμής-στήλης γραμμή_min←1

στήλη_min←1

γραμμή_min←iστήλη_min←j

Μεθοδολογία:• Η θέση ενός στοιχείου• προσδιορίζεται από :

• Γραμμή και• Στήλη.

• Η διπλή επανάληψη σύγκρισηςαρχίζει από 1 και όχι από 2όπως στουςμονοδιάστατους πίνακες .Αλλιώς η επανάληψη θα εκτελεστεί μια

φορά λιγότερη.Δηλαδή δεν θα «επισκεφθούμε»τα στοιχεία μιας ολόκληρης γραμμής.Συγκεκριμένα χάνουμε όλα τα στοιχείατης πρώτης γραμμής.Π[1,1],Π[1,2],……

3.24

Page 2: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα δημιουργεί τους ακόλουθους πίνακες.

1 0 0Π

0 1 00 0 1

1) Ο πίνακας είναι τετραγωνικός.Δηλ. έχουν ίδιο αριθμό γραμμών και στηλών.

3

3 Σε ένα τετραγωνικό πίνακα , τα στοιχεία για τα οποία οαριθμός τη γραμμής ισούται με τον αριθμό της στήληςλέμε ότι βρίσκονται στην κύρια διαγώνιο.Δηλ. τα στοιχεία Π[1,1],Π[2,2],Π[3,3] .

Σε αυτόν τον πίνακα τα στοιχεία τη κύριας διαγωνίουισούται με 1 και τα υπόλοιπα με 0.Αρκεί λοιπόν να κάνουμε μια διπλήεπανάληψη καιαν ο αριθμός γραμμής είναι ίσος με τον αριθμόστήλης τότε στο στοιχείο εκχωρούμε 1.

Οπότε ο αλγόριθμος είναι:

Αλγόριθμος Κύρια_Διαγώνιος

Τέλος Κύρια_Διαγώνιος

Για i από 1 μέχρι 3Για j από 1 μέχρι 3

! Γραμμές

! Στήλες

Π[i,j] ← 1

Αν i=j τότε

Τέλος_αν

Τέλος_επανάληψης

Τέλος_επανάληψης

ΑλλιώςΠ[i,j] ← 0

3.25

Page 3: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα δημιουργεί τους ακόλουθους πίνακες.

10 10 1Π

10 1 101 10 10

2)Σε αυτόν τον πίνακα τα στοιχεία τη Δευτερεύουσας διαγώνιουισούται με 1 και τα υπόλοιπα με 10.Τα στοιχεία της δευτερεύουσας διαγώνιου ενός τετραγωνικούπίνακα ΝxN ισχύειi=N-j+1,όπου i αριθμός της γραμμής και j ο αριθμός της στήλης.

Οπότε ο αλγόριθμος είναι:

Αλγόριθμος Δευτερεύουσα_Διαγώνιος

Τέλος Δευτερεύουσα_Διαγώνιος

Για i από 1 μέχρι 3Για j από 1 μέχρι 3

! Γραμμές

! Στήλες

Π[i,j] ← 1

Αν i=3-j+1 τότε

Τέλος_αν

Τέλος_επανάληψης

Τέλος_επανάληψης

ΑλλιώςΠ[i,j] ← 10

Πίνακας 3x3

3.25

Page 4: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα δημιουργεί τους ακόλουθους πίνακες.

20 0 0Π

20 20 020 20 20

3)Σε αυτόν τον πίνακα τα στοιχεία που βρίσκονταιπάνω από την κύρια διαγώνιοέχουν τιμή 0. και τα υπόλοιπα με 20.Τα στοιχεία που βρίσκονται πάνω από τη κύρια διαγώνιο είναι τα

Π[1,2],Π[1,3],Π[2,3].Παρατηρούμε ότι ο αριθμός της γραμμής είναι μικρότερος από τον

αριθμό της στήλης. Δηλαδή i<j

Οπότε ο αλγόριθμος είναι:

Αλγόριθμος Πάνω_Κύρια_Διαγώνιος

Τέλος Πάνω_Κύρια_Διαγώνιος

Για i από 1 μέχρι 3Για j από 1 μέχρι 3

! Γραμμές

! Στήλες

Π[i,j] ← 0

Αν i<j τότε

Τέλος_αν

Τέλος_επανάληψης

Τέλος_επανάληψης

ΑλλιώςΠ[i,j] ← 20

3.25

Page 5: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα δημιουργεί τους ακόλουθους πίνακες.

2 2 2Π

1 2 21 1 2

4)Σε αυτόν τον πίνακα τα στοιχεία που βρίσκονταικάτω από την κύρια διαγώνιοέχουν τιμή 1. και τα υπόλοιπα με 2.Τα στοιχεία που βρίσκονται κάτω από τη κύρια διαγώνιοείναι τα Π[2,1],Π[3,1],Π[3,2].Παρατηρούμε ότι ο αριθμός της γραμμής είναι μεγαλύτερος από τοναριθμό της στήλης. Δηλαδή i>j

Οπότε ο αλγόριθμος είναι:

Αλγόριθμος Κατω_Κύρια_Διαγώνιος

Τέλος Κάτω_Κύρια_Διαγώνιος

Για i από 1 μέχρι 3Για j από 1 μέχρι 3

! Γραμμές

! Στήλες

Π[i,j] ← 1

Αν i>j τότε

Τέλος_αν

Τέλος_επανάληψης

Τέλος_επανάληψης

ΑλλιώςΠ[i,j] ← 2

3.25

Page 6: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Μεθοδολογία:

Οι κυριότερες περιπτώσεις σχέσεων γραμμής και στήλης είναι:

Στοιχεία της κυρίας διαγωνίου , i=jΣτοιχεία της δευτερεύουσας διαγωνίου , i=Ν-j+1Στοιχεία πάνω από τη κύρια διαγώνιο , i<jΣτοιχεία κάτω από τη κύρια διαγώνιο , i>jΆρτιο άθροισμα δεικτών γραμμής και στήλης , (i+j)mod2=0Περιττό άθροισμα δεικτών γραμμής και στήλης , (i+j)mod2≠0

Page 7: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

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

Ο αλγόριθμος είναι οακόλουθος:

Αλγόριθμος Άθροισμα_Διαγωνίων

Τέλος Άθροισμα_Διαγωνίων

Εμφάνισε “Δώσε τον αριθμό γραμμών του τετραγωνικού πίνακα.”

Διάβασε Ν

Για i από 1 μέχρι ΝΓια j από 1 μέχρι Ν

! Γραμμές! Στήλες

Εμφάνισε “Δώσε το στοιχειό ”, i , jΔιάβασε Π[i,j]

Τέλος_επανάληψηςΤέλος_επανάληψης

Κόλπο!!!!Για Διάβασμα πίνακα . Αλλιώςγράφω Δεδομένα //Ν,Π//

άθροισμα←0

Για i από 1 μέχρι ΝΓια j από 1 μέχρι Ν

! Γραμμές! Στήλες

άθροισμα← άθροισμα+Π[i,j]Αν i=j ή i=N-j+1 τότε

Τέλος_αν

Εμφάνισε “Το άθροισμα των στοιχείων είναι:”,άθροισμα

Τέλος_επανάληψηςΤέλος_επανάληψης

3.26

Page 8: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα υπολογίζει το άθροισμα των γραμμών ενός πίνακα ΝxΜ. Ο πίνακας έχει Ν γραμμές.Άρα πρέπει να υπολογίσουμε Ν αθροίσματα και κατόπιν να τα εμφανίσουμε.

24 10 5Π

-8 12 1143 10 25

Παράδειγμα 4 αθροίσματα

11 12 4

Άθροισμα39157827

Όταν υπολογίζαμε ένα άθροισμα χρησιμοποιούσαμε μια μεταβλητή.Τώρα που θέλουμε να υπολογίσουμε Ν αθροίσματα, θα χρησιμοποιήσουμε έναν (Μονοδιάστατο) πίνακαμε Ν θέσεις αρχικά με μηδενικά στοιχεία.( Άθροισμα[i]←0 )

Άθροισμα…

[1][2][…]

[Ν]

Σε κάθε θέση του μονοδιάστατου πίνακαθα αποθηκεύεται το άθροισμα της αντίστοιχης γραμμής τουπίνακαNxM.Για παράδειγμα στην θέση Άθροισμα[1] θα αποθηκεύεται τοάθροισμα της πρώτης γραμμής Π[1,1]+Π[1,2]+Π[1,3]……Για την θέση Άθροισμα[2] θα αποθηκεύεταιτο άθροισμα της δεύτερης γραμμής Π[2,1]+Π[2,2]+Π[2,3]+…….

Για τον υπολογισμό της του αθροίσματος κάθε γραμμής θα χρησιμοποιήσουμε μια επανάληψη από 1 έωςτον αριθμό των στηλών Μ. Σε κάθε επανάληψη θα προσθέτουμε στην κατάλληλη θέση του πίνακαΆθροισμα[i], το νέο στοιχείο της γραμμής του πίνακα Π που εξετάζουμε.

Για την πρώτη γραμμή:Για j από 1 μέχρι M ! Στήλες

Άθροισμα[1]← Άθροισμα[1]+Π[1,j]Τέλος_επανάληψης

3.27

Page 9: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα υπολογίζει το άθροισμα των γραμμών ενός πίνακα ΝxΜ.

3.27

Page 10: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να γραφεί αλγόριθμος ο οποίος θα υπολογίζει το άθροισμα των γραμμών ενός πίνακα ΝxΜ.

Ο αλγόριθμος είναι οακόλουθος:

Αλγόριθμος Άθροισμα_Γραμμών

Τέλος Άθροισμα_Γραμμών

Εμφάνισε “Δώσε τον αριθμό γραμμών του πίνακα.”Διάβασε ΝΕμφάνισε “Δώσε τον αριθμό στηλών του πίνακα.”Διάβασε Μ

Για i από 1 μέχρι ΝΓια j από 1 μέχρι M

! Γραμμές! Στήλες

Εμφάνισε “Δώσε το στοιχειό ”, i , jΔιάβασε Π[i,j]

Τέλος_επανάληψηςΤέλος_επανάληψηςΓια i από 1 μέχρι Ν ! Γραμμές

Άθροισμα[i]←0Τέλος_επανάληψης

Φτιάχνω τον μονοδιάστατο πίνακα Άθροισμα [i]Με όλα τα στοιχεία του μηδέν.

Για j από 1 μέχρι M ! Στήλες

Άθροισμα[i]← Άθροισμα[i]+Π[i,j]Τέλος_επανάληψης

Για i από 1 μέχρι Ν ! Γραμμές

Τέλος_επανάληψηςΓια i από 1 μέχρι Ν ! Γραμμές

Εμφάνισε “Το άθροισμα της γραμμής ”,i, “είναι”Άθροισμα[i]Τέλος_επανάληψης

Στη γενική περίπτωση γιαμία τυχαία γραμμή:

Για j από 1 μέχρι M ! Στήλες

Άθροισμα[i]← Άθροισμα[i]+Π[i,j]Τέλος_επανάληψης

3.27

Page 11: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να χρησιμοποιηθεί η κατάλληλη δομή δεδομένων για να αποθηκεύει τους βαθμούς 10 τμημάτων , 30 μαθητών το καθένα, στο μάθημα της πληροφορικής και να υπολογίζεια) Το μέσο όρο όλων των βαθμώνβ) Το μέσο όρο των βαθμών ανά τμήμα.Σε τέτοιου είδους ασκήσεις θα χρησιμοποιούμε πάντα πίνακες.Θα τους γράφαμε ως εξής:

β1

1ος Τρόποςβ2 …. β30Τμήμα 1:

β1 β2 …. β30Τμήμα 2:

….

β1 β2 …. β30Τμήμα 10:

β1

2ος Τρόπος

β2….β30

Τμήμα 1:β1β2….β30

Τμήμα 2:

….

β1β2….β30

Τμήμα 10:

Παρατηρούμε ότι οι βαθμοί μπορούν να αποθηκευτούνείτε σε ένα πίνακα 10x30είτε σε ένα πίνακα 30x10.Στην πρώτη περίπτωσηΘα έχουμε σε κάθε γραμμή τους βαθμούς ανά τμήμα.Στην δεύτερη περίπτωσηΘα έχουμε σε κάθε στήλη τους βαθμούς ανά τμήμα.Θα προτιμήσουμε τον πίνακα 10x30.Για τον υπολογισμό του α) ερωτήματος υπολογίζω το άθροισμα όλων των βαθμών του πίνακα και το διαιρούμε με τοπλήθος των στοιχείων του πίνακα δηλ. 30x10=300.Για τον υπολογισμό του β) ερωτήματος υπολογίζω το άθροισμα κατά γραμμή και το διαιρούμε με τοπλήθος της κάθε γραμμής δηλ. 30.

3.29

Page 12: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Να χρησιμοποιηθεί η κατάλληλη δομή δεδομένων για να αποθηκεύει τους βαθμούς 10 τμημάτων , 30 μαθητών το καθένα, στο μάθημα της πληροφορικής και να υπολογίζεια) Το μέσο όρο όλων των βαθμώνβ) Το μέσο όρο των βαθμών ανά τμήμα.

Ο αλγόριθμος είναι οακόλουθος:

Αλγόριθμος Βαθμοί_Μαθητών

Τέλος Βαθμοί_Μαθητών

Για i από 1 μέχρι 10Για j από 1 μέχρι 30

! Γραμμές! Στήλες

Εμφάνισε “Δώσε το βαθμό του μαθητή ”, j, “του τμήματος ”,iΔιάβασε Βαθμός[i,j]

Τέλος_επανάληψηςΤέλος_επανάληψηςΓια i από 1 μέχρι 10 ! Άθροισμα κατά γραμμή

Άθροισμα[i]←0Τέλος_επανάληψης

Φτιάχνω τον μονοδιάστατο πίνακα Άθροισμα [i]Με όλα τα στοιχεία του μηδέν.

ΆθροισμαΟΒ←0 ! Άθροισμα όλων των βαθμών.

Για i από 1 μέχρι 10Για j από 1 μέχρι 30

! Γραμμές! Στήλες

ΆθροισμαΟΒ← ΆθροισμαΟΒ+ Βαθμός[i,j]Άθροισμα[i]← Άθροισμα[i]+ Βαθμός[i,j]Τέλος_επανάληψης

Τέλος_επανάληψηςΜΟ← ΆθροισμαΟΒ/(10*30)

Εμφάνισε “Ο μέσος όρος όλων των βαθμών είναι: ”, ΜΟ

Για i από 1 μέχρι 10 ! ΓραμμέςΕμφάνισε “Ο μέσος όρος όλων του τμήματος”, i “είναι:”,Άθροισμα[i]/30

Τέλος_επανάληψης

3.29

Page 13: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Καταρχήν θα αποθηκεύσουμε τους πόντους όλων των παικτών σε ένα πίνακα 5x5.

Κατά τη διάρκεια ενός πρωταθλήματος μπάσκετ καταγράφεται ο αριθμός των πόντων που έχουν βάλει 5 παίκτες σε 5 διαφορετικά παιχνίδια. Να γραφεί αλγόριθμος που θα σε βοηθήσει να κρατήσεις ένα δισδιάστατο πίνακα αυτά τα στοιχεία και στη συνέχεια να υπολογίσεις τον παίκτη που έχει πετύχει το μεγαλύτερο αριθμό πόντων.

Παίκτης 1:

Αγώνας1

Αγώνας2

Αγώνας3

Αγώνας4

Αγώνας5

π11 π12 π13 π14 π15

Παίκτης 2: π21 π22 π23 π24 π25

Παίκτης 3: π32 π33 π34 π35Παίκτης 4: π41 π42 π43 π44 π45Παίκτης 5: π51 π52 π53 π54 π55

π31

Κατόπιν θα υπολογίσουμε τους συνολικούς πόντους κάθε παίκτη. Δηλαδή άθροισμα κατά γραμμές.

Άθροισμα[1]

Άθροισμα[2]

Άθροισμα[3]

Άθροισμα[4]

Άθροισμα[5]

Στη συνέχεια θα πρέπει να βρούμε το μεγαλύτερο στοιχείο από όλα τα στοιχεία του πίνακα Άθροισμα.

Άθροισμα

max

?θέση_max

3.30

Page 14: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Ο αλγόριθμος είναι οακόλουθος:

Αλγόριθμος Πόντοι_Αθλητών

Τέλος Πόντοι_Αθλητών

Για i από 1 μέχρι 5Για j από 1 μέχρι 5

! Γραμμές! Στήλες

Εμφάνισε “Δώσε τους πόντους του παίκτη ”,iΔιάβασε Πόντοι[i,j]

Τέλος_επανάληψηςΤέλος_επανάληψης

Για i από 1 μέχρι 5 ! Άθροισμα κατά γραμμή

Άθροισμα[i]←0Τέλος_επανάληψης

Φτιάχνω τον μονοδιάστατο πίνακα Άθροισμα [i]Με όλα τα στοιχεία του μηδέν.

Για i από 1 μέχρι 5Για j από 1 μέχρι 5

! Γραμμές! Στήλες

Άθροισμα[i]← Άθροισμα[i]+ Πόντοι[i,j]Τέλος_επανάληψης

Τέλος_επανάληψηςmax← Άθροισμα[1]θέση_max← 1

Για i από 2 μέχρι 5

max← Άθροισμα[i]Αν Άθροισμα[i] > max τότε

θέση_max← iΤέλος_αν

Τέλος_επανάληψηςΕμφάνισε “Ο παίκτης με τους περισσότερους πόντους είναι ”,θέση_max

3.30

Page 15: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Έστω ένας πίνακας ΝxN.

Ένας τετραγωνικός πίνακας ΝxΝ λέγεται τριγωνικός άνω , αν τα στοιχεία πάνω από την κύρια διαγώνιο είναι μηδέν. Να γραφεί αλγόριθμος που θα ελέγχει αν ένας πίνακας 100x100 είναι τριγωνικός ή όχι.

1

1 2 …….. Ν

2...Ν

Τα στοιχεία της κύριας διαγωνίου είναι:

Αν τα στοιχεία πάνω από τη κύριαδιαγώνιο είναι 0.

0 0 0 0

0 0 0

0 00 Τότε ο πίνακας λέγεται άνω τριγωνικός.

Σε ασκήσεις όπου ζητείται να ελεγχθεί αν έχει μια συγκεκριμένη ιδιότητα,θεωρούμε στην αρχή του αλγορίθμου ότι ο πίνακας έχει αυτή την ιδιότητα.(Με μια Μεταβλητή←Αληθής)Έπειτα ελέγχουμε αν κάθε στοιχείο που βρίσκεται πάνω από την κύρια διαγώνιο (i<j) είναι διάφορο τουμηδενός ≠0.Αν βρεθεί κάποιο τέτοιο στοιχείο , τότε ο πίνακας δεν έχει αυτή την ιδιότητα.

3.31

Page 16: Πίνακες 2 Διαστάσεων B

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΚεφάλαιο 3ο

Ο αλγόριθμος είναι οακόλουθος:

Αλγόριθμος Τριγωνικός_Άνω

Τέλος Τριγωνικός_Άνω

Για i από 1 μέχρι 100Για j από 1 μέχρι 100

! Γραμμές! Στήλες

Εμφάνισε “Δώσε το στοιχείο ”, i, jΔιάβασε Π[i,j]

Τέλος_επανάληψηςΤέλος_επανάληψης

Χ← ΑληθήςΓια i από 1 μέχρι 100

Για j από 1 μέχρι 100Αν i<j και Π[i,j] ≠ 0 τότε

Χ ← ΨευδήςΤέλος_αν

Τέλος_επανάληψηςΤέλος_επανάληψης

Αν Χ = Αληθής τότεΕμφάνισε “Ο πίνακας είναι τριγωνικός άνω”

ΑλλιώςΕμφάνισε “Ο πίνακας δεν είναι τριγωνικός άνω”

Τέλος_αν

3.31