Я пыталась достичь нужного результата, меняя значения x0 (начало координат) и w (ширина области графика) в зависимости от x1 и x2, но ничего все-равно не выходит! Может ,по-другому как-то это сделать?
(l и b это левый нижний угол области графика, а h это высота области графика, mx и my - масштаб по осям X и Y).
void grafik(float x1, float x2)
{
float y1,y2;
float x,y;
float dx=0.0001;
int l;
int b;
int w,h;
float mx,my;
int x0,y0;
if ((x1<x2) & (x1>=0))
{x0=0; l=50; b=480; w=700; h=478;}
else if ((x1<x2) & (x1<0))
{x0=100; l=50; b=480; w=1800; h=478;}
y1 = f1(x1);
y2 = f1(x2);
x = x1+dx;
do {
y=f1(x);
if (y<y1) y1=y;
if (y>y2) y2=y;
x+=dx;
} while (x<=x2);
my = h/fabs(y2-y1);
mx = w/fabs(x2-x1);
y0=b-abs(y1*my);
x=x1;
do {y=f1(x);
putpixel(x0+x*mx,y0-y*my,15);
x+=dx;
} while (x<=x2);
}