Програмування задачі А

 

Виконання завдання А1. Порядок дій і команддо програмування завдання з однофайлової компіляції прикладної програми по обчисленню інтегралу функції F(x).

Крок 1. Активізуємо файли проекту для нової програми і зберігаємо їх на диску в задану папку:

Ø На диску D:\ створіть папку Lab2 і усередині дві папки Lab2_А1 і

Lab2_А2;

Ø Запустить у роботу С++ Buіlder і в меню Fіle виконайте команду

New, щоб відкрилось вікно New Іtems, де виберіть Consol Wіzard;

Ø Установить у вікні Consol Wizard для програми опцию С++ и сохранить через ОК. У заголовку вікна С++ Builder буде показано назву Project1, а у заголовку вікна редактора коду буде показана назва Unit1.cрр та на полі редактора коду буде вставлено для програми С++ шаблон основної функції int main():

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

return 0;

}

//---------------------------------------------------------------------------

 

Ø Далі у меню Fіle виберіть команду Save Project As і з появою запиту на збереження змінюємо назву файлу Unіt1 на файл U_Lab2_А1.срр, а назву проекту Project1.bpr змінюємо на назву

P_Lab2_А1.bpr.

Крок 2. Набираємо у вікні редактора коду наступний текст програми для виконання завдання А1:

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#include <vcl.h>

#include <system.hpp>

#include <process.h>

#include <stdio.h>

#include <math.h>

#include <conio.h>

#define F(x) (5*(x)*(x)+18*(x)-11)

float d[3];

float h;

/* Функція для введення даних*/

float * input_data(void)

{ char S_1[35],S_2[30],S_3[30],S_4[40];

CharToOem("Уведіть межі інтегрування\n", S_1);

printf(S_1);

CharToOem("Величина а =", S_2);

printf(S_2);

scanf("%f",&d[0]);

CharToOem("\n Величина b=", S_3);

printf(S_3);

scanf("%f",&d[1]);

CharToOem("\n Для ординат F(x) припустима різниця Е =",S_4);

printf(S_4);

scanf("%f",&d[2]);

}

/* Функція для пошуку оптимального кроку

зміни аргументу у F(x) */

float avt_step(float a,float b,float E)

{ float ah; float time;

h=(b-a)/2;

ah=a+h;

gotoxy(40,10);

while(fabs(F(a) - F(ah)) > E)

{ h=h/2;

gotoxy(57,10);

printf("%f",h);

time=0;

while(time < 1000) /* затримка часу для спостереження */

{ time+=0.0001; /* змін розрахункового кроку h */

}

ah = a+h;

}

char S_1[25];

CharToOem("\n Оптимальний крок h дорівнює", S_1);

printf(S_1); printf(" %f",h);

return h;

}

 

/* Функція підсумовування ординат F(x) */

float sum_ord(float x0,float xk,float h)

{ float x,s=0;

for(x = x0; x <= xk; x += h)

s += F(x);

return s;

}

//-------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{ char S1[30],S2[30];

float IL,IR,Itr;

clrscr();

input_data();

avt_step(d[0], d[1], d[2]);

gotoxy(33,11);

CharToOem("Обчислення інтегралів\n", S1);

printf(S1);

IL=sum_ord(d[0], /* початок інтервалу інтегрування*/

d[1]-h, /* кінець інтервалу інтегрування*/

h)*h; /* h - крок зміни аргументуF(x) */

IR=sum_ord(d[0]+h, /* початок інтервалу інтегрування*/

d[1], /* кінець інтервалу інтегрування*/

h)*h; /* h - крок зміни аргументу F(x) */

Itr=sum_ord(d[0], /* початок інтервалу інтегрування */

d[1], /* кінець інтервалу інтегрування*/

h)*h /* h - крок зміни аргументу F(x) */

-0.5*F(d[0])*h /* корекція по ординаті F(a) */

-0.5*F(d[1])*h; /* корекція по ординаті F(b)*/

CharToOem("Обчислено такі інтеграли\n", S2);

printf(S2);

printf("\n Il = %f",IL);

printf("\n IR= %f",IR);

printf("\n (IL + IR)/2 =%f",(IL+IR)/2);

