Διάλεξη 10η: Πολυδιάστατοι Πίνακες



Σχετικά έγγραφα
Ταξινόµηση και Αναζήτηση

ΗΥ-150. Προγραμματισμός

Διάλεξη 11η: Δείκτες, μέρος 1

ΗΥ-150. Προγραμματισμός

Διάλεξη 9η: Πίνακες (arrays)

Διάλεξη 15η: Αναδρομή, μέρος 1ο

Διάλεξη 12η: Δείκτες, μέρος 2

Διάλεξη 8η: Αλφαριθμητικά (strings)

ΗΥ-150. Ταξινόµηση και Αναζήτηση

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

ΗΥ-150. Πίνακες (Arrays)

Εισαγωγή στον Προγραμματισμό

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays)

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Αντικειμενοστρεφής Προγραμματισμός

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ-ΓΛΩΣΣΑ C ΑΤΕΙ (ΝΑ ΕΚΤΕΛΕΣΤΟΥΝ ΤΑ ΠΑΡΑΚΑΤΩ ΜΕ ΧΡΗΣΗ ΤΟΥ LCC COMPILER)

Πίνακες στη Java. Αντικειμενοστρεφής Προγραμματισμός 4/4/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Διάλεξη 6: Δείκτες και Πίνακες

C: Από τη Θεωρία στην Εφαρμογή

Διάλεξη 5η: Εντολές Επανάληψης

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

ΗΥ-150 Ππογπαμμαηιζμόρ Πίνακερ (Arrays)

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Σημειώσεις δεύτερης εβδομάδας

Μεθόδων Επίλυσης Προβλημάτων

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Παράδειγµα χρήσης πίνακα

Δείκτες (Pointers) (1/2) ΗΥ150 Προγραμματισμός

Προγραμματισμός Η/Υ (ΤΛ2007 )

Μεθόδων Επίλυσης Προβλημάτων

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ιαφάνειες παρουσίασης #3

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Διαδικαστικός Προγραμματισμός

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στον Προγραμματισμό

ΗΥ-150. Προγραμματισμός

Γλώσσες Προγραμματισμού

Διάλεξη 22η: Επιπλέον στοιχεία της C

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

είκτες και Πίνακες (2)

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

12. Συναρτήσεις (Μέρος ΙI)

Προγραμματισμός Υπολογιστών

Προγραμματισμός Η/Υ (ΤΛ2007 )

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Γλώσσα Προγραμματισμού C

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006)

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

Προγραμματισμό για ΗΜΥ

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

{C} Programming. Part 2/2 Advanced Pointers, Structs, Memory Allocation, Examples using structs

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Αρχές Προγραμματισμού

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Διάλεξη 19η: Δομές δεδομένων

Προγραμματισμός I (Θ)

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Εισαγωγή στον Προγραμματισμό (με. τη C)

Αρχές Προγραμματισμού

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις (Διάλεξη 18)

Transcript:

Διάλεξη 10η: Πολυδιάστατοι Πίνακες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 1 / 15

Πίνακες πολλών διαστάσεων Πίνακες πολλών διαστάσεων Πίνακες με γραμμές και στήλες (m Χ n πίνακας) Όπως και στα μαθηματικά: πρώτα γραμμή και μετά στήλη Δισδιάστατος πίνακας Column 0 Column 1 Column 2 Column 3 Row 0 a[0][0] a[0][1] a[0][2] a[0][3] Row 1 a[1][0] a[1][1] a[1][2] a[1][3] Row 2 a[2][0] a[2][1] a[2][2] a[2][3] Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 2 / 15

Πίνακες πολλών διαστάσεων (2) Δήλωση πολυδιάστατου πίνακα int c[2][4]; Γενική μορφή type array_name[rows][columns]; Χρήση πολυδιάστατου πίνακα c[i][j] = 3; int *ptr = c[i]; Γενική μορφή array_name[row][column] Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 3 / 15

