- •3.Написати процедуру метода Гауса по блок-схемі.
- •2.Розкладання періодичної функції в ряд Фур'є (теорія)
- •3.Написати программу методу половинного ділення за блок-схемою:
- •4.Програма множення матриці на вектор.
- •3.Програма табулювання функції із записом результатів у масив і виведення на текстовий екран
- •4.Знаходження визначеного інтеграла методом Сімпсона
- •3.Програма табулювання функції із записом результатів у масив і виведення на текстовий екран.
- •1.Оператори циклів з відомою кількістю повторень. Ітераційні цикли. Процедури дострокового завершення циклу.
- •4.Написати функцію побудови і табулювання ряду Фур’є(за блок схемою)
- •3.Запрограмувати метод крамера
- •4. Інтеграли з заданою точністю.
- •Функції
- •3.Програма розв’язання квадратного рів-ня (консольна)
- •4.Програма Методу половинного ділення
- •3.Програма Методу половинного ділення
- •4 Метод Ньютона (Консольний)
- •1.Масив (Array) – це обмежена, впорядкована сукупність однотипних пронумерованих
- •4.Програма переглядач графічних файлів
- •1.Метод Ньютона для розвязання нелінійних рівнянь.
- •4. Програма розв’язання квадратного рівняння.
- •1.Компонента tChart та приклад.
- •2.Вказівники
- •3. Програма множення матриці на вектор.
- •4.Метод Ньютона(вік)
- •3.Програма трикутник
- •3.Програма знаходження мінімального і максимального елемента матриці!!!!
- •4.«Елементи_управління»
- •3.Метод Ньютона
- •4.Метод Монте Карло
- •1.Алгоритми
- •3.Фурьє Фурьє
- •3.Запрограмувати метод Крамера (Delphi).
- •2.Функції вводу/виводу мови с
- •4.Метод прямокутників(вкладений файл)
- •4.Табулювання функції із виведенням результатів на екран
- •3.Множення матриці на вектор Делфі
- •3.Трикутник
- •4.Функція методу гАуса
- •1 Метод Крамера та його недоліки
- •3 Програма знаходження мінімального максимального елемента матриці
- •4 Метод половинного ділення
3.Запрограмувати метод крамера
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
Type
Matrix = array [1..3,1..3]of real;
Vec = array [1..3]of real;
function det(a:matrix):real;
begin
det:=a[1,1]*a[2,2]*a[3,3]+a[2,1]*a[1,3]*a[3,2]+a[1,2]*a[2,3]*a[3,1]-a[3,1]*a[2,2]*a[1,3]-a[1,1]*a[3,2]*a[2,3]-a[2,1]*a[1,2]*a[3,3];
end;
var dx,dy,dz,x,y,z,k,l1,l2,l3:real;d:matrix;
var a:matrix=((3.2,-1.5,0.5),
(1.6,2.5,-1.0),
(1.0,4.1,-1.5));
var b:vec=(0.90,1.55,2.08);
begin
k:=det(a);
if k=0 then
writeln ('Nemaje roz')
else
begin
d:=a;
d[1,1]:=b[1];
d[2,1]:=b[2];
d[3,1]:=b[3];
dx:=det(d);
d:=a;
d[1,2]:=b[1];
d[2,2]:=b[2];
d[3,2]:=b[3];
dy:=det(d);
d:=a;
d[1,3]:=b[1];
d[2,3]:=b[2];
d[3,3]:=b[3];
dz:=det(d);
x:=dx/k;
y:=dy/k;
z:=dz/k;
writeln('x=',x:3:2);
writeln('y=',y:3:2);
writeln('z=',z:3:2);
//Перевірка
l1:=a[1,1]*x+a[1,2]*y+a[1,3]*z;
l2:=a[2,1]*x+a[2,2]*y+a[2,3]*z;
l3:=a[3,1]*x+a[3,2]*y+a[3,3]*z;
writeln('p1=',l1:3:2);
writeln('p2=',l2:3:2);
writeln('p3=',l3:3:2);
end;
readln;
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);
}
}
//---------------------------------------------------------------------------
Білет6 1.Записи.ОператорWith. Запис являє собою сукупність обмеженого числа логічно зв'язаних компонент, що належать до різних типів. Компоненти запису називаються полями, кожне з яких визначається ім'ям. Поле запису містить ім'я поля, слідом за яким через двокрапку вказується тип цього поля. Поля запису можуть відноситися до будь-якого типу, допустимого в мові Паскаль, за винятком файлового типу.Опис запису в мові Паскаль здійснюється за допомогою службового слова рекорд, слідом за яким описуються компоненти запису. Завершується опис записи службовим словом кінця.Наприклад, телефонний довідник містить прізвища і номери телефонів, тому окремий рядок в такому довіднику зручно представити у вигляді наступного запису:
type TRec = Record
FIO: String[20];
TEL: String[7]
end;
var rec: TRec;
Опис записів можливий і без використання імені типу, наприклад:
var rec: Record
FIO: String[20];
TEL: String[7]
end;
Звернення до запису в цілому допускається тільки в операторах присвоювання, де ліворуч і праворуч від знака присвоювання використовуються імена записів однакового типу. У всіх інших випадках оперують окремими полями записів. Щоб звернутися до окремій компоненті записи, необхідно задати ім'я запису і через крапку вказати ім'я потрібного поля, наприклад:
rec.FIO, rec.TEL
Звернення до компонентів записів можна спростити, якщо скористатися оператором приєднання With.
Оператор приєднання With – зрунчість, забеспечена Delphi для того, щоб посилатися на елементи складної змінної, запису або об’єкта.
Це спрощує код, забираючи необхідність в префіксі для кожного згаданого елемента змінної зі складним іменем.
Наприклад:
myObject.colour:= clRed;
myObject.size:= 23.5;
myObject.name:= 'Fred';
Може бути перезаписаний:
With myObject do
begin
colour:= clRed;
size:= 23.5;
name:= 'Fred';
end;
Однак будьте обережні, так як його використання може зробити код складнішим для сприйняття.
В межах With, Delphi пробує вирішити ці «неповні» посилання, дивлячись спочатку на адресат, який стоїть після With. Далі переглядаються інші типи даних, типи локальних змінних, параметри підпрограм і т.д. Через це, можуть виникнути деякі проблеми з оператором With.
2. Операції над різними типами даних в С++ Арифметичні операції
В мові програмування вирази складаються з операндів (змінних, Констант, викликів функцій) з’єднаних знаком операції і дужками. Знак операції – це символ, або група символів . які повідомляють компілятору про необхідність виконання певних арифметичних операцій (або логічних, чи ін.).
Розглянемо операції порівняння.
Операція == означає дорівнює, != -не дорівнює, <= -менше або дорівнює, >= -більше або дорівнює.
Операції виконуються у суворій послідовності. Фактор, що визначає перважне право на виконання назив. Пріоритетом.
Розрізняють унарні та бінарні операції. У перших з них 1 операнд, а у других 2.
Унарні :
- арифметичні
- логічні операції і операції відношення
- операції з бітами
Приклад: а=а+5 це те саме що й а+=5
Операції інкременту (++) ти декременту (--).
Операції інкременту ти декременту існують у двох формах – префіксній та постфіксній. Якщо символи ++ (--) записані перед змінною, то це інкремент (декремент) у префіксній формі, а якщо після змінної – то в постфіксній. Операція інкременту має такий вигляд:
++<змінна> або <змінна>++
Значення змінної збільшується на одиницю. Команди а++ та ++а –рівносильні команді а=а+1. Форма інкременту (декременту) впливає тільки на порядок виконання операції у виразах. (тобто - чи спочатку збільшується значення а на 1, А потім обчислюється вираз. Чи спочатку обчислюється вираз. А потім змінюється значення змінної а).
Аналогічно операція декременту має такий вигляд :
--<змінна> або <змінна>--
Значення змінної зменшується на одиницю.
Для вказівників:
&- взяття адреси
*- звернення за адресою
Логічні операції
В мові програмування вирази складаються з операндів (змінних, Констант, викликів функцій) з’єднаних знаком операції і дужками. Знак операції – це символ, або група символів . які повідомляють компілятору про необхідність виконання певних арифметичних операцій (або логічних, чи ін.).
Операції виконуються у суворій послідовності. Фактор, що визначає перважне право на виконання назив. Пріоритетом. Логічні операції мають 4 пріорітет.
Розглянемо операції порівняння.
Операція == означає дорівнює, != -не дорівнює, <= -менше або дорівнює, >= -більше або дорівнює, < -менше, > -більше.
Побітові операції
Ці операції можна застосувати до змінних, що мають тип int, char, та їхніх варіантів (long int і т.д.).
Їх не можна застосовувати до змінних типу float, double, void (до складніших типів).
Ці операції задаються наступними чинами : ~,<<,>>,&,^,|
~ - порозрядне заперечення:
Якщо а=0000 1111, то ~а=1111 0000
^ - заперечне лог. АБО: а=0000 1111 і b =1000 1000 , то а^ b =1000 0111
& -порозрядне лог. І: якщо а=0000 1111 і b =1000 1000, то а& b =0000 1000
| - АБО: якщо а=0000 1111, b =1000 1000, то а| b =1000 1111
<< - зсув ліворуч: а=0000 1111, то а<<1=0001 1110
>> - зсув праворуч: якщо а=0000 1111, то а>>1=0000 0111
! – лог. Заперечення
&& - лог. I
|| - лог. АБО
= - присвоєння (х=1, х=а=у=100)
?: - умовна (тернарна) операція
У виразі у=х?а: b
У=а, якщо х не дорівнює (істинно), У= b, якщо х дорівнює (хибно).
Вираз у=х?а: b дозволяє присвоїти змінній у значення більшої змінної (а або b), тобто у=max(a,b)
3.Квадратне_віконка unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button3: TButton;
Edit4: TEdit;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:real;
d,x1,x2:real;
s1,s2:string[6];code:integer;
begin
a:=Strtofloat(Edit1.Text);
b:=Strtofloat(Edit2.Text);
c:=Strtofloat(Edit3.Text);
d:=b*b-4*a*c;
if a=0 then Edit4.Text:='Це не квадратне рівняння!';
if d<0 then Edit4.Text:='Немає коренів';
if d=0 then
begin
x1:=-b/(2*a);
Edit4.Text:=FloatToStrF(x1,fffixed,4,2)
end;
if d>0 then
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
Edit4.Text:='x1='+FloatToStrF(x1,fffixed,4,2)+' x2='+FloatToStrF(x2,fffixed,4,2);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close
end;
end.
