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

3 Програма знаходження мінімального максимального елемента матриці

4 Метод половинного ділення

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

#include <stdio.h>

#pragma hdrstop

#include <tchar.h>

#include <math.h>

#include <conio.h>

#include <iostream>

#include <clocale>

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

#pragma argsused

using namespace std;

float f(double x)

{double c=3*sin(sqrt(x))+0.35*x-3.8;return (c);}

int main ()

{ double a,b,eps,n,x;

cout <<"vvedit a,b,eps";

cin >>a>>b>>eps;

n=(a+b)/2.0;

while ((b-a)>eps)

{if (f(a)*f(n)<0)

{b=n;}

else

{a=n;}

n=(a+b)/2.0;}

x=(a+b)/2.0;

cout<<"x="<<x<<endl;

system ("PAUSE");

return 0;}

Білет27 1. Описати основні властивості та події візуальних Delphi Форма (Form) є основним елементом управління при розробці проекту в Delphi. Саме на формі розміщують потрібні компоненти, задають для них потрібні властивості тощо. Увесь внутрішній простір є робочою ділянкою, яка може бути покрита крапчастою сіткою для вирівнювання компонентів. Вікно форми Form є початком розробки проекту і є заготовкою (макетом) вікна проекту, який розробляється.

Розробка проекту розпочинається з форми! Форма є контейнером, і може містити інші компоненти.

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

Компоненти Delphi- це вже готові елементи інтерфейсу, які ви зможете використовувати у своїх програмах.

Інспектор об’єктів (Object Inspector). За допомогою інспектора об’єктів можна задавати початкові значення властивостей об’єкта та їхню реакцію на стандартні події. Вікно інспектора об’єктів містить список компонентів поточної форми, а також дві закладки: властивостей (Properties) та подій (Events).

Кожна закладка складається з двох стовпців: лівий містить назви властивостей або подій, а правий – їхні значення або назву процедури-реакції на подію. Активізувати вікно інспектора об’єктів можна за допомогою клавіші F11 або мишкою.

У вікні дерево об’єктів відображено всі об’єкти, які поставлені на поточну форму. Тобто у цьому вікні відображено назву форми (Form1), а також візуальні об’єкти, що встановлені на форму.

Вікно Редактор коду (Code Editor) призначене для написання коду програми на Object Pascal, який реалізує процедуру опрацювання певної події. Під час відкривання нового проекту в модуль Unit1.pas, який відповідає формі Form1, редактор автоматично заносить програмний код опису цієї форми. Під час додавання нових компонентів у вікно форми у програму автоматично заносяться коди з описами параметрів цих компонентів (висота, ширина, розташування, стиль тощо).

2. Оператори циклу С++ та відмінності з делфі. Цикл-багаторазове виконання одного оператора або набору операторів.

щоб запрограмувати цикл,необхідно передбачити:

-зміну-параметр,що містить поточне значення яке зростає або спадаєза кожним витком циклу

-діапазон зміни значень пареметра

-механізм і крок зміни цих значень

-механізм контролю моменту виходу значення параметра за межі заданого діапазону з метою завершення роботи циклу

Типи циклів

-з відомою к-тю повторень

-ітераційні цикли

Кожен оператор циклу має заголовок і тіло циклу

1)for – цикл з відомою кількістю повторень

For(<ініціалізація>;<вираз-умова>;<модифікування>)

{тіло циклу;}

<ініціалізація> виконується один раз перед початком виконання циклу

<вираз-умова> перевіряється перед кожним витком циклу

<модифікування> відбувається після кожного виконання тіла циклу.

Кожна з цих частин може бути порожньою

for(i=1;i<=N;i++){}

for(;i<=n;i++){}

for(;;i++){}

for(;;;){}

Цикл for у С++ може мати декілька параметрів

int I,j

For(i=1;j=n=i<=n,j>0:i=1,j--){}

Параметри циклу можна змінювати з кроком відмінним від одиниці

for(i=1;i<=N;i+=2){}

