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

Σχετικά έγγραφα
Η γλώσσα προγραμματισμού C

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

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

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

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

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

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

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

Εισαγωγή στην πληροφορική

Υπολογισμός - Εντολές Επανάληψης

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

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εισαγωγή στον δομημένο προγραμματισμό

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

Δομημένος Προγραμματισμός

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

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

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

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

Πίνακες. Χρησιμοποιούνται για αποθήκευση συνόλου δεδομένων του ίδιου τύπου. Γραμμική Διάταξη Δήλωση Τύπος Δεδομένων ΌνομαΠίνακα[ length ]

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

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

Ηλεκτρονικοί Υπολογιστές

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

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Εχουμε ήδη συναντήσει μονοδιάστατους πίνακες, οι οποίοι ορίζονται ως εξής:

Εισαγωγή στον δομημένο προγραμματισμό

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

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

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

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

ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ

Εισαγωγή στην πληροφορική

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

ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

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

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

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

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

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

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

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

ΠΙΝΑΚΕΣ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

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

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

γνωστό) ΘΕΩΡΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ Ασκήσεις C 1. Να γραφεί πρόγραµµα που να εµφανίζει τους 5 πρώτους µεγαλύτερους

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Transcript:

Η γλώσσα προγραμματισμού C Πίνακες 2 διαστάσεων

Δήλωση δισδιάστατου πινακα Οι δισδιάστατοι πίνακες χαρακτηρίζονται από τις γραμμές και τις στήλες (οι διαστάσεις) τους. Πίνακας 2 διαστάσεων: 3 γραμμών και 4 στηλών: 1 2 3 4 Στήλες 1 Α 11 Α 12 Α 13 Α 14 2 Α 21 Α 22 Α 23 Α 24 3 Α 31 Α 32 Α 33 Α 34 Πρόκειται για μονοδιάστατο πίνακα, όπου κάθε στοιχείο του είναι ένας πίνακας. Η δήλωση στη C έχει ως εξής: Τύπος Όνομα_πίνακα [Πλήθος_γραμμών] [Πλήθος_στηλών]; Παράδειγμα δήλωσης: int A [3] [4]; 2

Δήλωση δισδιάστατου πινακα Οι δισδιάστατοι πίνακες χαρακτηρίζονται από τις γραμμές και τις στήλες (οι διαστάσεις) τους. Πίνακας 2 διαστάσεων: 3 γραμμών και 4 στηλών: 1 2 3 4 Στήλες 1 Α 11 Α 12 Α 13 Α 14 2 Α 21 Α 22 Α 23 Α 24 3 Α 31 Α 32 Α 33 Α 34 Πρόκειται για μονοδιάστατο πίνακα, όπου κάθε στοιχείο του είναι ένας πίνακας. Η δήλωση στη C έχει ως εξής: Τύπος Όνομα_πίνακα [Πλήθος_γραμμών] [Πλήθος_στηλών]; Παράδειγμα δήλωσης: int A [3] [4]; Στη C η αρίθμηση αρχίζει από το 0 3

Η δέσμευση στοιχείων ενός δισδιάστατου πίνακα στη C Με τη δήλωση ενός πίνακα δεσμεύονται αντίστοιχα τμήματα μνήμης. Παραδείγματα: int A[3][4]; // ή int Α[Μ][Ν] αν έχουν οριστεί τα Μ & Ν // δεσμεύονται 12 θέσεις ακεραίων ή 48 bytes (1 int έχει εύρος 4 bytes) char O[10][30]; // ή char O[Μ][Ν] αν έχουν οριστεί τα Μ & Ν // δεσμεύονται 300 θέσεις χαρακτήρων ή 300 bytes (1 char έχει εύρος 1 byte) float P [4][5]; // ή float P[Μ][Ν] αν έχουν οριστεί τα Μ & Ν // δεσμεύονται 20 θέσεις πραγματικών ή 80 bytes (1 float έχει εύρος 4 bytes) Πλήθος στοιχείων = (πλήθος_γραμμών) x (πλήθος_στηλών) Αριθμός bytes = (εύρος_τύπου) x (πλήθος_στοιχείων): bytes = sizeof(τύπος)*(πλήθος_γραμμών)*(πλήθος_στηλών) Αποθηκεύονται διαδοχικά πρώτα τα στοιχεία της 1ης γραμμής, στη συνέχεια τα στοιχεία της 2ης γραμμής κ.ο.κ. 4

Αναφορά σε στοιχεία ενός δισδιάστατου πίνακα Αναφερόμαστε σε κάποιο στοιχείο ενός διδιάστατου πίνακα με το όνομα του πίνακα με τους αριθμούς της γραμμής και της στήλης σε αγκύλες: A[i][j] Στήλες 0 1 2 3 0 Α[0][0] Α[0][1] Α[0][2] Α[0][3] 1 2 Α[1][0] Α[1][1] Α[1][2] Α[1][3] Α[2][0] Α[2][1] Α[2][2] Α[2][3] Στη C η αρίθμηση των γραμμών και των στηλών ξεκινάει από το 0. Σε ένα πίνακα διαστάσεων ΜxN το 1 ο στοιχείο του είναι το Α[0][0] και το τελευταίο Α[Μ-1][Ν-1]. Ο υπολογισμός της θέση μνήμης κάποιου στοιχείου Α[i][j] ενός πίνακα Α[Μ][Ν] γίνεται σύμφωνα με τον τύπο: position = i * Ν + j + 1 αρχίζοντας την αρίθμηση από το 1 5