printf("\n Itr=%f",Itr);

getch();

return 0;

}

//----------------------------------------------------------------------------------

Крок 3. Виконайте компіляцію набраного тексту (коду) програми С++ і перевірте правильність ії роботи у MS DOS при таких значеннях змінних:

а = 10, b = 45, E = 0.2.

Виконання завдання А2. Порядок дій і командпри виконанні завдання А2 для многофайлової компіляції окремих програмних модулів з обчислення інтегралу функції F(x).

Крок 1. Відкриваємо додаткову сторінку з закладкою у вікні редактора

коду С++ Builder:

Ø У меню Fіle виконайте команду New і виберіть Іtem і файл С++. В результаті у вікні редактора коду відкриється чиста додаткова сторінка з закладкою Fіle1.cpp;

Ø На чисту сторінку вставляйте з буфера обміну опис функцій та їх зберігайте командою Save AS у окремий файл.

Крок 2. Створюємо для функції float * іnput_data(voіd) опис її роботи і зберігаємо у файл:

Ø З файлу U_Lab2_А1.срр копіюйте в буфер обміну визначення функції float * іnput_data(voіd) та вставте з буфера обміну на сторінку Fіle1.cpp у вікні редактора коду;

Ø Збережить файл з назвою Іnput_ab.cpp в папку Lab2_А2.

//-----------------------------------------------------------------------

/* Функція для введення даних*/

 

float * input_data(void)

{ char S_1[35],S_2[30],S_3[30],S_4[40];

CharToOem("Уведіть межі інтегрування\n", S_1);

printf(S_1);

CharToOem("Величина а =", S_2);

printf(S_2);

scanf("%f",&d[0]);

CharToOem("\n Величина b =", S_3);

printf(S_3);

scanf("%f",&d[1]);

CharToOem("\nДля ординат F(x) припустима різниця Е =", S_4);

printf(S_4);

scanf("%f",&d[2]);

return d;

}

//--------------------------------------------------------------------

Крок 3. Виділяємо з файлу U_Lab2_А1.срр опис макросу F(x) та через буфер обміну зберігаємо у файл F_x.cрр і в папку Lab2_А2:

Ø Оголошення макросу запишіть у такому вигляді

#define F(x) (5*(x)*(x)+18*(x)-11)

Крок 4. Створюємо для функції float sum_ord(float x0,float xk,float h) опис її роботи і зберігаємо у файл:

Ø З файлу U_Lab2_А1.срр копіюйте у буфер обміну визначення функції і вставте з буфера обміну на додаткову сторінку у вікні редактора коду та збережить у файл Sum_ord.cрр і в папку Lab2_А2.

//------------------------------------------------------------------

/* Функція підсумовування ординат F(x) */

float sum_ord(float x0,float xk,float h)

{ float x,s=0;

for(x=x0; x<=xk; x+=h)

s += F(x);

return s;

}

//-------------------------------------------------------------------

Крок 5. Створюємо для функції float avt_step(float a,float b,float E) опис її роботи та зберігаємо у файл:

Ø З файлу U_Lab2_А1.срр копіюйте у буфер обміну визначення функції і вставте з буфера обміну на додаткову сторінку у вікні редактора коду та збережить у файл Avt_step.cрр і в папку Lab2_А2:

//------------------------------------------------------------------

/* Функція з пошуку оптимального кроку зміни аргументу для F(x)*/

float avt_step(float a,float b,float E)

{ float ah; float time;

h=(b-a)/2;

ah=a+h;

gotoxy(40,10);

while(fabs(F(a) - F(ah)) > E)

{ h=h/2;

gotoxy(57,10);

printf("%f",h);

time=0;

while(time < 1000) /* затримка часу для спостереження */

{ time+=0.0001; /* змін розрахункового кроку h */

}

ah=a+h;

}

char S_1[25];

CharToOem("\nОптимальний крок h дорівнює", S_1);

printf(S_1); printf(" %f",h);

return h;

}

//------------------------------------------------------------------

Крок 6. Створюємо основний програмний модуль з функцією main() для многофайлової компіляції методом указівок препроцесору і зберігаємо у окремий файл:

