fork download
  1. //#include <graphics.h>
  2. //#include <conio.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6.  
  7. int main(void)
  8. {
  9. const int n=20; //длина массивов
  10. float x[n], y=1.5, f[n], st=7; // параметры рассчитываемой функции
  11. // параметры экрана и массивы функций для отображения на экране
  12. int scrxmin=1, scrxmax=640, scrymin=1, scrymax=480, xs[n], fs[n], xs0, ys0;
  13. // вспомогательные минимумы и максимумы
  14. float xtmin=9e9, xtmax=-9e9, ftmin=9e9, ftmax=-9e9;
  15. int xsmin=32768, xsmax=-32768, fsmin=32768, fsmax=-32768;
  16. int i1;
  17. for (i1=0; i1<n; ++i1) // основной цикл расчета функции
  18. {
  19. if(i1==0) x[i1]=-100.2; else x[i1]=x[i1-1]+st;
  20. f[i1]=(x[i1]+y)/(y+1)-(x[i1]*y-12)/(34+x[i1]);
  21. // printf("x = %g, y = %g\n",x[i1],f[i1]);
  22. if(x[i1]<xtmin) xtmin=x[i1]; // выявление минимума по х
  23. if(x[i1]>xtmax) xtmax=x[i1]; // выявление максимума по у
  24. if(f[i1]<ftmin) ftmin=f[i1]; // выявление минимума по х
  25. if(f[i1]>ftmin) ftmax=f[i1]; // выявление максимума по у
  26. }
  27. printf("xmin=%g,\txmax=%g,\tfmin=%g,\tfmax=%g\n",xtmin,xtmax,ftmin,ftmax);
  28. for(i1=0; i1<n; ++i1) // цикл пересчета "натуральной" функции в экранную
  29. {
  30. xs[i1]=(x[i1]-xtmin)/(xtmax-xtmin)*(scrxmax-scrxmin)+1;
  31. fs[i1]=scrymax-(f[i1]-ftmin)/(ftmax-ftmin)*(scrymax-scrymin);
  32. if(xs[i1]<xsmin) xsmin=xs[i1];
  33. if(xs[i1]>xsmax) xsmax=xs[i1];
  34. if(fs[i1]<fsmin) fsmin=fs[i1];
  35. if(fs[i1]>fsmax) fsmax=fs[i1];
  36. }
  37. printf("xscrmin=%d,\txscrmax=%d,\tfscrmin=%d,\tfscrmax=%d\n",xsmin,xsmax,fsmin,fsmax);
  38. xs0=-xtmin/(xtmax-xtmin)*(scrxmax-scrxmin)+1; // расчет экранного 0 по х
  39. ys0=scrymax+ftmin/(ftmax-ftmin)*(scrymax-scrymin)+1; // расчет экранного 0 по у
  40. printf("xs0=%d,\tys0=%d\n",xs0,ys0);
  41. // initgraph();
  42. // line(scrxmin, ys0, scrxmax, ys0); // рисование осей координат
  43. // line(xs0, scrymin, xs0, scrymax); // рисование осей координат
  44. for(i1=0; i1<n; ++i1) printf("%d, ",xs[i1]); printf("\n");
  45. for(i1=0; i1<n; ++i1) // рисование экранной функции
  46. {
  47. printf("%d, ",fs[i1]);
  48. // line(xs[i1-1], fs[i1-1], xs[i1], fs[i1]);
  49. }
  50. //_getch();
  51. //restorecrtmode ();
  52. return 0;
  53. }
Success #stdin #stdout 0s 10320KB
stdin
Standard input is empty
stdout
xmin=-100.2,	xmax=32.8,	fmin=-41.9317,	fmax=13.1631
xscrmin=1,	xscrmax=640,	fscrmin=1,	fscrmax=480
xs0=482,	ys0=116
1, 34, 68, 101, 135, 169, 202, 236, 270, 303, 337, 370, 404, 438, 471, 505, 539, 572, 606, 640, 
480, 456, 433, 410, 388, 367, 348, 333, 330, 423, 84, 153, 148, 133, 113, 92, 70, 47, 24, 1,