Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


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

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

2 Πολυδιάστατοι Πίνακες 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]

3 Πολυδιάστατοι Πίνακες 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

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

5 Αποθηκευση 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

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

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

8 Τι πρεπει να γινει; διαβαστουν δεδομενα (αποθηκευτουν) 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]);

9 σταθερες #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];

10 void read_data(float grade_table[][NUM_COURSES]) { int i,j; for(i=0;i

11 void compute_averages(float grade_table[][NUM_COURSES], float average_per_student[], float average_per_course[]) { int i,j; for(i=0;i

12 void display_results(float grade_table[][NUM_COURSES], float average_per_student[], float average_per_course[]) { int i,j; for(i=0;i

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

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

15 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]); }

16 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

17 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

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


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google