Πίνακες πολλών διαστάσεων (3) Αποθήκευση στη μνήμη Πρώτα η σειρά 0, μετά η σειρά 1, κοκ c[0][0] c[0][1] c[0][2] c[0][3] c[1][0] c[1][1] c[1][2] c[1][3] 10 22 22 30-11 1 14 32 Αρχικοποίηση: όπως η αρχικοποίηση πίνακα, αλλά με πίνακες ως στοιχεία int b[2][2] = { { 1, 2, { 3, 4 ; Τα εσωτερικά { διαχωρίζουν γραμμές του πίνακα Αν δεν είναι αρκετά τα στοιχεία, τα υπόλοιπα γίνονται 0 int b[2][2] = { { 1, { 3, 4 ; Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 4 / 15

Πολυδιάστατοι Πίνακες ως Ορίσματα Πάντα πρέπει να δηλώνεται το μέγεθος κάθε διάστασης, εκτός από την πρώτη διάσταση (αριθμός γραμμών) Παράδειγμα int f(int a[][10][20]) { int main(void) { int b[40][10][20]; f(b); Γιατί μας υποχρεώνει η γλώσσα σε αυτόν τον περιορισμό; Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 5 / 15

Παράδειγμα studentsc #include <stdioh> #include <stringh> #define STUDENTS 3 #define EXAMS 4 /* function declarations */ int min(const int [][EXAMS], int, int); int max(const int [][EXAMS], int, int); double average(const int [], int); void print_array(const int [][EXAMS], int, int); /* function definitions */ int average(const int student_grades[], int tests) { int i, total = 0; for(i = 0; i <= tests -1; i++) { total = total + student_grades[i]; return (double) total / tests; int main(void) { int s; const int grades[students][exams] = { { 77, 68, 86, 73, { 96, 87, 89, 78, { 70, 90, 86, 81 ; printf( The array is:\n ); print_array(grades, STUDENTS, EXAMS); printf( \n\n Lowest grade: %d\n Highest grade: %d\n, min(grades, STUDENTS, EXAMS), max(grades, STUDENTS, EXAMS)); for(s = 0; s <= STUDENTS -1; s++) { printf( Average for student %d: %2f\n, s, average(grades[s], EXAMS)); return 0; Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 6 / 15

Παράδειγμα (2) studentsc int min(const int grades[][exams], int students, int tests) { int i, j, lowgrade = 100; for(i = 0; i <= students -1; i++) { for(j = 0; j <= tests -1; j++) { if(grades[i][j] < low_grade) { low_grade = grades[i][j]; return low_grade; int max(const int grades[][exams], int students, int tests) { int i, j, high_grade = 0; for(i = 0; i <= students -1; i++) { for(j = 0; j <= tests -1; j++) { if(grades[i][j] > high_grade) { high_grade = grades[i][j]; return high_grade; Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 7 / 15

Παράδειγμα (3) studentsc void print_array(const int grades[][exams], int students, int tests) { int i, j ; char array_name[] = student_grades ; for(i = 0; i <= strlen(array_name) + 3; i++) { printf( ); for(i = 0; i <= tests -1; i++) { printf( [%d] ); for(i = 0; i <= students -1; i++) { printf( \nstudent_grades[%d], i); for(j = 0; j <= tests -1; j++) { printf( %5d, grades[i][j]); Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 8 / 15

Παράδειγμα (3) Έξοδος The array is: [0] [1] [2] [3] student_grades[0] 77 68 86 73 student_grades[1] 96 87 89 78 student_grades[2] 70 90 86 81 Lowest grade: 68 Highest grade: 96 The average grade for student 0 is 7600 The average grade for student 1 is 8750 The average grade for student 2 is 8175 Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 9 / 15

Υπολογισμός Mean, Median και Mode Mean Μέσος όρος 1, 1, 2, 2, 40 Mean = (1+1+2+2+40) / 5 = 92 Median Ο μεσαίος αριθμός 1, 2, 3, 4, 40 Το median είναι 3 Mode Ο πιο συχνός αριθμός 1, 1, 1, 2, 3, 3, 4, 40 Το mode είναι 1 Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 10 / 15

Παράδειγμα data-analysisc #include <stdioh> #define SIZE 99 /* function declarations */ void mean(const int []); void median(int []); void mode(int [], const int []); void bubble_sort(int []); void print_array(const int []); /* function definitions */ void mean(const int answer[]) { int i, total = 0; printf( ******** Mean ********\n ); for(i = 0; i <= SIZE -1; i++) { total += answer[i]; printf( The mean is the average value of the data items\n The mean is equal to the total of all the data\n items divided by the number of data items ( %d )\n The mean value for this run is: %d / %d = %4f\n\n, SIZE, total, SIZE, (double) total / SIZE ); Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 11 / 15

Παράδειγμα (2) data-analysisc void median(int answer[]) { printf( ******** Median ********\n The unsorted array of responses is: ); print_array(answer); bubble_sort(answer); printf( \n\nthe median is element %d of\n the sorted %d element array\n For this run the median is %d\n\n, SIZE / 2, SIZE, answer[ SIZE / 2 ] ); void bubble_sort(int a[]) { int pass, j, hold; for(pass = 1; pass <= SIZE -1; pass++) { for(j = 0; j <= SIZE -2; j++) { if(a[j] > a[j+1]) { hold = a[j]; a[j] = a[j+1]; a[j+1] = hold; Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 12 / 15

Παράδειγμα (3) data-analysisc void mode(int freq[], const int answer[]) { int rating, j, h, largest = 0, mode_value = 0; printf( ******** Mode ********\n ); for(rating = 1; rating <= 9; rating++) { freq[rating] = 0; for(j = 0; j <= SIZE -1; j++) { ++freq[answer[j]]; printf( %s%11s%19s\n, Response, Frequency, Histogram ); for(rating = 1; rating <= 9; rating++) { printf( %8d%11d, rating, freq[rating]); if(freq[rating] > largest) { largest = freq[rating]; mode_value = rating; for(h = 1; h <= freq[rating]; h++) { printf( * ); printf( \n ); Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 13 / 15

Παράδειγμα (4) data-analysisc void print_array(const int a[]) { int j; for(j = 0; j <= SIZE -1; j++) { if(j % 20 == 0) { printf( \n ); printf( %2d, a[j]); int main(void) { int frequency[10] = {0; int response[size] = { 6, 7, 8, 9, 8, 7, 8, 9, 8, 9, 7, 8, 9, 5, 9, 8, 7, 8, 7, 8, 6, 7, 8, 9, 3, 9, 8, 7, 8, 7, 7, 8, 9, 8, 9, 8, 9, 7, 8, 9, 6, 7, 8, 7, 8, 7, 9, 8, 9, 2, 7, 8, 9, 8, 9, 8, 9, 7, 5, 3, 5, 6, 7, 2, 5, 3, 9, 4, 6, 4, 7, 8, 9, 6, 8, 7, 8, 9, 7, 8, 7, 4, 4, 2, 5, 3, 8, 7, 5, 6, 4, 5, 6, 1, 6, 5, 7, 8, 7 ; mean(response); median(response); mode(frequency, response); return 0; Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 14 / 15

Παράδειγμα: Έξοδος ******** Mean ******** The mean is the average value of the data items The mean is equal to the total of all the data items divided by the number of data items ( 99 ) The mean value for this run is: 681 / 99 = 68788 ******** Median ******** The unsorted array of responses is: 6 7 8 9 8 7 8 9 8 9 7 8 9 5 9 8 7 8 7 8 6 7 8 9 3 9 8 7 8 7 7 8 9 8 9 8 9 7 8 9 6 7 8 7 8 7 9 8 9 2 7 8 9 8 9 8 9 7 5 3 5 6 7 2 5 3 9 4 6 4 7 8 9 6 8 7 8 9 7 8 7 4 4 2 5 3 8 7 5 6 4 5 6 1 6 5 7 8 7 The median is element 49 of the sorted 99 element array For this run the median is 7 ******** Mode ******** Response Frequency Histogram 1 1 * 2 3 *** 3 4 **** 4 5 ***** 5 8 ******** 6 9 ********* 7 23 *********************** 8 27 *************************** 9 19 ******************* The mode is the most frequent value For this run the mode is 8 which occurred 27 times Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015 15 / 15