Параметром циклу може бути дійсне число

float i

for(i=1.2;i<=N;i+=0.2){}

2)Ітераційний цикл з післяумовою

do

{<тіло циклу>;}

while(<вираз умова>);

Виконується тіло циклу,а потім перевіряється значення умови.Якщо воно дорівнює true,то тіло циклу виконується ще раз.

Це аналог repeat…until,з двома відмінностями,в делфі тіло циклу не обрамлюється begin I end і завершення роботи циклу відбувається по true,а не по falseё

3)Ітераційний цикл з передумовою

while(<вираз-умова>)

{тіло циклу;}

Робота циклу починається з обчислення значення виразу-умови.Якщо воно дорівнює true,то виконання тіла циклу продовжується.Якщо ж ні то виконання або не розпочинається взагалі,або завершується. Порівняйте синтаксис опису циклів у С++ і в Delphi

В делфі:

while умова do

begin

оператор_1;

оператор_2;

…

оператор_n;

end;

Відмінностей з С++ не має, окрім самого синтаксису ( див. 1,3 пункт в відмінностях IF ) repeat

оператор_1;

оператор_2;

.............

оператор_N;

until вираз; Аналог do...while в С++ Основною відмінністю є те, що в repeat…unitl якщо умова хибна, то оператори тіла циклу повторюються знову, а в do…while повторення відбувається поки умова правдива.

for i:= i to n do оператор; або

for i:= i downto n do оператор;

Різниця в синтаксисі. В С++ замість to ( downto ) використовується i++ ( i-- ) відповідно.

3.Ньютон_Консоль program newton;

{$APPTYPE CONSOLE}

uses

SysUtils;

label 1;

function f(x:real):real;

begin;

f:=3*x-4*ln(x)-5;

end;

function fp(x:real):real;

begin;

fp:=3-4*(1/x);

end;

function f2p(x:real):real;

begin;

f2p:=4/sqr(x);

end;

var x,eps,dx:real;

var a,b,i,Kmax:integer;

begin;

a:=2;

b:=4;

Kmax:=12;

x:=b;

if f(x)*f2p(x)>0 then

Goto 1

else

x:=a ;

if f(x)*f2p(x)>0 then goto 1

else writeln('dlya zadanogo rivnznnz metod Nyutona ne vukonyetsya');

1: for i:=0 to Kmax

do

begin

Dx:=f(x)/fp(x);

repeat

x:=x-Dx;

until

Abs(Dx)>eps ;

end;

writeln('x=',x:3:4);

readln;

end.

4.Пояснити оператори заданої програми зі зв’язаними списками ( прога хвищуна з коментами, може дасть іншу…) #include <vcl.h>

#pragma hdrstop

#include <stdio.h>

#include <iostream.h>

#include <conio.h>

#include <tchar.h>

#pragma argsused

struct ElMatr //структура елемента зв'язаного одностороннього списка

{

int i,j ;

float A ;

ElMatr *NextA;

} ;

// Оголошуємо лобальну змінну типу ElMatr: *FirstElMatr - для вказiвника на 1-й елемент

// списку. Ця змінна буде доступна у всій програмі

ElMatr *FirstElmart;

// Оголошуємо прототип функції SeachElMatr для пошуку елемента списку за його

// індексами.

ElMatr *SeachElMatr(int i, int j, ElMatr *FirstEl);

int _tmain(int argc, _TCHAR* argv[])

