Case study 1: Calculate the approximation of Pi Calculate the approximation of Pi by formula with error 1e-4. Algorithm pi = 0, s = 1, n = 1, t = s/n while fabs(t) > 1e-4 do pi = pi + t n = n +2 s = -s t = s / n; end while Pi = 4 * pi
Implementation #include <stdio.h> #include <math.h> main(){ int s = 1; double n = 1, t = 1, pi = 0; while (fabs(t)>= 1e-4) { pi = pi + t; n += 2; s = - s; t = s/n; } pi = pi * 4; printf("%10.6f\n", pi); 3.141393
Case Study 2: Fibonacci Sequence Calculate the first 40 number of Fibonacci sequence: F(1) = 1, F(2) = 1, …, F(n) = F(n-1) + F(n-2) Algorithm f1 = 1, f2 = 1, i = 1 For i from 1 to 20 do Print f1 and f2 f1 = f1 + f2 f2 = f2 + f1 End of for loop
Implementation #include <stdio.h> main(){ long int f1, f2; int i; f1 = 1; f2 = 1; for (i = 1; i<=20; i++) { printf("%12ld %12ld ", f1, f2); if(i%2==0) printf("\n"); f1 = f1 + f2; f2 = f2 + f1; }
Case Study 3: Simple Encryption and Decryption Problem: Convert a plain text to a cipher text by alphabet of module k. Where 0<k<26 is an integer, used a key to encode and decode. For example if k = 3, A will be encrypted to D, and y will be encrypted to b. Encryption Algorithm: Get a key k While the input character c is not \n Convert c into its cipher text by using the kth letter forward End while For key k Convert c into its plain text by using the kth letter backward
Implementation #include <stdio.h> main(){ char c; int key; printf("Input a key between 1 and 25: \n"); scanf("%d", &key); while ((c = getchar())!='*') { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) c = c + key; if (c > 'Z' && c <='Z'+key || c >'z') c = c - 26; } printf("%c",c);
Reading Data from a File #include <stdio.h> /* defines fopen, fclose, fscanf fprintf, and EOF */ int main(void) { FILE *inp; /* input file pointer */ int sum = 0, /* sum of scores input so far */ score, /* current score */ input_status; /* status value returned by fscanf */ inp = fopen("scores.dat", "r"); /* open a file for reading */ printf("Scores\n"); input_status = fscanf(inp, "%d", &score); /* read the first line from the file */ while (input_status != EOF) { /* if not the end of file sign */ printf("%5d\n", score); sum += score; input_status = fscanf(inp, "%d", &score); /* continue to read the next line */ } printf("\nSum of exam scores is %d\n", sum); fclose(inp); /* close the file */ Run by command line
Structure Chart for Computing Solar Collecting Area Size
Program to Approximate Solar Collecting Area Size
Program to Approximate Solar Collecting Area Size (cont’d)
Program to Approximate Solar Collecting Area Size (cont’d)