ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Αλφαριθμητικά προγράμματα, αρχεία προγράμματα Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Πρόγραμμα E-1: Μέτρηση πλήθους χαρακτήρων /* Metrhsh plhthous xarakthrwn se ena string */ #include <stdio.h> #include <string.h> int main() { char string[100]; int c = 0, count[26] = {0}; gets(string); while ( string[c]!= '\0' ) { if ( string[c] >= 'a' && string[c] <= 'z' ) count[string[c]-'a']++; c++; } for ( c = 0 ; c < 26 ; c++ ) { if( count[c]!= 0 ) printf("%c brethhke %d fores\n",c+'a',count[c]); } return 0; }
Πρόγραμμα E-2: Απαλοιφή πολλαπλών κενών /* Apaloifh twn pollaplwn kenwn */ #include <stdio.h> int main() { char text[100], newtext[100]; int c = 0, d = 0; printf("eisagete keimeno\n"); gets(text); while (text[c]!= '\0') { if (!(text[c] == ' ' && text[c+1] == ' ')) { newtext[d] = text[c]; d++; } c++; } newtext[d] = '\0'; printf("keimeno xwris pollapla kena\n%s\n", newtext); return 0; }
Πρόγραμμα E-3: Διάφορες συναρτήσεις για strings (1/3) /* Paradeigmata synarthsewn gia strings */ #include <stdio.h> int string_length(char *s) { int c = 0; while(*(s+c)) c++; return c; } void copy_string(char *target, char *source) { while(*source) { *target = *source; source++; target++; } *target = '\0'; } (συνέχεια)
Πρόγραμμα E-3: Διάφορες συναρτήσεις για strings (2/3) int compare(char a[], char b[]) { int c = 0; while( a[c] == b[c] ) { if( a[c] == '\0' b[c] == '\0' ) break; c++; } if( a[c] == '\0' && b[c] == '\0' ) return 0; else return -1; } void lower_string(char *string) { while(*string) { if ( *string >= 'A' && *string <= 'Z' ) { *string = *string + 32; } string++; } } (συνέχεια)
Πρόγραμμα E-3: Διάφορες συναρτήσεις για strings (3/3) int main( void ) { char a[100], b[100]; int k; gets(a); k= string_length( a); printf("%d\n", k); copy_string( b, a); printf("string a=\"%s\"\n", a); printf("neo string b=\"%s\"\n", b); k= compare( a, b); printf("to apotelesma sygkrishs a, b einai k=%d\n", k); lower_string( b); printf("se peza grammata string b=\"%s\"\n", b); k= compare( a, b); printf("to apotelesma sygkrishs a, b einai k=%d\n", k); return 0; }
Πρόγραμμα E-4: Επίδειξη της συνάρτησης atof /* Epideiksh ths synarthshs atof (alles synarthseis einai oi "atoi" gia akeraio kai "atol" gia megalo akeraio) */ #include <stdio.h> #include <stdlib.h> int main(void) { double a, b; char str[20]; gets(str); a=atof(str); b=a/2; printf("a=%lf, b=%lf\n", a, b); return 0; }
Πρόγραμμα E-5: Αλφαβητική κατάταξη πίνακα (1/2) /* Sorting pinaka apo strings */ #include <stdio.h> #include <string.h> #define N 10 void sort( char str[][40], int n); int main(void) { char names[n][40]; int i; printf("dwse ta %d onomata\n", N); for(i=0;i<n; i++) { scanf("%39s", names[i]); } sort( names, N); printf("ta %d onomata se alphabhtikh seira\n", N); for(i=0;i<n; i++) { printf("%s\n", names[i]); } return 0; } (συνέχεια)
Πρόγραμμα E-5: Αλφαβητική κατάταξη πίνακα (2/2) void sort( char str[][40], int n) { int i, j; char temp[40]; for(i=0;i<n; i++) { for(j=0;j<n-1; j++) { if (strcmp(str[j], str[j+1])>0) { strcpy(temp,str[j]); strcpy(str[j], str[j+1]); strcpy(str[j+1], temp); } } } }
Πρόγραμμα E-6: Εξαγωγή λέξεων από string (1/2) /* Xwrismos string se lekseis */ #include <stdio.h> #include <string.h> int main( void) { int c,w,d; char a[40]; char b[40]; gets(a); c=0; w=0; d=0; (συνέχεια)
Πρόγραμμα E-6: Εξαγωγή λέξεων από string (2/2) while ( a[c]!=0 ) { if ((a[c]!=' ') && (w==0)) { w=1; b[d]=a[c]; d++; } else if ( (w==1) && (a[c]==' ') ) { w=0; b[d]='\0'; printf("%s\n", b); d=0; } else if ( (w==1) && (a[c]!=' ')) { b[d]=a[c]; d++; } else if ( (w==0) && (a[c]==' ') ) { // do nothing } c++; } if (w==1) { b[d]='\0'; printf("%s\n", b); } }
Πρόγραμμα G-1: Συναρτήσεις για αρχεία (1/3) /* Paradeigma synarthsewn arxeiwn */ #include <stdio.h> #include <string.h> int main( void) { FILE *fp, *fp1; int i; char ch; char s[40]; char line[80]; int nlines; printf("dhmiourgia kai eggrafh arxeiou askhsh_g_1_data.txt\n"); fp= fopen("askhsh_g_1_data.txt", "w"); if (fp == NULL) { printf("problima kata to anoigma tou arxeiou\n"); return 1; } for (i=0; i<10; i++) { fprintf( fp, "%d\n", i); } fclose (fp); printf("ok\n"); (συνέχεια)
Πρόγραμμα G-1: Συναρτήσεις για αρχεία (2/3) /*--------------------------------------*/ printf("antigrafh arxeiou askhsh_g_1_data.txt sto askhsh_g_2_data.txt\n"); fp= fopen("askhsh_g_1_data.txt", "r"); if (fp == NULL) return 1; fp1= fopen("askhsh_g_1_data2.txt", "w"); if (fp1 == NULL) return 1; strcpy( s, "Antigrafo\n"); fputs( s, fp1); while (ch!= EOF) { ch=fgetc(fp); if (ch!= EOF) { fputc( ch, fp1); } } fclose (fp); fclose (fp1); printf("ok\n"); (συνέχεια)
Πρόγραμμα G-1: Συναρτήσεις για αρχεία (3/3) /*--------------------------------------*/ printf("diabasma tou arxeiou askhsh_g_2_data.txt kai typwma sthn othonh\n"); fp= fopen("askhsh_g_1_data2.txt", "r"); if (fp == NULL) return 1; nlines=0; while (!feof(fp)) { fgets(line, 80, fp); puts(line); nlines++; } printf("to arxeio exei %d grammes\n", nlines); fclose (fp); printf("ok\n"); return 0; }
Τέλος Ενότητας