КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Крок 1. Підключити модулі з керуючими структурами і функціями інтегрування#include <conio.h> #include <stdio.h> #include <iostream.h> #include "integral.cpp" #include "E:/modul/graph.cpp" #include "E:/modul/mouse.cpp" #include "E:/modul/abstr.cpp" #include "E:/modul/baseinp.cpp" #include "E:/modul/check.cpp" #include "E:/modul/button.cpp" #include "E:/modul/numedit.cpp" #include "E:/modul/label.cpp" #include "E:/modul/edit.cpp" void main(){ clrscr(); Крок 2. Ініціалізувати графику і зафарбувати фон кольором №8 graphinit(8); Крок 3.Ініціалізувати мишку InitMouse(); Крок 4. Висвітити покажчик мишки ShowMouse(); Крок 5. Оголосити об'єкти для відображення функції, яку інтегруємо //Мітка для відображення виду функції ClLabel funk(230,57,"Інтеграл функції f(x)=",15); //Поле для введення самої функції ClEdit FuncOfText(230,50,150,20,"x"); Крок 6. Оголосити об'єкти для введення меж інтегрування //Поле введення початку проміжку інтегрування ClLabel from(230,100,"Межі інтегрування: від ",11); ClNumEdit a(230,100,70,20,0); //Поле введення кінця проміжку інтегрування ClLabel to(330,100,"до ",11); ClNumEdit b(330,100,70,20,5); Крок 7. Оголосити об'єкти для введення кількості кроків інтегрування //Поле введення кількості кроків інтегрування ClLabel shagi(270,150,"Кількість кроків інтегрування ",11); ClNumEdit sh(280,150,100,25,100); Крок 8. Оголосити об'єкти для виводу результатів інтегрування //Поля виводу результатів ClLabel rez(380,216,"Результат інтегрування: ",14); ClLabel oldInt(500,220,"Попередні обчислення: ",10,1,1); ClLabel sredn(400,10,"Середнє значення по всіх методах ",10); ClNumEdit Sredn(400,10,200,25,0); Крок 8.1. Оголосити об'єкти для виводу результатів методом Ньютона-Котеса ClLabel kotesa(170,300,"Метод Ньютона-Котеса ",10); ClNumEdit Kotesa(170,290,200,25,0); ClNumEdit oldKotesa(400,290,200,25,0); ClCheck sKotesa(380,295,0); Крок 8.2. Оголосити об'єкти для виводу результатів методом прямокутників ClLabel pryam(176,330,"Метод прямокутників ",10); ClNumEdit Pryam(170,320,200,25,0); ClNumEdit oldPryam(400,320,200,25,0); ClCheck sPryam(380,325,0); Крок 8.3. Оголосити об'єкти для виводу результатів методом трапецій ClLabel trap(176,360,"Метод трапецій ",10); ClNumEdit Trap(170,350,200,25,0); ClNumEdit oldTrap(400,350,200,25,0); ClCheck sTrap(380,355,0); Крок 8.4. Оголосити об'єкти для виводу результатів методом Сімпсона ClLabel parabol(176,390,"Метод парабол ",10); ClNumEdit Parabol(170,380,200,25,0); ClNumEdit oldParabol(400,380,200,25,0); ClCheck sParabol(380,385,0); Крок 9. Оголосити кнопку для визначення моменту необхідності обчислення інтеграла //Кнопки для визначення інтеграла різними методами ClButton start(400,150,100,25,"Порахувати"); Крок 10. Оголосити кнопку для виходу з програми ClButton exit(10,10,50,20,"<--"); Крок 11. Визначити нескінченний цикл для забезпечення постійного запросу до всіх керуючих об'єктів програми for(;;){ if (exit.zapros()) break; Крок 11.2. Якщо натиснута кнопка «Порахувати інтеграл», то обчислити інтеграл всіма методами і записати результати у відповідні поля виводу значень if (start.zapros()){ } Крок 11.2. Якщо скинутий прапорець напроти поля виводу значення інтегралу методом Ньютона-Котеса, то зберегти попереднє значення інтегралу й обчислити його нове значення по цьому методу if (sKotesa. GetState()==0){ oldKotesa.SetNum(Kotesa.Num); Kotesa.SetNum(metod_Nyutona_Kotesa(FuncOfText.text, } Крок 11.3. Якщо скинутий прапорець напроти поля виводу значення інтеграла методом прямокутників, то зберегти попереднє значення інтегралу й обчислити його нове значення цим методом. if (sPryam.GetState()==0){ oldPryam.SetNum(Pryam.Num); Pryam.SetNum(metod_Pryam (FuncOfText.text, a.Num, b.Num, sh.Num)); } Крок 11.4. Якщо скинутий прапорець напроти поля виводу значення інтеграла за методом трапецій, то зберегти попереднє значення інтеграла й обчислити його нове значення цим методом. if (sTrap.GetState()==0){ oldTrap.SetNum(Trap.Num); Trap.SetNum (metod_Trap(FuncOfText.text, a.Num, b.Num, sh.Num)); } Крок 11.5. Якщо скинутий прапорець навпроти поля виводу значення інтеграла за методом парабол, то зберегти попереднє значення інтеграла й обчислити його нове значення цим методом. if (sParabol.GetState()==0){ oldParabol.SetNum(Parabol.Num); Parabol.SetNum(metod_Parabol(FuncOfText.text, a.Num, b.Num, sh.Num)); Крок 11.6. Обчислити усереднене значення інтеграла //Обчислення усередненого значення Sredn.SetNum((Parabol.Num + Trap.Num + Uedlya.Num + Bode.Num + Kotesa.Num + Chebisheva.Num + Gaussa.Num)/7); }; Крок 11.7. Зробити запит на зміну стану об’єктів уведення границь інтегрування і кількості кроків. a.zapros(); b.zapros(); sh.zapros(); Крок 11.8. Зробити запит на зміни стану прапорців допустимості обчислення інтеграла. sBode.zapros(); sUedlya.zapros(); sKotesa.zapros(); sPryam.zapros(); sTrap.zapros(); sParabol.zapros(); sKotesa.zapros(); } Крок 11.9. Якщо натиснута клавіша Esc вийти з програми. if (kbhit()) if (getch()==27) break; } Крок 12. Закрити графічний режим. closegraph(); Крок 13. Кінець. }
|