Начал делать версию по интереснее и сразу напоролся, почему после инициализации, переменные "забывают" свои значения ? Вследствие чего координатные оси выводятся не по центру а из точки (0, 0). Я Сделал для проверки вывод текущих состояний точек X2, Y2, которые должны хранить кординаты центра экрана и как выяснилось они обнуляются после инициализации, почему ?
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
class Shedule{
public :
Shedule();
void Decart();
void Show();
int GetX(double x);
int GetY(double y);
int (*Function) (float x);
private :
int X2, Y2, delta, d;
double a, b, step;
};
Shedule :: Shedule(){
X2 = getmaxx() / 2;
Y2 = getmaxy() / 2;
delta = 200;
d = delta / 10;
step = 0.1;
cout << X2 << " " << Y2 << endl; // TEST <-------------------- тут как видно все ок
};
int Shedule :: GetX(double x){
return X2 + int(x);
};
int Shedule :: GetY(double y){
return Y2 - int(y);
};
void Shedule :: Decart(){
cout << X2 << " " << Y2; // TEST <---------------------------- а тут уже нули
line(X2 - delta, Y2, X2 + delta, Y2);
line(X2, Y2 - delta, X2, Y2 + delta);
/*
int i = X2 - delta;
while (i <= X2 + delta){
if ((i > X2) && (i < X2 + delta)){
char *s;
itoa((i - X2) / d, s, 10);
outtextxy(i - 3, Y2 + 5, s);
}
circle(i, Y2, 1);
i += d;
};
i = Y2 - delta;
while (i <= Y2 + delta){
if ((i > Y2) && (i < Y2 + delta)){
char *s;
itoa((i - Y2)/ d, s, 10);
outtextxy(X2 - 10, i - 3, s);
}
circle(X2, i, 1);
i += d;
};
*/
};
int OpenGraph(char *s){
int gd = DETECT, gm;
initgraph(&gd, &gm, s);
return graphresult();
}
int CloseGraph(){
closegraph();
return graphresult();
}
Shedule SH;
int main (void){
OpenGraph("c:\\tc\\tc\\bgi");
Shedule();
SH.Decart();
getche();
CloseGraph();
return 0;
}