Πολυδιάστατοι Πίνακες – Multidimensional arrays πίνακας με δύο ή περισσότερες διαστάσεις float student_grades[NUM_STUDENTS][NUM_COURSES]; 5 1 2 3 4 0 1.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
TEMPLATES, STL ΠΡΟΓΡΑΜΜΑΤΑ ΜΕ ΠΟΛΛΑ ΑΡΧΕΙΑ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ.
Advertisements

THE VERB TO BE IN SIMPLE PAST
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δείκτες και Συμβολοσειρές (Pointers.
Nacionalno računovodstvo
«Ο ΔΗΜΟΤΙΚΟΣ ΚΗΠΟΣ ΤΟΥ ΤΑΞΙΜΙΟΥ»
RADAR ZA PLOVILO ESMO Laboratorij za Sevanje in Optiko
Pasiruošimas “Elektros” skyriaus laboratoriniams darbams
הסקה על פרופורציה באוכלוסייה
ΧΡΗΣΤΟΓΛΟΥ ΙΩΑΝΝΗΣ ΓΕΝ
ΚΟΙΝΩΝΙΚΗ ΚΑΙ ΑΛΛΗΛΕΓΓΥΑ ΟΙΚΟΝΟΜΙΑ ΚΑΙ ΑΝΑΠΤΥΞΗ ΤΩΝ ΦΟΡΕΩΝ ΤΗΣ
Επανάληψη.
ΑΡΙΘΜΟΔΕΙΚΤΕΣ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ
Διαχείριση Κινδύνου* *Η σειρά παρουσιάσεων για το μάθημα «Διαχείριση Κινδύνου» βασίζεται στο σύγγραμμα των Σχοινιωτάκη, Ν., και Συλλιγάρδου Γ., «Διαχείριση.
ΣΑΕ ΙΙ – ΥΔΡΑΥΛΙΚΑ & ΠΝΕΥΜΑΤΙΚΑ ΣΥΣΤΗΜΑΤΑ
Εργασία στο μάθημα της Βιολογίας της Ά λυκείου του μαθητή Γεώργιου Μ.
Κεφάλαιο 6 οι φίλοι μας, οι φίλες μας
ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ (Κ105)
Εισαγωγή στη Ρομποτική
Λέκτορας Κώστας Κορδάς Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Κάνε κλικ σε κάθε λέξη για να δεις τη σημασία
Μεσαιωνικό Κάστρο Λεμεσού
ΕΠΑΝΑΛΗΨΗ ΓΕΩΜΕΤΡΙΑ 5Ο ΚΕΦ.
ΑΣΚΗΣΕΙΣ ΣΤΟ ΜΑΘΗΜΑ ΤΗΣ ΓΛΩΣΣΑΣ
Έλεγχος υποθέσεων για τους μέσους παρατηρήσεων κατά ζεύγη
Καδράκι ‘‘Ο Χριστός σώζει τον Πέτρο από τον καταποντισμό στα κύματα’’
Πυρηνική Φυσική και Φυσική Στοιχειωδών Σωματιδίων (5ου εξαμήνου, χειμερινό ) Τμήμα T3: Κ. Κορδάς & X. Πετρίδου Μάθημα 15 β-διάσπαση – Α' μέρος.
Ερμηνείες Εικόνων του Πίνακα : Γκερνικα
Πυρηνική Φυσική και Φυσική Στοιχειωδών Σωματιδίων (5ου εξαμήνου, χειμερινό ) Τμήμα T3: Κ. Κορδάς & Χ. Πετρίδου Μάθημα 4 Mέγεθος πυρήνα Κώστας.
Η προβληματική των γενικών σκοπών και των ειδικών στόχων:
Σχεδιασμός και Οργάνωση του μαθήματος
Διαφορές και Ομοιότητες Κερδοσκοπικών και Μη Κερδοσκοπικών Οργανισμών
«Οικογένειες λέξεων» Σε μια οικογένεια τα παιδιά μοιάζουν
ΔΙΑΛΕΞΗ 9 Τμηματοποίηση Αγοράς.
Συστήματα Ουρών Αναμονής 1/2
Καρτεσιανό Γινόμενο Ιδιότητες Σχέσεων Διατάξεις
Α’ Γενικού Λυκείου και ΕΠΑ.Λ.
ΣΑΧΑΡΑ Η Σαχάρα είναι η μεγαλύτερη έρημος στον κόσμο. έχει έκταση περίπου τετραγωνικά χιλιόμετρα, καταλαμβάνει το σύνολο σχεδόν του βόρειου τμήματος.
Αθήνα 9 Φεβρουαρίου 2016 "Το ταξίδι του Αριάδνη συνεχίζεται
Ψηφιακές Επικοινωνίες Ι
Λυκούδη Αγγελική Α.Μ Γ’ Εξάμηνο
«Ο κύκλος του νερού» Γνωστικό Αντικείμενο: Φυσικές Επιστήμες
Τα πολιτικά κόμματα Ορισμός: α) η κατάκτηση της πολιτικής εξουσίας, β) μόνιμη οργάνωση σε όλη την επικράτεια, γ) λαϊκή στήριξη Λειτουργίες: -α) ενοποίηση-εναρμονισμός.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΗΜΕΡΟΛΟΓΙΟ.
ΤΟ ΜΑΓΝΗΤΙΚΟ ΠΕΔΙΟ ΜΕΣΑ ΣΤΗΝ ΥΛΗ
Οργανική Χημεία Ενότητα 1: Χημεία του Άνθρακα Χριστίνα Φούντζουλα
ΜΥΕ003: Ανάκτηση Πληροφορίας
ΤΟ ΒΑΖΟ ΤΟΥ ΓΛΥΚΟΥ, ΔΥΟ ΚΟΥΠΕΣ ΚΑΙ Ο ΚΑΦΕΣ.
Η ΑΡΧΗ ΤΗΣ ΣΤΕΝΗΣ ΕΡΜΗΝΕΙΑΣ ΤΩΝ ΦΟΡΟΛΟΓΙΚΩΝ ΔΙΑΤΑΞΕΩΝ
Πεντηκονταετία π.Χ..
Αρχαία Ολυμπία Μυρσίνη Μαλίογκα Ε΄
τεχνικέσ και στάδια Συντήρησησ του Παρθενώνα
3.
Υδραυλικά Έργα Ι [ΠΟΜ 443] ΑΣΚΗΣΕΙΣ
Λεφτά για την κατασκήνωση
Τ.Ε.Ι. Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμ. Μηχανικών Πληροφορικής
ΕΛΕΥΘΕΡΟΣ ΧΡΟΝΟΣ.
Επιστημονική υπεύθυνη: Αλεξάνδρα Ανδρούσου Επόπτης: Σταύρος Σταύρου
Αύξηση Μετοχικού Κεφαλαίου
ΑΘΛΗΤΙΣΜΟΣ ΚΑΙ ΜΥΙΚΟ ΣΥΣΤΗΜΑ
ΚΑΡΥΣΤΙΝΟΣ ΧΑΡΑΛΑΜΠΟΣ ΡΕΤΣΑ ΙΩΑΝΝΑ ΓΚΥΛΙ ΟΡΙΑΝΑ
ΤΕΙ ΠΕΛΟΠΟΝΝΗΣΟΥ ΠΛΗΡΟΦΟΡΗΣΗ ΑΓΟΡΑΣ ΑΓΡΟΤΙΚΩΝ ΠΡΟΪΟΝΤΩΝ
ΤΟ ΦΩΣ ΩΣ ΑΥΤΟΝΟΜΗ ΦΥΣΙΚΗ ΟΝΤΟΤΗΤΑ
ΜΕΡΟΣ Ι.
ΕΝΝΟΙΑ ΚΑΙ ΙΣΤΟΡΙΚΗ ΕΞΕΛΙΞΗ ΤΗΣ ΕΝΟΧΗΣ
ΑΡΙΘΜΟΔΕΙΚΤΕΣ ΑΠΟΔΟΤΙΚΟΤΗΤΑΣ
Τίρυνς.
Υπεργλυκαιμία Διαφορική Διάγνωση Αντιμετώπιση
Μεταγράφημα παρουσίασης:

