2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1! + x 2 /2! + x 3 /3! +…+ x n /n!
2/28/00epl-1312 Αριθμος Λεξεων Γραψετε ενα προγραμμα που διαβαζει ενα κειμενο απο την εισοδο και υπολογιζει και τυπωνει τον αριθμο λεξεων.
3 Αριθμος Λεξεων Παραδειγματα Τι πρεπει να γινει: –Διαβασμα ακολουθιας χαρακτηρων –Μετρηση Γεγονοτος: Λεξης Τι ειναι λεξη:συνεχομενη σειρα χαρακτηρων Τα αλλα τι ειναι? ‘\n’, ‘\t’, ‘ ’ Μετρουμε: μετακινηση απο ασπρο διαστημα σε λεξη (ή απο λεξη σε ασπρο διαστημα) Που ειμαστε προηγουμενως/τωρα:διαστημα ή λεξη- εννοια σημαίας (flag)
2/28/00epl-1314 #define ON 1 #define OUT 0 int main() {int c, where_before, where_now, nw; where_before = OUT; nw = 0; while((c=getchar()) != EOF){ if (c == ‘\n’ || c==‘\t’ || c==‘ ’) where_now = OUT; else where_now = ON; if ( where_before == OUT && where_now = ON) nw = nw + 1; where_before = where_now; } printf(“The number of words in the input is %3d.\n”,nw); return 0; }
2/28/00epl-1315 #define ON 1 #define OUT 0 int main() { int c, where, nw; where = OUT; nw = 0; while((c=getchar()) != EOF){ if (c == ‘\n’ || c==‘\t’ || c==‘ ’) where = OUT; else if ( where == OUT){ nw = nw + 1; where = ON; } printf(“The number of words in the input is %3d.\n”,nw); return 0; }
2/28/00epl-1316 #define ON 1 #define OUT 0 int main() { int c, where, nw; where = OUT; nw = 0; while((c=getchar()) != EOF){ if (c == ‘\n’ || c==‘\t’ || c==‘ ’){ if (where == ON) nw = nw + 1; where = OUT; } else where = ON; } printf(“The number of words in the input is %3d.\n”,nw); return 0; }
2/28/00epl-1317 Εκτυπωση περιφερειας τετραγωνων Γραψετε ενα προγραμμα που διαβαζει το μεγεθος της πλευρας ενος τετραγωνου και τυπωνει την περιφερεια του με * (η τιμη πρεπει να ειναι ακεραια και >1). Πχ εαν η τιμη ειναι 3 *** * * ***
2/28/00epl-1318 Εκτυπωση περιφερειας τετραγωνων Παραδειγματα Τι πρεπει να γινει για τιμη ν: –Τυπωση πανω πλευρας με ν * –Τυπωση ενδιαμεσων (ν-2) με * ν-2 ‘ ’ * –Τυπωση κατω πλευρας με ν *
2/28/00epl-1319 void display_n_stars(int n); void display_star_spaces_star(int n); Χρησιμες Συναρτησεις
2/28/00epl /* enter size of square */ /* call display_stars once */ /* call display_star_spaces_star n-2 times */ /* call display_stars once */ Αλγοριθμος
2/28/00epl /* enter size of square */ printf(“Enter square size: “); scanf(“%d”, &size); /* size stars */ display_n_stars(size); /* n-2 calls to display_star_spaces_star(size);*/ /* size stars */ display_n_stars(size);
2/28/00epl /* n-2 calls */ i=0; while(size<n-2){ display_star_spaces_star(size); i=i+1; }
13 int i, size; /* enter size of square */ printf(“Enter square size: “); scanf(“%d”, &size); /*print size stars */ display_n_stars(size); /* n-2 calls to display_star_spaces_star(size);*/ i=0; while(size<n-2){ display_star_spaces_star(size); i=i+1; } /* print size stars */ display_n_stars(size);
2/28/00epl void display_n_stars(int n) { int i=0; while(i<n){ printf(“*”); i = i + 1; } printf(“\n”); } void display_star_spaces_star(int n) { int i=0; if (n<=2) return; printf(“*”); while(i<n-2){ printf(“ ”); i = i + 1; } printf(“*\n”); }
2/28/00epl Υπολογισμος Γραψετε ενα προγραμμα που υπολογιζει και τυπωνει την τιμη του exp(x,n) = 1 + x/1! + x 2 /2! + x 3 /3! +…+ x n /n! Το προγραμμα διαβαζει τις τιμες x και n απο τον χρηστη. X 0 /0! + x 1 /1! + x 2 /2! + x 3 /3! +…+ x n /n!
2/28/00epl Υπολογισμος Τι πρεπει να γινει? –Δημιουργια n+1 ορων (0 μεχρι n) –Aθροισμα των ορων
2/28/00epl Δημιουργια Ορου ν Συναρτηση float term(n,x) επιστρεφει τον n ορο της σειρας για την τιμη x
2/28/00epl exp term(0,x) float term(int n, float x) term(1,x)term(2,x)term(3,x) exp
2/28/00epl Υπολογισμος float exp; int ith_term; exp =0; ith_term = 0; while(ith_term <= n){ exp = exp + term(ith_term,x); ith_term = ith_term + 1; }
2/28/00epl term(n,x) Πως πρεπει να γινει? –υπολογισμος δυναμης –υπολογισμος παραγωντικου Χρησιμες Συναρτησεις –x n float power(x,n); –n! int factorial(n); n! = … n Οριζεται στην math.h Need user definition
2/28/00epl float term (int n, float x) { return pow(x,n)/factorial(n); }
2/28/00epl factorial * * * float factorial(int n)
2/28/00epl float factorial (int n) { int f,i; f=1; i=2;/* if i=0 or 1 return 1*/ while(i<=n){ f = f * i; i = i + 1; } return f; }
2/28/00epl Trace Table for Factorial Για n: 0,1,2 … 5