{

clrscr();

// Описуємо змінні

int i,j; float AijValue;

ElMatr *MA,*Aijtek,*AijRob;

// Організовуємо цикл для введення елементів списку.

i=0;

while (i!=999) {

// Зчитуємо індекси і,j а також значення Aij

printf ("Input matrix element i j Aij \n");

scanf ("%d%d%f",&i,&j,&AijValue);

if (FirstElmart==NULL) // Були вже внесені у список якісь елементи матриці?

//Ще не було елементів у матриці, створюємо 1 елемент і записуємо його

// адресу у поле FirstElmart

{ MA = new ElMatr;

FirstElmart = MA;

MA->A=AijValue;

MA->i=i;

MA->j=j;

MA->NextA=0;

} else

// Вже є елементи у матриці. Шукаємо, куди б додати новий. Він повинен

// знаходитись у місці, яке визначають індекси i,j. Це допоможе зменшити

// час пошуку елемента при виборці

{

Aijtek=SeachElMatr (i, j, FirstElmart); // Скористаємось функцією пошуку

if (Aijtek->i==i && Aijtek->j==j)

// У таблиці уже є елемент з індексами i,j. Заміщуємо його значення на нове

{

MA = Aijtek ;

MA->A = AijValue;

}

else // Вставляємо новий елемент після елемента Aijtek, знайденого функцією

{

AijRob= new ElMatr;

//if (Aijtek->NextA!=NULL) {AijRob->NextA = Aijtek->NextA; } /* Запамятаємо адресу, на яку вказував знайдений елемент */

AijRob->NextA = Aijtek->NextA; /* Запамятаємо адресу, на яку вказував знайдений елемент */

MA=new ElMatr; /* Створимо новий елемент списку */

MA->A=AijValue; /* Присвоїмо його полям відповідні значення */

MA->i=i;

MA->j=j;

Aijtek->NextA=MA; /* Звяжемо новий елемент із старим елементом,

запамятованим у полі AijRob->NextA */

//if (AijRob->NextA!=NULL)

{MA->NextA=AijRob->NextA;}

}

}

}

// Виведення елементів матриці по запиту. Вводяться індекси і,j ,

// а виводиться значення Aij Для завершення введіть і=999

i=0;

while (i!=999)

{

printf ("Input,which matrix element (i j) show ?\n");

scanf ("%d%d",&i,&j);

MA = FirstElmart;

if (MA == NULL)

{

printf(" Matrix is empty");

return 0;

}

Aijtek=SeachElMatr (i, j, FirstElmart);// Скористаємось функцією пошуку

if (Aijtek->i == i && Aijtek->j == j) /* Елемент знайдено */

{

AijValue=Aijtek->A;

printf (" i= %d j= %d Aij= %f\n",i,j, AijValue);

}

else

printf("Element not found") ;

}

}

// Пишемо функцію для пошуку елемента матриці у списку елементів. Функція

// шукає найближчий елемент списку, у якого індекси менші або рівні заданим

// параметрам i,j

ElMatr *SeachElMatr(int i, int j, ElMatr *FirstEl) /* Після заголовку функці∙ не повинно бути ;, якщо це не огоглошення функці∙*/

{

ElMatr *Aijtek,*AijRob,*MA;

int ic,jc;

MA=FirstEl; /* Встановлюєм покажчик на початок списку */

Aijtek=MA; /* Запамятовуємо поточний елемент у полі Aijtek */

while ( MA!=NULL )

{

ic= MA->i ;

while ((MA!=NULL) &&(MA->i== ic))

{

if (ic==i )

{

while ((MA!= NULL) && ( MA->j <= j) && (MA->i == ic))

{

Aijtek = MA;

MA = MA->NextA;

if (MA == NULL){ break;}

jc = MA->j;

}

}

else

{

while ((MA!=NULL) && (MA->i == ic))

{

Aijtek=MA;

MA=MA->NextA;

if (MA==NULL){ break;}

jc =MA-> j;

}

}

if (MA==NULL) break;

if ((MA->i >i) ) break;

if ((Aijtek->i == i) &&(Aijtek->j >= j)) break;

AijRob=Aijtek->NextA;

if (AijRob->i == i && AijRob->j > j ) break;

if( AijRob->i > i ) break;

}

if (MA == NULL) break;

if ((Aijtek->i == i) &&(Aijtek->j >= j)) break;

AijRob=Aijtek->NextA;

if (AijRob->i == i && AijRob->j > j ) break;

if( AijRob->i > i ) break;

}

return Aijtek;

}

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