Πολυδιάστατοι Πίνακες – Multidimensional arrays πίνακας με δύο ή περισσότερες διαστάσεις float student_grades[NUM_STUDENTS][NUM_COURSES]; student course Δυσδιαστατοι πινακες ΝUM_STUDENTS rows NUM_COURSES columns

Πολυδιάστατοι Πίνακες Oρισμος: τυπος ονομα[dim1][dim2]..[dimn]; Σημασια: πινακας με n διαστασεις και (dim1*dim2*..*dimn) στοιχεια ονομα περιεχει την διευθυνση του 1ου στοιχειου πχ student_grades περιεχει ΝUM_STUDENTS*NUM_COURSES στοιχεια –1ο στοιχειο: student_grades[0][0] –τελευτ.: student_grades[NUM_STUDENTS-1][NUM_COURSES-1]

Πολυδιάστατοι Πίνακες Eπεξεργασια πολυδιαστατου πινακα απαιτει nested- loops (το nesting-level ειναι ιδιο με τον αριθμο διαστασεων του πινακα) Αρχικοποιηση –στον ορισμο int count[][]={{4,5,6},{3,56,87},{456,412,846},{0,0,0}}; πινακας 4(rows) x 3(columns) –με nested-loop for(i=0;i<NUM_STUDENTS;++i) for(j=0;j<NUM_COURSES;++j) student_grades[i][j]=0;

Πολυδιάστατοι Πίνακες Oρισμος Συναρτησησης με multi-dim παραμετρο: –void display(int table[][NUM_COURSES],...); –μονο το μεγεθος της 1ης διαστασης δεν χρειαζεται (γιατι;) Κληση συναρτησης με multi-dim πινακα –display(student_grades,...);

