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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

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

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

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

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

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

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

max & min Μεθοδολογία Τα βήματα που ακολουθούμε σε όλες τις τεχνικές εύρεσης max & min είναι τα εξής 2:

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

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

Τμήμα Εφαρμοσμένης Πληροφορικής

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

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

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

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

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

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

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

max & min Μεθοδολογία - 1 Τα βήματα που συνήθως ακολουθούμε στις τεχνικές εύρεσης max & min είναι τα εξής:

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

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Η δέσμευση στοιχειων ενός δισδιάστατου πίνακα στη 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 θέσεις πραγματικών ή 40 bytes (1 float έχει εύρος 4 bytes) Πλήθος στοιχείων = (πλήθος_γραμμών) x (πλήθος_στηλών) Αριθμός bytes = (εύρος_τύπου) x (πλήθος_στοιχείων): bytes = sizeof(τύπος)*(πλήθος_γραμμών) *(πλήθος_στηλών) Αποθηκεύονται διαδοχικά πρώτα τα στοιχεία της 1ης γραμμής, στη συνέχεια τα στοιχεία της 2ης γραμμής κ.ο.κ. 3

Αναφορά σε στοιχεία ενός δισδιάστατου πίνακα Αναφερόμαστε σε κάποιο στοιχείο ενός διδιάστατου πίνακα με το όνομα του πίνακα με τους αριθμούς της γραμμής και της στήλης σε αγκύλες: 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] H αρίθμηση των γραμμών και των στηλών ξεκινάει από το 0. Σε ένα πίνακα διαστάσεων ΜxN το 1 ο στοιχείο του είναι το Α[0][0] και το τελευταίο Α[Μ-1][Ν-1]. Ο υπολογισμός της θέση μνήμης κάποιου στοιχείου Α[i][j] ενός πίνακα Α[Μ][Ν] γίνεται σύμφωνα με τον τύπο: position = i * Ν + j + 1 4

Απόδοση τιμών σε δισδιάστατους πίνακες - Ι Κατά την διάρκεια της εκτέλεσης του προγράμματος: 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; 5

Απόδοση τιμών σε δισδιάστατους πίνακες - Ι Είναι δυνατόν να μη δηλωθεί το πλήθος των στοιχείων των γραμμών, όταν αποδίδονται αρχικές τιμές. Το πλήθος των στηλών όμως πρέπει υποχρεωτικά να δηλωθεί: 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 υπερβαίνουν τα όρια. 6

Διάβασμα ενός δισδιάστατου πίνακα (πληκτρολόγιο) #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"); // γιατί; 7

Δημιουργία ενός μοναδιαίου πίνακα (Μ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 8

Εύρεση μέσου όρου στοιχείων δισδιάστατου πίνακα #include <stdio.h> #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); 9

Ποια είναι η θέση του μικρότερου στοιχείου.. 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);. 10

Εύρεση μεγαλύτερου και μικρότερου κάθε γραμμής 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", i+1, MAX,MIN); 11

Εύρεση μέσου όρων των διαγωνίων τετράγωνου πίνακα 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); 12

Στο εργαστήριο Μεταγλωττίστε τα προγράμματα που υπάρχουν στο περιεχόμενο της θεωρίας του μαθήματος. Διαβάστε ένα δισδιάστατο πίνακα και βρείτε τα αθροίσματα κάθε γραμμής και κάθε στήλης. Διαβάστε ένα δισδιάστατο τετραγωνικό πίνακα και βρείτε το μικρότερο στοιχείο της διαγωνίου και το μεγαλύτερο της αντιδιαγωνίου. Γράψτε ένα πρόγραμμα που θα διαβάζει 2 δισδιάστατους πίνακες με το ίδιο πλήθος γραμμών και στηλών αντίστοιχα και θα δημιουργεί ένα νέο πίνακα με άθροισμα τους. Γράψτε ένα πρόγραμμα που θα ελέγχει αν 2 δισδιάστατοι πίνακες είναι ίσοι. Γράψτε ένα πρόγραμμα με το οποίο θα ελέγχετε αν ένας τετραγωνικός πίνακας είναι μοναδιαίος. Γράψτε ένα πρόγραμμα το οποίο θα ελέγχει αν σ ένα δισδιάστατο πίνακα επικρατούν τα μηδενικά στοιχεία (> 50% -sparse matrix). 13