runner% cat graph_two_dim.c #include #include #define ROWS 101 #define COLS 62 #define PI 3.14159265358979 double f(double x, int n); void init_d(char d[][COLS]); void display_d(char d[][COLS]); void display2_d(char d[][COLS]); void main(void) { int i, j; double x = 0.0; char d[ROWS][COLS]; int n; scanf("%d", &n); init_d(d); for (i = 0; i < ROWS; i++) { j = (int)(50*f(x, n)); if (j < 0) d[i][0] = '*'; else if (j > 61) d[i][61] = '*'; else d[i][j] = '+'; x = x + (1.0/30.0); } display_d(d); printf("\n------------------------------------------\n\n"); display2_d(d); } double f(double x, int n) { int i; double sum = 0.0; double sign = 1.0; for (i = 1; i <= n; i++) { sum = sum + (sign/i)*sin(i*x); sign = -sign; } return (2.0/PI)*sum; } void init_d(char d[][COLS]) { int i, j; for (i = 0; i < ROWS; i++) for (j = 0; j < COLS; j++) d[i][j] = ' '; } void display_d(char d[][COLS]) { int i, j; for (i = 0; i < ROWS; i++) { if ((i%6) == 0) printf("%4.1f-", i*(1.0/30.0)); else printf(" |"); for (j = 0; j < COLS; j++) printf("%c", d[i][j]); printf("\n"); } } void display2_d(char d[][COLS]) { int i, j; for (j = COLS - 2; j >= 0; j--) { if ((j%10) == 0) printf("%4.1f-", j*(1.0/50.0)); else printf(" |"); for (i = 0; i < ROWS; i++) printf("%c", d[i][j]); printf("\n"); } } runner% cc -o graph_two_dim graph_two_dim.c -lm runner% graph_two_dim 10 0.0-+ |+ |+ |+ |+ | + 0.2- + | + | + | + | + | + 0.4- + | + | + | + | + | + 0.6- + | + | + | + | + | + 0.8- + | + | + | + | + | + 1.0- + | + | + | + | + | + 1.2- + | + | + | + | + | + 1.4- + | + | + | + | + | + 1.6- + | + | + | + | + | + 1.8- + | + | + | + | + | + 2.0- + | + | + | + | + | + 2.2- + | + | + | + | + | + 2.4- + | + | + | + | + | + 2.6- + | + | + | + | + | + 2.8- + | + | + | + | + | + 3.0- + | + | + | + | + |* 3.2-* ------------------------------------------------------------------------------------------------------------- 1.2- | | | | | ++ | + | + | 1.0- + + | | | + | | + | + | | | + 0.8- | +++ + + | ++ + | + + | + + + | + +++ | | + | + | + 0.6- + | + | +++++++ ++ | + ++ | + | + | + | + | + | + 0.4- + | ++ ++ | +++ ++++ | + | + | + | + | + + | + | + 0.2- ++ | +++++++ | ++ | + | + | + | + | + | + + | ++ 0.0-+++++ ******