// nacteni standardni knihovny // stdio pro vstup a vystup // a knihovny math pro přístup // k matematickým funkcím #include #include // definice konstant pouzivanych // v celem programu a vsech funkcich #define ISCR 60 #define JSCR 21 #define BLANK ' ' #define ZERO '-' #define YY '|' #define XX '-' #define FF 'x' // deklarace pouzitych funkci // fce - funkce, ktera se bude // vykreslovat // scrsho - funkce, ktera funkci fce // vykresli double fce(double); void scrsho(double (*)(double)); // hlavni program int main() { scrsho(fce); return 0; } // funkce, ktera se bude vykreslovat double fce(double x) { double y; y=sin(x); return y; } // funkce vykreslujici graf void scrsho(double (*fce)(double)) { int jz,j,i; double ysml,ybig,x2,x1,x,dyj,dx; double y[ISCR+1]; char scr[ISCR+1][JSCR+1]; do { printf("\nZadej hodnotu x1 x2"); printf("\n(x1ybig) ybig=y[i]; x+=dx; } if (ybig==ysml) ybig=ysml+1.0; dyj=(JSCR-1)/(ybig-ysml); jz=1-(int)(dyj*ysml); for (i=2; i<=ISCR-1; i++) scr[i][jz]=ZERO; for (i=1; i<=ISCR; i++) { j=1+(int)((y[i]-ysml)*dyj); scr[i][j]=FF; } if (jz==JSCR) printf(" 0.00e+00 "); else printf(" %+1.2e ",ybig); for (i=1; i<=ISCR; i++) printf("%c",scr[i][JSCR]); printf("\n"); for (j=(JSCR-1); j>=2; j--) { if (j==jz) printf(" 0.00e+00 "); else printf("%11s"," "); for (i=1; i<=ISCR; i++) printf("%c",scr[i][j]); printf("\n"); } if (jz==1) printf(" 0.00e+00 "); else printf(" %+1.2e ",ysml); for (i=1; i<=ISCR; i++) printf("%c",scr[i][1]); printf("\n"); if (x1==0.) printf("%10s %1.2e %41s %+1.2e\n"," ",x1," ",x2); else if (x2==0.) printf("%10s %+1.2e %41s %1.2e\n"," ",x1," ",x2); else printf("%10s %+1.2e %40s %+1.2e\n"," ",x1," ",x2); } } while (x1!=x2); }