240 likes | 255 Vues
Παραδειγματα Aλγοριθμων. Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1! + x 2 /2! + x 3 /3! +…+ x n /n!. Αριθμος Λεξεων.
E N D
Παραδειγματα Aλγοριθμων • Αριθμος λεξεων που διαβαστηκαν απο εισοδο • Εκτυπωση περιφερειας τετραγωνων με * • Υπολογισμος exp(x,n) = 1 + x/1! + x2/2! + x3/3! +…+ xn/n! epl-131
Αριθμος Λεξεων • Γραψετε ενα προγραμμα που διαβαζει ενα κειμενο απο την εισοδο και υπολογιζει και τυπωνει τον αριθμο λεξεων. epl-131
Αριθμος Λεξεων • Παραδειγματα • Τι πρεπει να γινει: • Διαβασμα ακολουθιας χαρακτηρων • Μετρηση Γεγονοτος: Λεξης • Τι ειναι λεξη:συνεχομενη σειρα χαρακτηρων • Τα αλλα τι ειναι? ‘\n’, ‘\t’, ‘ ’ • Μετρουμε: μετακινηση απο ασπρο διαστημα σε λεξη (ή απο λεξη σε ασπρο διαστημα) • Που ειμαστε προηγουμενως/τωρα:διαστημα ή λεξη-εννοια σημαίας (flag)
#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; } epl-131
#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; } epl-131
#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; } epl-131
Εκτυπωση περιφερειας τετραγωνων • Γραψετε ενα προγραμμα που διαβαζει το μεγεθος της πλευρας ενος τετραγωνου και τυπωνει την περιφερεια του με * (η τιμη πρεπει να ειναι ακεραια και >1). • Πχ εαν η τιμη ειναι 3 *** * * *** epl-131
Εκτυπωση περιφερειας τετραγωνων • Παραδειγματα • Τι πρεπει να γινει για τιμη ν: • Τυπωση πανω πλευρας με ν * • Τυπωση ενδιαμεσων (ν-2) με * ν-2 ‘ ’ * • Τυπωση κατω πλευρας με ν * epl-131
Χρησιμες Συναρτησεις void display_n_stars(int n); void display_star_spaces_star(int n); epl-131
Αλγοριθμος /* enter size of square */ /* call display_stars once */ /* call display_star_spaces_star n-2 times */ /* call display_stars once */ epl-131
/* 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); epl-131
/* n-2 calls */ i=0; while(size<n-2){ display_star_spaces_star(size); i=i+1; } epl-131
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);
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”); } epl-131
Υπολογισμος • Γραψετε ενα προγραμμα που υπολογιζει και τυπωνει την τιμη του exp(x,n) = 1 + x/1! + x2/2! + x3/3! +…+ xn/n! Το προγραμμα διαβαζει τις τιμες x και n απο τον χρηστη. • X0/0! + x1/1! + x2/2! + x3/3! +…+ xn/n! epl-131
Υπολογισμος • Τι πρεπει να γινει? • Δημιουργια n+1 ορων (0 μεχρι n) • Aθροισμα των ορων epl-131
Δημιουργια Ορου ν • Συναρτηση float term(n,x) επιστρεφει τον n ορο της σειρας για την τιμη x epl-131
+ + + exp term(0,x) term(1,x) term(2,x) term(3,x) exp exp exp float term(int n, float x) epl-131
Υπολογισμος 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; } epl-131
term(n,x) • Πως πρεπει να γινει? • υπολογισμος δυναμης • υπολογισμος παραγωντικου • Χρησιμες Συναρτησεις • xn float power(x,n); • n! int factorial(n); n! = 12 3 4 … n Οριζεται στην math.h Need user definition epl-131
float term (int n, float x) { return pow(x,n)/factorial(n); } epl-131
2 3 4 * * * factorial 1 factorial factorial factorial float factorial(int n) epl-131
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; } epl-131
Trace Table for Factorial • Για n: 0,1,2 … 5 epl-131