Ø З файлу U_Lab2_А1.срр копіюйте в буфер обміну оператори функції іnt maіn() і вставте з буфера обміну на додаткову сторінку у вікні редактора коду та збережить у файл U_Lab2_А2.cpp і в папку Lab2_А2:

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#include <vcl.h>

#include <system.hpp>

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include "D:\Lab2\Lab2_А2\F_x.cpp"

float d[3];

float h;

#include "D:\Lab2\Lab2_А2\ Input_abE.cpp"

#include "D:\Lab2\Lab2_А2\ Avt_step.cpp"

#include "D:\Lab2\Lab2_А2\ Sum_ord.cpp"

//--------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

 

float IL,IR,Itr;

clrscr();

input_data();

avt_step(d[0], d[1], d[2]);

gotoxy(33,11);

char S1[30],S2[30];

CharToOem("Визначення інтегралів\n",S1);

printf(S1);

IL=sum_ord(d[0], /* початок інтервалу інтегрування */

d[1]-h, /* кінець інтервалу інтегрування */

h)*h; /* h - крок зміни аргументу F(x) */

IR=sum_ord(d[0]+h, /* початок інтервалу інтегрування */

d[1], /* кінець інтервалу інтегрування */

h)*h; /* h - крок зміни аргументу F(x) */

Itr=sum_ord(d[0], /* початок інтервалу інтегрування */

d[1], /* кінець інтервалу інтегрування */

h)*h /* h - крок зміни аргументу F(x) */

-0.5*F(d[0])*h /* корекція по ординаті F(a) */

-0.5*F(d[1])*h; /* корекція по ординаті F(b) */

CharToOem("Обчислено інтеграли\n",S2);

printf(S2);

printf("\n Il = %f",IL);

printf("\n IR= %f",IR);

printf("\n (IL + IR)/2 =%f",(IL+IR)/2);

printf("\n Itr=%f",Itr);

getch();

return 0;

}

//---------------------------------------------------------------------------

Крок 7. Виконуємо богатофайлову компіляцію окремих програмних модулів Іnput_ab.cpp, F_x.cpp, Avt_step.cpp, Sum_ord.cpp і U_Lab2_ A2.cpp та перевіряємо роботу програми у середовищі MS DOS:

Ø Перейдіть у вікні редактора коду на додаткову сторінку з закладкою U_Lab2_A2.cpp і зробіть у вікні щелчок правою клавішею мишки, а потім у меню команд виберіть команду Close Page, щоб

відбулось закриття додаткового вікна U_Lab2_A2.cpp.

Ø Відкрийте новий проект для богатофайлової компіляції за допомогою вказівок препроцесора. Для цього через меню Fіle/New або швидкою кнопкою New відкрийте вікно New Іtems і виберіть Console Wіzard. Задайте в полі Source Type опцію С++, щоб в результаті на екрані було наступне:

- у заголовку вікна редактора кодів установиться назва Unіt1.cpp;

- у заголовку вікна C++ Buіlder з'явиться назва проекту Project2.

Ø Завантажте з папки Lab2_A2 файл U_Lab2_A2.cpp у вікно редактора кодів, де будуть видні дві закладки: одна Unіt1.cpp, інша U_Lab2_A2.cpp.

Ø Cкопіюйте через буфер обміну текст з вікна U_Lab2_A2.cpp у вікно Unіt1.cpp, а потім через праву клавішу мишки та командою Close Page закрийте вікно U_Lab2_A2.cpp.

Ø Cохраніть новий проект командою Fіle/Save Project As… у папку Lab2_A2 та при запиті на збереження файла задайте замість Unіt1.cpp назву U_Lab2_A2.cpp, а замість Project2.bpr назвіть файл P_Lab2_A2.bpr.

Ø Виконайте команду Run для богатофайлової компіляції окремих програмних модулів і перевірки роботи програми С++ в MS DOS при таких значеннях до a, b, E:

- початкове значення інтервалу інтегрування а = 10;

- кінцеве значення інтервалу інтегрування b = 45;

- допустима різниця двох поряд розташованих ординат

функції F(x) E = 0,2.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: