Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_KhIO_I_semestr_-_shpori.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.07 Mб
Скачать

3.Програма трикутник

program Project3;

{$APPTYPE CONSOLE}

uses

SysUtils;

var a,k,p,s,x1,y1,x2,y2,x3,y3,x4,y4,l21,l32,l31,l41,l42,l43,p1,p2,p3,s1,s2,s3,s4:real;

begin

x1:=1;

y1:=1;

x2:=5;

y2:=7;

x3:=9;

y3:=1;

writeln('vvestu koordunatu chetvertoi tochku');

write('x= ');

read(x4);

write('y= ');

read(y4);

l21:=sqrt(sqr(x2-x1)+sqr(y2-y1)) ;

l32:=sqrt(sqr(x3-x2)+sqr(y3-y2)) ;

l31:=sqrt(sqr(x3-x1)+sqr(y3-y1)) ;

p:=(l21+l32+l31)/2;

s:=sqrt(p*(p-l21)*(p-l32)*(p-l31));

per:=((l21+l32+l31)/2)*2;

writeln(‘S=”,s);

writeln(‘P=”,per);

readln(a)

end.

фур’є

4.Фурьє

float T = 0.001;

float w = 2.0 * 3.14 / T;

float kg = 7;

//int n = 200;

float a[100], b[100];

float t;

int i,k;

float x[201], y[201];

float f(float t)

{

if ((t>=0)&&(t<=0.6*T))

{ float f=8;

return f;

}

if ((t>=0.6*T)&&(t<=T))

{ float f=(-8*(t-0.6*T))/(0.4*T)+8;

return f;

}

}

float F(float t)

{

float sum = 0.0;

for (int k = 1; k <= kg; k++) {

sum += a[k] * cos((float)k * w * t) + b[k] * sin((float)k * w * t);

}

return sum += a[0] / 2.0;

}

void __fastcall TForm1::Button1Click(TObject *Sender)

{

hell.n=200;

hell.h = T / hell.n;

for (i=1; i <= hell.n; i++)

{

x[i]= (float)(i-1) * hell.h;

y[i]= f((float)(i-1) * hell.h);

}

for (i=1; i<=hell.n; i++)

{

Memo1->Lines->Add(x[i]);

Memo2->Lines->Add(y[i]);

}

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{ hell.n=200;

Image1->Canvas->MoveTo(x[0]*100000,y[0]*10-200);

for (i=1; i <= hell.n; i++)

{

Image1->Canvas->LineTo(x[i]*100000,-y[i]*10+200);

}

Image1->Canvas->MoveTo(0,0);

Image1->Canvas->LineTo(0,400);

Image1->Canvas->MoveTo(0,200);

Image1->Canvas->LineTo(500,200);

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)

{ hell.n=200;

float sum = 0.0;

for (i = 1; i <= hell.n; i++) {

sum += y[i];

}

a[0] = sum * 2.0 * hell.h / T;

Edit1->Text=a[0];

b[0] = 0.0;

for (k = 1; k <= kg; k++) {

a[k] = 0.0;

for (i = 1; i <= hell.n; i++) {

a[k] += y[i] * cos((float)k * x[i] * w);

}

a[k] = a[k] * 2.0 * hell.h / T;

b[k] = 0.0;

for (i = 1; i <= hell.n; i++) {

b[k] += y[i] * sin((float)k * x[i] * w);

}

b[k] *= 2.0 * hell.h / T;

}

Image1->Canvas->Pen->Color=clRed;

Image1->Canvas->MoveTo(x[0]*100000,-F(x[0])*10+200);

for (i=1; i <= hell.n; i++)

{

Image1->Canvas->LineTo(x[i]*100000,-F(x[i])*10+200);

}

}

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

Білет13 Алгоритм обчислення оберненої матриці з використання методу гауса

Обирається перша зліва колонка, що містить хоч одне ненульове значення.

Якщо верхнє число у цій колонці - нуль, то обмінюється увесь перший рядок матриці з іншим рядком матриці, де у цій колонці нема нуля.

1.Усі елементи першого рядка діляться на верхній елемент обраної колонки.

2.Від рядків, що залишились, віднімається перший рядок, помножений на перший елемент відповідного рядка, з метою отримання у якості першого елемента кожного рядка (крім першого) нуля.

3.Далі, повторюємо ці операції із матрицею, отриманою з початкової матриці після викреслювання першого рядка та першого стовпчика.

4.Після повторення операцій n-1 разів отримаємо верхню трикутну матрицю.

5.Віднімаємо від передостаннього рядка останній рядок, помножений на відповідний коефіцієнт, щоб у передостанньому рядку залишилась лише 1 на головній діагоналі.

6.Повторюємо попередній крок для наступних рядків. У результаті отримуємо одиничну матрицю і рішення на місці вільного вектора (над ним необхідно виконувати ті самі перетворення).

2.Оголошення і опис функцій с++ , іх відміності від опису функцій делфі.

У Делфі ми вивчали підпрограми- окремі алгоритмічно завершені фрагменти програми , які оформленін спеціальним чином і кожна з них має своє унікальне ім’я.

Ми зазначали, що в Делфі є 2 категорії підпрограм:

  1. Процедури

  2. Функції

Вони відрізняються формами опису і способами передачі їм управління, тобто способом їхнього виклику на виконання.

В С++ кожна програма набір окремих функцій, які відносяться до однієї з двох категорій:

  1. Функції, які не мають результуючого значення. Їх називають функціями типу void.

  2. Функції, які таке значення мають. Ця категорія повинна мати в своєму описі тип значення, яке ця функція повертає.

Обидві категорії крім цього використовують вихідні параметри, які можуть повертати в точку їхнього виклику одне чи декілька значень, які формуються під час виконання операторів тіла функції.

Можна стверджувати, що функції типу void є аналогами процедур мови Паскаль. Оскільки їх виклик подібний до виклику процедур.

Мова С++ дозволяє мати декілька функцій з одним і тим же іменем, тому що функції розрізняються не тільки за іменами, але й за типами аргументів.

На відмінну від Делфі в С++ не можна всередині однієї функції описувати ще одну функцію.

До функції звертаються з розділу команд основної функції або з іншої функції.

Виклик можна виконувати або командою виклику, або з виразів.

Приклад для с++:

заголовок функції

float perimetr (int k=4, float r=2.5)

До цієї функції можна звернутися одним із способів:

perimetr (7, 2.8); k=7, r=2.8

perimetr (8); k=8, r=2.5

perimetr (); k=4, r=2.5

Але у списку фактичних параметрів не можна пропускати змінні з середини списку, тобто не можна викликати функцію так : perimetr (1.65);, оскільки тут пропущено ініціалізацію першої змінної .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]