Απόδοση τιμών σε δισδιάστατους πίνακες - Ι Κατά την διάρκεια της εκτέλεσης του προγράμματος: pinakas [i][j] = 8; Με την δήλωση του πίνακα (απόδοση αρχικών τιμών): int A[2][3] = {{5,8,2, {6, 3,7; ή int A[2][3] = {5, 8, 2, 6, 3, 7; A[0][0]=5; A[0][1]=8; A[0][2]=2; A[1][0]=6; A[1][1]=3;) Α[1][2]=7; Αν δεν υπάρχουν όλες οι τιμές: int A[2][3] = {5,8,2; (A[0][0]=5; A[0][1]=8; A[0][2]=2; A[1][0/1/2]=0; ) Αποδοση αρχικών μηδενικών τιμών: int A[2][3] = {0; 6

Απόδοση τιμών σε δισδιάστατους πίνακες - IΙ Είναι δυνατόν να μη δηλωθεί το πλήθος των στοιχείων των γραμμών, όταν αποδίδονται αρχικές τιμές. Το πλήθος των στηλών όμως πρέπει υποχρεωτικά να δηλωθεί: int A[][3] = {{5,8,2, {6, 3,7; ή int A[][3] = {5, 8, 2, 6, 3, 7; (θα δημιουργηθεί ένας δισδιάστατος πίνακας ακεραίων με 2 γραμμές και 3 στήλες) Για την ανάγνωση (αλλά και για τη μαζική επεξεργασία) των στοιχείων ενός πίνακα χρησιμοποιούμε ένθετες εντολές επανάληψης: Προσοχή: for (i=0;i<m; i++) for (j=0;j<n; j++) 5 8 2 6 3 7 Οι compilers της C δεν ελέγχουν αν οι δείκτες i & j υπερβαίνουν τα όρια. 7

Διάβασμα ενός δισδιάστατου πίνακα (πληκτρολόγιο) #include <stdio.h> #define M 4 #define N 5 main() { int i, j, pin[m][n]; for (i=0;i<m; i++) //ανάγνωση πίνακα for (j=0;j<n; j++) { printf("give me the no. %d,%d element:",i+1, j+1); scanf("%d",&pin[i][j]); printf("\nyou have just read:\n"); for (i=0;i<m; i++) { for (j=0;j<n; j++) printf("\t%d", pin[i][j]); printf("\n"); // γιατί; // εμφάνιση στη οθόνη Φυσικά και με την συνάρτηση rand(): pin[i][j] = rand()%size; 8

Δημιουργία ενός μοναδιαίου πίνακα (ΜxM) #include <stdio.h> #define Μ 4 main() { int i, j, pin[m][m] = {0; // όλα 0 for (i=0;i<m; i++) //δημιουργία πίνακα pin[i][i]=1; //διαγώνιος printf("\nyou have just creat:\n"); for (i=0;i<m; i++) { // εμφάνιση στη οθόνη for (j=0;j<m; j++) printf("\t%d ", pin[i][j]); printf("\n"); // γιατί; Μοναδιαίος 4x4: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 9

Εύρεση μέσου όρου στοιχείων δισδιάστατου πίνακα #define M 4 #define N 5 main() { int i, j, pin[m][n], sum; float MO; for (i=0;i<m; i++) //ανάγνωση πίνακα for (j=0;j<n; j++) { printf("give me the no. %d,%d element:",i+1, j+1); scanf("%d",&pin[i][j]); for (sum=0, i=0;i<m; i++) //υπολογισμός αθροίσματος for (j=0;j<n; j++) sum=sum+pin[i][j]; MO=(float) sum /(M*N); // υπολογισμός Μέσου Όρου printf("mo=%f\n", MO); 10

Ποια είναι η θέση του μικρότερου στοιχείου.. int i, j, pin[m][n], imin, jmin; for (i=0;i<m; i++) //ανάγνωση πίνακα for (j=0;j<n; j++) { printf("give me the no. %d,%d element:",i+1, j+1); scanf("%d",&pin[i][j]); imin=0;jmin=0; for (i=0;i<m; i++) for (j=0;j<n; j++) //εύρεση του μικρότερου if (pin[imin][jmin]>pin[i][j]) { imin=i; jmin=j; printf ("MIN=%d at position [%d],[%d]\n", pin[imin][jmin], imin+1, jmin+1);. 11

Εύρεση μεγαλύτερου και μικρότερου κάθε γραμμής int i, j, pin[m][n], MIN, MAX; for (i=0;i<m; i++) //ανάγνωση πίνακα for (j=0;j<n; j++) { printf("give me the no. %d,%d element:",i+1, j+1); scanf("%d",&pin[i][j]); for (i=0;i<m; i++) { MIN=MAX=pin[i][0]; // αρχικές τιμές σε κάθε γραμμή for (j=0;j<n; j++) { if (MAX < pin[i][j]) MAX= pin[i][j]; if (MIN > pin[i][j]) MIN = pin[i][j]; printf ("line %d, MAX=%d, MIN=%d\n", i+1, MAX,MIN); 12

Εύρεση μέσου όρων των διαγωνίων τετράγωνου πίνακα int i, j, pin[m][m], sum; float MO1, MO2; for (i=0;i<m; i++) //ανάγνωση πίνακα for (j=0;j<m; j++) { printf("give me the no. %d,%d element:",i+1, j+1); scanf("%d",&pin[i][j]); sum=0; // 1 η διαγώνιος for (i=0;i<m; i++) sum=sum+pin[i][i]; MO1=(float)sum/M; sum=0; //2 η διαγώνιος for (i=0;i<m; i++) // αν βάλουμε for (i = Μ-1 ; i >= 0 ; --i)? sum=sum +pin[i][(m-1)-i]; MO2=(float) sum/m; printf ("1st diagonal, average: %f\n", MO1); printf ("2nd diagonal, average: %f\n", MO2); 13