Αποθηκευση multi-dim πινακων Τα δεδομενα multi-dim πινακα αποθηκευονται στην μνημη κατα row major προτεραιοτητα:1η row, 2η row, κτλ int count[4][3]={ {4,5,6}, {3,56,87}, {456,412,846}, {0,0,0}}; 40,0 50,1 60,2 31,0 561,1 871,2

Παραδειγμα Γραψετε ενα προγραμμα: –που διαβαζει απο την εισοδο βαθμους 80 φοιτητων. Για καθε φοιτητη διαβαζονται 5 βαθμοι. Τα δεδομενα στο αρχειο ειναι καταχωρημενα ως ακολουθως: (βαθμοι 1ου φοιτητη) (βαθμοι 2ου φοιτητη) κτλ –υπολογιζει και τυπωνει (α) βαθμους καθε φοιτητη (β) τον μεσο ορο για καθε φοιτητη, και (γ) τον μεσο ορο για καθε μαθημα

Τι πρεπει να γινει; διαβαστουν δεδομενα (αποθηκευτουν) υπολογισμος μεσων ορων τυπωση αποτελεσματων

Τι πρεπει να γινει; διαβαστουν δεδομενα (αποθηκευτουν) void read_data(float grades_table[80][5]); υπολογισμος μεσων ορων void compute_averages(float grades_table[80][5], float average_per_student[80], float average_per_course[5]); τυπωση αποτελεσματων void display_results(float grades_table[80][5], float average_per_student[80], float average_per_course[5]);

σταθερες #define NUM_STUDENTS 80 #define NUM_COURSES 5 πινακες float grade_table[NUM_STUDENTS][NUM_COURSES]; float average_per_student[NUM_STUDENTS]; float average_per_course[NUM_COURSES];

void read_data(float grade_table[][NUM_COURSES]) { int i,j; for(i=0;i<NUM_STUDENTS;++i) for(j=0;j<NUM_COURSES;++j) scanf(“%f”,&grade_table[i][j]); }

void compute_averages(float grade_table[][NUM_COURSES], float average_per_student[], float average_per_course[]) { int i,j; for(i=0;i<NUM_STUDENTS;++i) average_per_student[i]=0; for(i=0;i<NUM_COURSES;++i) average_per_course[i]=0; for(i=0;i<NUM_STUDENTS;++i) for(j=0;j<NUM_COURSES;++j){ average_per_student[i]+=grade_table[i][j]; average_per_course[j]+= grade_table[i][j]; } for(i=0;i<NUM_STUDENTS;++i) average_per_student[i]/=NUM_COURSES; for(i=0;i<NUM_COURSES;++i) average_per_course[i]/=NUM_STUDENTS; }

void display_results(float grade_table[][NUM_COURSES], float average_per_student[], float average_per_course[]) { int i,j; for(i=0;i<NUM_STUDENTS;++i){ for(j=0;j<NUM_COURSES;++j) printf(“%5.2f ”,grade_table[i][j]); printf(“%5.2f\n”,average_per_student[i]; } for(j=0;j<NUM_COURSES;++j) printf(“%5.2f ”,average_per_course[j]); printf(“\n”); }

Τι ειναι το main()

Πιο γενικο προβλημα/λυση Τα δυο πρωτα δεδομενα οριζουν τον αριθμο φοιτητων και αριθμο μαθηματων (που δεν πρεπει να ξεπερνα το 80 και το 5 αντιστοιχα). Τι αλλαγες συνεπαγεται το πιο πανω;

void read_data(float grade_table[][NUM_COURSES], int *students,int *courses) { int i,j; scanf(“%d %d”,students,courses); if (*students>NUM_STUDENTS || *courses>NUM_COURSES){ printf(“error: students or courses > than allowed maximum”); exit(0); } for(i=0;i<*students;++i) for(j=0;j<*courses;++j) scanf(“%f”,&grade_table[i][j]); }

void compute_averages(float grade_table[][NUM_COURSES], float average_per_student[], float average_per_course[], int students, int courses) {int i,j; for(i=0;i<students;++i) average_per_student[i]=0; for(i=0;i<courses;++i) average_per_course[i]=0; for(i=0;i<students;++i) for(j=0;j<courses;++j){ average_per_student[i]+=grade_table[i][j]; average_per_course[j]+= grade_table[i][j]; } for(i=0;i<students;++i) average_per_student[i]/=courses; for(i=0;i<courses;++i) average_per_course[i]/=student; }

void display_results(float grade_table[][NUM_COURSES], float average_per_student[], float average_per_course[], int students, int courses) { int i,j; for(i=0;i<students;++i){ for(j=0;j<courses;++j) printf(“%5.2f ”,grade_table[i][j]); printf(“%5.2f\n”,average_per_student[i]; } for(j=0;j<courses;++j) printf(“%5.2f ”,average_per_course[j]); printf(“\n”); }

Input/Output Redirection (2.7) foo < in foo > out foo out Δεδομενα απο συγκεκριμενο αρχειο/α (2.7)