Float Fmodif(float x);
Void graphF(float Xst, float Xen, float Step, int color);
Void main()
{
Clrscr();
Float Xst, Xen, Step;
cout << "Табулирование функции F(x).\n";
cout << "Xstart = "; cin>>Xst;
cout << "Xend = "; cin>>Xen;
cout << "Step = "; cin>>Step;
Tabular_for(Xst, Xen, Step);
Getch();
cout<<"\n Построение графика функции F(x).\n";
cout<<"Xstart ="; cin>>Xst;
cout<<"Xend = "; cin>>Xen;
cout<<"Step = "; cin>>Step;
GraphF(Xst, Xen, Step, 1);
}
// Объявление функций:
Float F(float x)
{ if(x == 0) return 1; else return sin(x)/x; }
Void tabular_for(float Xst, float Xen, float Step)
{for(float x = Xst; x <= Xen; x += Step)
{ cout<<"\n x = " << setw(6)<<setprecision(2)<<x; // манипуляторы;
cout<<" F(x) = "<<setw(6)<<setprecision(3)<<F(x);
}
}
Float Fmodif(float x)
{ if(x!= 0) return sin(x/6)/(x/6); else return 1; }
Void graphF(float Xst, float Xen, float Step, int color)
{int gd=DETECT, gm, err;
// инициализации модуля graph:
initgraph(&gd, &gm, "d:\\bc5\\bgi");
// проверка результата инициализации:
err = graphresult();
if (err!= grOk) // ошибка инициализации!
{cout<<"\n Ошибка графики: "<< grapherrormsg(err); // характер ошибки;
cout<<"Нажмите любую клавишу для завершения:";
Getch();
exit(1); // завершение программы с кодом ошибки 1;
}
setbkcolor(15); // цвет фона;
setcolor(color); // цвет линий;
// координаты середины графического экрана:
int cX= (int) getmaxx()/2, cY= (int) getmaxy()/2;
Float x, y;
line(0, cY, 2*cX, cY); // ось координат OX;
line(cX, 0, cX, 2*cY); // ось координат OY;
// строим график функции:
for(x = Xst; x <= Xen; x += Step)
{ y = Fmodif(x); putpixel((int) x + cX, (int) -40*y + cY, color); }
Getch();
}
Примечание. Все сведения по графическим функциям языка C++ можно найти в Help -файле (\HELP\bcdos.hlp – Borland Graphic Interface (BGI)).
· Запуск проекта: Ctrl + F9, либо кнопкой Run.
· Компиляция проекта: Alt + F9, либо кнопкой Compile this file.
Результат работы проекта:
табулирование функции F(x) на отрезке [-1; 1] с шагом 0,4:
построение графика функции F(x) на отрезке [-100; 100] с шагом 0,01:
Варианты заданий к лабораторной работе №1
В каждом варианте требуется, используя указанный оператор цикла, табулировать заданную функцию F на отрезке [Хst; Хen] с шагом Step и построить её график; действительные числа Хst, Хen и Step вводятся интерактивно.
Вариант 1. Оператор цикла с параметром,
Вариант 2. Оператор цикла с предусловием,
Вариант 3. Оператор цикла с постусловием,
Вариант 4. Оператор цикла с параметром,
Вариант 5. Оператор цикла с предусловием,
Вариант 6. Оператор цикла с постусловием,
Вариант 7. Оператор цикла с параметром,
Вариант 8. Оператор цикла с предусловием,
Вариант 9. Оператор цикла с постусловием,
Вариант 10. Оператор цикла с параметром,
Вариант 11. Оператор цикла с предусловием,
Вариант 12. Оператор цикла с постусловием,
Вариант 13. Оператор цикла с параметром,
Вариант 14. Оператор цикла с предусловием,
Вариант 15. Оператор цикла с постусловием,
[1] Идентификатор – последовательность латинских букв, цифр и знака"_", начинающаяся с буквы или знака "_".
[2] Функция есть один из двух видов вспомогательных алгоритмов.
[3] В полуквадратных скобках находятся необязательные части структур языка.
[4] “ переменная ← выражение ” означает запись в область памяти, поименованную идентификатором, значения выражения.
[5] Локальная переменная доступна (существует, видна) только внутри блока, в котором она объявлена, поэтому ошибочен следующий оператор: if(x < 0) {int r = 2;} else ++r; в котором после else делается попытка инкремента уже несуществующей (!) переменной r.
[6] cin от C Input.
[7] cout от C Output.
[8] Табулировать – составить таблицу значений функции.