ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Παράδειγμα 1 Δήλωση και αρχικοποίηση μονοδιάστατου πίνακα [5] με χρήση δομής επανάληψης με συνθήκη στην είσοδο και μετρητή. int main() int myarray[5]; int i; for(i=0;i<5;i++)//loop 4 times printf("value for myarray[%d]:",i); scanf("%d", &myarray[i]); for(i=0;i<5;i++) printf("myarray[%d] is %d\n",i,myarray[i]); return 0; Εάν βάλουμε στον πίνακα τις τιμές 1,2,3,45,100 θα πάρουμε την έξοδο: Value for myarray[0]:1 Value for myarray[0]:2 Value for myarray[0]:3 Value for myarray[0]:45 Value for myarray[0]:100 myarray[0] is 1 myarray[0] is 2 myarray[0] is 3 myarray[0] is 45 myarray[0] is 100 Δήλωση και αρχικοποίηση με τις δοθείσες τιμές: int myarray[5]=1,2,3,45,100; σελ. 1
Παράδειγμα 1 Δήλωση ενός πίνακα 5 στοιχείων και εκτύπωση των τιμών των στοιχείων του αντίστροφα. int main() int Ar[5],i; for(i=0;i<5;i++) printf("%2d: ",i+1); scanf("%d", &Ar[i]); printf("oi times antistrofa einai:\n"); for(i=4;i>-1;i--) printf("%5d\n", Ar[i]); return 0; σελ. 2
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Παράδειγμα 1 Δήλωση και αρχικοποίηση δισδιάστατου πίνακα [2Χ3] με χρήση δομής επανάληψης με συνθήκη στην είσοδο και μετρητή int myarray[2][3]; int i,j; for(i=0;i<2;i++)//loop 5 times for(j=0;j<3;j++) printf("value for myarray[%d][%d]:",i,j); scanf("%d", &myarray[i][j]); for(i=0;i<2;i++) for(j=0;j<3;j++) printf("myarray[%d][%d] is %d\n",i,j,myarray[i][j]); Εάν βάλουμε στον πίνακα τις τιμές 1,10,100,2,20,200 θα πάρουμε την έξοδο: Value for myarray[0][0]:1 Value for myarray[0][1]:10 Value for myarray[0][2]:100 Value for myarray[1][0]:2 Value for myarray[1][1]:200 Value for myarray[1][2]:2000 myarray[0][0] is 1 myarray[0][1] is 10 myarray[0][2] is 100 myarray[1][0] is 2 myarray[1][1] is 20 myarray[1][2] is 200 Δήλωση και αρχικοποίηση με τις δοθείσες τιμές: int myarray[2][3]=1,10,100,2,20,200 σελ. 3
Παράδειγμα 2 Πρόγραμμα που εμφανίζει στην έξοδο τα αθροίσματα των στοιχείων των στηλών και τα γινόμενα των στοιχείων των γραμμών εκχωρώντας τα αποτελέσματα των πράξεων σε δύο νέους πίνακες. #define R 3 #define C 4 int main() int i,j; float Ar[R][C],sum[4],prod[3]; //arxikopoihsh pinaka for(j=0;j<c;j++) printf("\nstoixeio[%d][%d]: ",i,j); scanf("%f", &Ar[i][j]); for(j=0;j<c;j++) //athroisma sthlwn sum[j]=0.0; sum[j]=sum[j]+ar[i][j]; //ginomeno grammwn prod[i]=1.0; for(j=0;j<c;j++) prod[i]=prod[i]*ar[i][j]; printf("\nginomeno GRAMMWN:\n"); printf("%.2f ",prod[i]); printf("\nathroisma STHLWN:\n"); for(j=0;j<c;j++) printf("%.2f ",sum[j]); return 0; σελ. 4
Γινόμενα γραμμών 5 2 3 4 120 1 7 8 9 504 6 2 1 1 12 Αθροίσματα στηλών 12 11 12 14 Παράδειγμα3 Πρόγραμμα που βρίσκει και εμφανίζει το μικρότερο στοιχείο της κύριας και δευτερεύουσας διαγωνίου ενός ακέραιου πίνακα 5Χ5. include <stdio.h> #define R 5 #define C 5 int Ar[R][C], i,j,master_min,minor_min; for(j=0;j<c;j++) printf("\nstoixeio[%d][%d]: ",i,j); scanf("%d", &Ar[i][j]); printf("\n"); master_min=ar[0][0]; if(ar[i][i]<master_min) master_min=ar[i][i]; minor_min=ar[0][c-1]; if(ar[i][c-1-i]<minor_min) minor_min=ar[i][c-1-i]; printf("\nmikr kyrias diag. einai to:%d \n",master_min); printf("\nmikr deyt. diag. einai to:%d \n",minor_min); σελ. 5
Τα στοιχεία της κύριας διαγωνίου είναι τα: Ar[i][i] Ar[0][0], Ar[1][1], Ar[2][2], Ar[3][3], Ar[4][4]. Τα στοιχεία της δευτερεύουσας διαγωνίου είναι τα: Ar[i][j-1-i] Ar[0][4], Ar[1][3], Ar[2][2], Ar[3][1], Ar[4][0]. Π.χ. σε έναν πίνακα: 5 3 7 6 11 2 4 3 5 4 9 10 2 3 8 7 1 0 0 0 0 1 3 12 11 Η κύρια διαγώνιος είναι: Η δευτερεύουσα διαγώνιος είναι: 5 3 7 6 11 5 3 7 6 11 2 4 3 5 4 2 4 3 5 4 9 10 2 3 8 9 10 2 3 8 7 1 0 0 0 7 1 0 0 0 0 1 3 12 11 0 1 3 12 11 σελ. 6
ΑΛΦΑΡΙΘΜΗΤΙΚΑ Είσοδος έξοδος αλφαριθμητικού. char name[30]; printf( Poio einai to onoma soy?\n ); scanf( %s, name); printf( Geia soy %s \n, name); Poio einai to onoma soy? (Mario) Geia soy Mario Με την χρήση των gets() και puts(). char name[30]; printf( Poio einai to onoma soy?\n ); gets(name); puts( Geia soy); puts(name); σελ. 7
ΣΥΝΑΡΤΗΣΕΙΣ ΑΛΦΑΡΙΘΜΗΤΙΚΩΝ ΕΥΡΕΣΗ ΜΗΚΟΥΣ strlen() char name[30]= Hello ; printf( %d\n, strlen(name)); Θα τυπωθεί το μήκος του αλφαριθμητικού δηλ. 5. Το ίδιο με εκχώρηση σε μεταβλητή. int a; char name[30]= Hello ; a=strlen(name); printf( to mhkos toy %s einai %d\n, name, a); ΑΝΤΙΓΡΑΦΗ ΑΛΦΑΡΙΘΜΗΤΙΚΟΥ strcpy() char name1[30]= hello ; char name2[30]= class ; strcpy(name1, name2); printf( %s n, name1); Το string του name2 θα καταχωρηθεί στο name1. σελ. 8
Θα τυπωθεί το αλφαριθμητικό class που πήρε την θέση του Hello στον πίνακα name1. Με strncpy(name1, name2, n); Θα αντιγράψει τα n πρώτα γράμματα του name2 στο name1. ΣΥΝΕΝΩΣΗ ΑΛΦΑΡΙΘΜΗΤΙΚΩΝ strcat() char name1[30]= hello ; char name2[30]= class ; strcat(name1, name2); printf( %s n, name1); Το string του name2 θα συνενωθεί με το string του name1. Θα τυπωθεί το αλφαριθμητικό helloclass. Με strncat (name1, name2, n); Θα ενώσει τα n πρώτα γράμματα του name2 με το name1. ΣΥΓΚΡΙΣΗ ΑΛΦΑΡΙΘΜΗΤΙΚΩΝ strcmp() char name1[30]= hello ; char name2[30]= class ; strcmp(name1, name2); Συγκρίνονται τα δύο αλφαριθμητικά και εάν βρεθούν όμοια η έξοδος της strcmp() είναι ο αριθμός 0 αλλιώς είναι ο -1. σελ. 9
Παράδειγμα1 char str1[30], str2[30]; strcpy(str1, Kalhmera!! ); strcpy(str2, Paidia!! ); printf( String1=%s\t string2=%s \n,str1,str2); strcat(str1,str2,3); printf( String1=%s \n,str1); strcpy(str1, Kalhnyxta ); printf( String1=%s \n,str1); Τα str1 Και str2 θα πάρουν τα strings Kalhmera και Paidia αντίστοιχα. Θα τυπωθεί στην αρχή: String1=Kalhmera!! String2=Paidia!! Μετά τη συνένωση του πρώτου string και των 3 πρώτων χαρακτήρων του δεύτερου θα έχουμε: String1=Kalhmera!! Pai Στο τέλος το str1 θα πάρει το string Kalynyxta και θα έχουμε: String1=Kalhnyxta σελ. 10
Παράδειγμα2 char name1[30]="kalhmera"; char name2[30]="kalhspera"; int diff; diff=strcmp(name1,name2); if(diff==0) printf("ta strings einai idia\n"); else printf("ta strings den einai idia\n"); printf("to diff einai %d\n", diff); strcpy(name2,name1); diff=strcmp(name1,name2); if(diff==0) printf("ta strings einai idia\n"); else printf("ta strings den einai idia\n"); printf("to diff einai %d\n", diff); Στην αρχή τα strings είναι Kalhmera και Kalhspera Θα τυπωθεί: Ta strings den einai idia To diff einai -1 Κατόπιν αντιγράφουμε το string του name1 στο name2 Θα τυπωθεί: Ta strings einai idia To diff einai 0 σελ. 11