ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


ДВОВИМІРНІ МАСИВИ, СОРТУВАННЯ

МАСИВІВ

 

9.1. Дано матрицю А розміром 4х5. Визначити кількість елементів в кожному рядку матриці А, модуль яких дорівнює порядковому номеру елемента в рядку. На друк вивести кількість таких елементів для кожного рядка.

9.2. Дано матриці А і В розміром 6х6 кожна. Знайти еле-менти матриці С як півсуму відповідних елементів матриць А і В.

9.3. Знайти елементи в кожному стовпці матриці G розміром 7х4, які більші числа А і менші числа С. Визначити кількість таких елементів. Числа А= -2 і С=3.5 ввести з клавіатури.

9.4. Обчислити

Аргумент х змінюється від початкового значення 5.2 до кінце-вого значення 8.3 з кроком 0.75. Вектор В складається з 8 елементів (додатні дійсні числа).

9.5. Дано матрицю Е розміром 4х6. Сформувати матрицю Q, значення елементів кожного стовпця якої обчислюється як різниця відповідних елементів двох суміжних стовпців матриці Е.

9.6. Дано матрицю Т розміром 6х5. Поділити елементи кожного стовпця на останній елемент стовпця. Перетворену матрицю надрукувати.

9.7. Дано матрицю А розміром 6х7. Для кожного рядка матриці обчислити суму елементів, значення яких перевищує задане число С. С=18.6.

9.8. Дано матрицю А розміром 6х6. Замінити в матриці елементи головної діагоналі нулями.

9.9. Дано матрицю С розміром nxn. Знайти і надрукувати індекси тих елементів матриці С, для яких cij=cji, а також підрахувати кількість таких елементів.

9.10. Дано матрицю А розміром 8х7. Поділити кожний елемент стовпця на елемент цього стовпця, який знаходиться на головній діагоналі, якщо цей елемент не дорівнює нулю.

9.11. Масив С дійсних чисел має 5 рядків і 11 стовпців. Присвоїти значення найменшого елемента масиву змінній М1, номер рядка, де знаходиться цей елемент,- змінній Т, номер

стовпця - змінній С.

9.12. Одновимірний масив А складається з 30 елементів. Знайти та надрукувати числа, які зустрічаються в масиві більше одного разу.

9.13. Для кожного рядка заданої матриці А розміром 8х5 знайти та надрукувати номери стовпців, які містять нульові елементи, і їх кількість.

9.14. Дано матрицю В розміром 5х6. Поділити елементи кожного рядка на елемент, який знаходиться в третьому стовпці цього рядка.

9.15. Дано квадратну матрицю А 6-го порядку. Знайти суму елементів матриці, які розміщені в рядках з від’ємним елементом на головній діагоналі. Обчислити кількість таких рядків.

9.16. Обчислити елементи вектора В, кожний з яких дорівнює скалярному добутку суми елементів рядків матриці Q розміром 5х6 на векторі Х, який складається з 6 елементів. Вказівка:

9.17. Дано двовимірний масив В розміром 15х15. Обчисли-ти суму абсолютних значень елементів масиву, виключивши з неї діагональні елементи:

i, j=1,2,3,...,15.

9.18. Дано матрицю Т розміром 6х7. Знайти максимальний і мінімальний елементи для кожного стовпця матриці Т.

9.19. Дано квадратну матрицю А n-го порядку (n<10). Утворити матрицю n-1 порядку шляхом вилучення з матриці А рядка і стовпця, які розміщені на перетині місцезнаходження мінімального елемента матриці А. Вивести на друк дві матриці і значення мінімального елемента матриці.

9.20. Дано дві цілочислові квадратні матриці 4-го порядку. Одержати нову матрицю шляхом віднімання від елементів кожного стовпця першої матриці суми елементів відповідних рядків другої матриці.

9.21. Дано матрицю розміром МхN. Сформувати з цієї матриці вектор за правилом: перші N елементів вектора - це елементи матриці першого рядка, другі N елементів - елементи другого рядка і т.д. (М=4; N=6).

9.22. Дано матрицю С розміром МхN. Поміняти перший елемент кожного стовпця матриці С з максимальним елементом цього стовпця, другий елемент цього стовпця з мінімальним елементом цього стовпця. Вивести на друк задану і новоутворену матриці.

9.23. Дано матрицю А( 3,4). Вивести на друк матрицю і номери стовпців і рядків, де знаходяться третій і п`ятий парні елементи цієї матриці.

9.24. Дано прямокутну матрицю МхN. Одержати нову матрицю шляхом ділення вСх елементів заданої матриці на елемент, найбільший за абсолютною величиною. На друк вивести нову матрицю і максимальний елемент за абсолютною величиною.

9.25. Обчислити значення

Аргумент Х змінюється від початкового значення 6 до кінцевого значення 18 з кроком 2, вектор А складається з 6 елементів.

А={-2.6; 3.2; -4; 2.8; 8.1; -1.8}.

9.26. Обчислити

Вектор А складається з 5 елементів. Аргумент Х змінюється від початкового значення 5 до кінцевого 6.75 з кроком 0.15.

А={2.4; 0.75; 12.7; 5.1; 4.1}.

9.27. Обчислити функцію

Аргумент a змінюється від 3.63 до 4.73, кількість інтервалів аргумента n=8 (крок зміни постійний), аргумент Z змінюється від початкового значення 21.6 з кроком 1.5 до кінцевого 27.6, а=121.6.

9.28. Обчислити значення функції Y при одночасній зміні аргументів X і t. Аргумент t змінюється від 0.75 до 1.65 включно з кроком 0.15, а арумент X являє собою вектор, який складається з 7 елементів.

а=12.35.

9.29. Обчислити значення y:

Вектор Х складається з 6 елементів, аргумент a змінюється від an=50 до ak=230 з кроком Da=1.50.

9.30. Обчислити функцію

aj=1,2,3,4,5.

Вектор В складається з 6 елементів.

9.31. В пам’яті машини зберігаються дані про річний видобуток газу по кожному з 12 родовищ за 1988, 1989 і 1990 р.р. Визначити сумарний видобуток газу по кожному родовищу за 3 роки.

9.32. В пам’яті машини зберігаються дані трьох родовищ про річний видобуток газу з 10 свердловин кожного родовища за 1988, 1989 і 1990 р.р. Визначити середній видобуток газу за один рік, який припадає на одну свердловину.

9.33. В провінції 5 нафтових родовищ. Кожне родовище має певну відому кількість свердловин, добовий видобуток кожної свердловини відомий. Знайти річний видобуток нафти по кожному родовищу.

9.34. В 3 бригадах працюють по 6 робітників. Відоме виконання плану в відсотках кожним робітником (від 90% до 110%). Визначити для кожної бригади кількість робітників, які виконали план менше 100% або більше 105%.

9.35. В групі 15 студентів, кожний з яких успішно склав екзаменаційну сеСю, в яку входило 3 іспити. Визначити: а) середній бал кожного іспита; б) кількість студентів, які склали іспит на “добре” і “відмінно”; в) середній бал групи.

9.36. Дано одновимірний масив, який складається з 15 елементів. Сформувати вектор В, який складається з елементів масиву Х, розміщених за спадом, використовуючи такий алгоритм. Спочатку необхідно знайти максимальний елемент масиву Х, який стає першим елементом масиву В. На місце максимального елемента масиву Х записується число, менше від максимального елемента масиву Х, потім знаходять наступний максимальний елемент масиву Х, який є другим елементом масиву В і т.д.

9.37. Дано одновимірний масив чисел В, який складається з 12 елементів. Необхідно переставити елементи вектора так, щоб вони були упорядковані за неспадом, тобто Сортування чисел масиву провести, використовуючи алгоритм “бульбашки”, суть якого полягає в тому, що порівнюємо числа, починаючи з першого. Порівнявши bi та bi+1, якщо bi>bi+1, міняємо місцями bi і bi+1 і т.д. Перебравши вС числа, найбільше число пересуваємо на останнє місце. Наступне порівняння знову починаємо з першого числа, зменшивши на одиницю кількість порівнюваних чисел. Порівняння продовжуємо доти, доки в ньому не будуть брати участь тільки перше і друге число.

9.38. Дано одновимірний масив чисел А, які складається з 15 додатних чисел. Провести сортування масиву за незростанням, т.б. Сортування провести, використовуючи алгоритм вибору, суть якого полягає в тому, що знаходимо максимальний елемент масиву і міняємо його з першим елементом. Потім продовжуємо те ж саме, починаючи з другого елемента масиву і т.д. Для перестановки двох елементів необхідно ввести допоміжну змінну.

9.39. Дано одновимірний масив чисел А, який складається з 12 елементів. Сортування провести використовуючи такий алгоритм. Спочатку знаходимо максимальний елемент масиву, для чого зрівнюємо а1 і а2 і, якщо а2>a1, то переставляємо їх місцями, далі а3 з а4 і т.д. Після вСх перестановок на місці а1 буде знаходитись максимальний елемент масиву. Потім знову проводиться пошук максимального елемента масиву, починаючи з другого числа, зрівнюючи а2 і а3 , при необхідності переставляють їх місцями, далі а3 і а4 і т.д. Таких пошуків проводять n-1 раз.

9.40. Побудувати прямокутну матрицю А розмірністю mxn. Елементами цієї матриці є цілі числа, які утворені за залежністю A(K,L)=K2+L, де K - номер рядка, L - номер стовбця матриці А. Вивести на друк утворену матрицю А для m=3 і n=4.

9.41. Дана прямокутна матриця В розмірністю mxn. Знайти та надрукувати новоутворену матрицю, вилучивши з матриці В рядки і стовбці, на перетині яких розміщені найбільший і найменший елементи матриці В.

9.42. Обчислити елементи прямокутної матриці С розмірністю mxn, використавши генератор випадкових чисел, елементи матриці повинні бути цілими парними числами і належати інтервалу [ -100;+100].

9.43. Дана прямокутна матриця довільної розмірності. Побудувати вектор, елементами якого є елементи матриці, що розміщені між найбільшим і найменшим елементами матриці. Вивести на друк дану матрицю та утворений вектор.

9.44. Дана матриця А розмірністю mxn. Якщо елементи матриці А, які розміщені на головній діагоналі рівні нулю то виконати перестановку рядків так, щоб елементи головної діагоналі були б відмінні від нуля. Якщо це зробити неможливо в даній матриці, то вивести відповідне повідомлення.

9.45. Дана квадратна матриця С. Деякі елементи цієї матриці, які розміщені на головній діагоналі рівні нулю. Вилучити з матриці С ті стовпці, в яких елементи головної діагоналі рівні нулю. Віддрукувати вихідну та перетворену матриці.

9.46. Згенерувати та віддрукувати матрицю В розмірністю 4х5, елементи матриці повинні бути цілими числами, які лежать в межах -10 до +10. Виконати перевірку для кожного рядка(стовпця) матриці В, на наявність чисел, які повторюються. Якщо такі числа знайдено, то вивести ці числа, номери їх позицій для кожного рядка(стовпця).

 

Приклад. Дано матрицю В розміром 3х4. Обчислити добуток ненульових елементів кожного стовпця матриці. Результат обчислення вивести у вигляді одновимірного масиву.

Вихідна матриця

 

Розв’зок задачі.

 

Добуток обчислюэмо за формулою

і=1,2,3; j=1,2,3,4.

 

 

1. Графічний алгоритм наведений на рис.9.1


2. Програма мовою GW Basic

10 REM ДВОВИМІРНИЙ МАСИВ

20 DIM B(3,4),D(4) : OPTION BASE 1

30 PRINT “ВВЕДІТЬ ЕЛЕМЕНТИ МАТРИЦІ B”

40 FOR I%=1 TO 3

50 FOR J%=1 TO 4

60 PRINT “B(“;I%;”,”; J%;”)=“;

70 INPUT B(I%, J%)

80 PRINT TAB(10);B(I%, J%)

90 NEXT J%

100 NEXT I%

110 PRINT “РЕЗУЛЬТАТИ ОБЧИСЛЕНЬ”

120 FOR J%=1 TO 4

130 D(J%)=1

140 FOR I%=1 TO 3

150 IF B(I%, J%)=0 THEN 140

160 D(J%)=D (J%)* B(I%, J%)

170 NEXT I%

180 PRINT “D(“;J%;”)=“;D(J%);

190 NEXT J%

200 END

 

ВВІД ЕЛЕМЕНТІВ МАТРИЦІ В

B(1,1)=? 2

B(1,2)=? 6

B(1,3)=? 7.5

B(1,4)=? 4.1

B(2,1)=? 5

B(2,2)=? 0

B(2,3)=? 2.3

B(2,4)=? -6.2

B(3,1)=? 3

B(3,2)=? 1.5

B(3,3)=? 0

B(3,4)=? 4.9

 

РЕЗУЛЬТАТИ ОБЧИСЛЕНЬ

D(1)=30 D(2)=9 D(3)=17.35 D(4)= -124.558

 

3. Програма мовою С

#include <stdio.h>

main( )

{

float b[3][4]={

{2, 6, 7.5, 4.1},

{5, 0, 2.3, -6.2},

{3, 1.5, 0, 4.9}

},

d[4];

int i,j;

for(j=0;j<4;j++)

{

d[j]=1; for(i=0;i<3;i++)

if(b[i][j]!=0)

d[j]*=b[i][j];

printf(“d[%i]=%f\n”,j,d[j]);

}

}

D(0)=30.000000

D(1)=9.000000

D(2)=17.350000

D(3)= -124.557991

 

 

4. Програма мовою Pascal

program lab9(input,output);

var j,i: integer;

d: array [1..4] of real;

b: array [1..3,1..4] of real;

begin

writeln(‘input’);

for i:=1 to 3 do

for j:=1 to 4 do

begin

write(‘b[‘,i,’,’,j,’]=‘);

read(b[i,j]);

end;

for j:=1 to 4 do

begin

d[j]:=1;

for i:=1 to 3 do

if b[i,j]< >0

then d[j]:=d[j]*b[i,j];

writeln(‘d[‘,j,’]=‘,d[j]:12);

end;

end.

D(1)=3.00000E+01

D(2)=9.00000E+01

D(3)=1.72500E+01

D(4)= -1.24558E+02

Завдання:

Дано матрицю В розміром 3х4. Обчислити добуток ненульових елементів кожного стовпця матриці. Результат обчислення вивести у вигляді одновимірного масиву.

 

Вихідна матриця

 

 

Опис форми.

 

Відкриваємо нову форму і на цій формі створюємо такі елементи (таблиця 9.1):

 

Таблиця 9.1- Елементи керування і їх властивості

Елемент (Name) Властивість Значення

 

Grid1 FixedCols
  FixedRows
  Cols
  Rows
Grid2 FixedCols
  FixedRows
  Cols
    Rows
CommandButton1 Caption Введення масиву
CommandButton2 Caption Результат
 
 

CommandButton3

Caption Вихід

Рисунок 9.2 – Інтерфейс програми.

Програма:

Dim B(3, 4) As Double

Dim D(4) As Double

Private Sub Command1_Click()

For I = 1 To 3

For J = 1 To 4

B(I, J) = Val(InputBox("Введіть В(" & I & " ," & J & ") ", => ""))

Grid1.Col = J - 1 'Зробити активним І-ту колонку

Grid1.Row = I - 1

Grid1.Text = B(I, J) 'Записати дані в І-ту колонку

Next J

Next I

End Sub

 

Private Sub Command2_Click()

For J = 1 To 4

D(J) = 1

For I = 1 To 3

If B(I, J) <> 0 Then D(J) = D(J) * B(I, J)

Next I

Grid2.Col = J - 1

Grid2.Text = D(J)

Next J

End Sub

 

Private Sub Command3_Click()

End

End Sub

 


Рисунок 9.3 – результат виконання програми.

Програма мовою Delphi

Опис форми.

Відкриваємо нову форму і на цій формі створюємо такі елементи (таблиця 9.2):

Таблиця 9.2 - Елементи керування і їх властивості

Елемент (Name) Властивість Значення

 

Label1 Caption Поле редагування
Label2 Caption Результат
  Visible False
Label3 Caption Добуток стов.
  Visible False
Edit1    
StringGrid1 RowCount
  ColCount
StringGrid2 RowCount
  ColCount
Button1 Caption OK
Button2 Caption Обчислити
Button3 Caption Вихід

Рисунок 9.4 – інтерфейс програми.

Кнопка „ОК” призначення для вводу в таблицю значення з поля компоненту Edit1.

Програма даної кнопки матиме вигляд:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=Edit1.Text;

b[StringGrid1.Row,StringGrid1.Col]:=StrToFloat(Edit1.Text);

end;

 

Компонент StringGrid1 і StringGrid2— таблиця. Перша з яких виводиться зразу на форму, а друга після обчислення. Щоб не було видно компонента на формі під час виконання програми потрібно в властивостях компоненту встановити значення Visible=False.

 

Код вСєї програми

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Grids, Db, DBTables, StdCtrls;

 

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Edit1: TEdit;

Label1: TLabel;

Button1: TButton;

Label2: TLabel;

StringGrid2: TStringGrid;

Label3: TLabel;

Button2: TButton;

Button3: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

j,i: integer;

d: array [1..4] of real;

b: array [1..3,1..4] of real;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.FormCreate(Sender: TObject);

begin

StringGrid1.Cells[0,0]:='№ряд/стов';

StringGrid1.Cells[0,1]:='1';

StringGrid1.Cells[0,2]:='2';

StringGrid1.Cells[0,3]:='3';

StringGrid1.Cells[1,0]:='1';

StringGrid1.Cells[2,0]:='2';

StringGrid1.Cells[3,0]:='3';

StringGrid1.Cells[4,0]:='4';

 

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=Edit1.Text;

b[StringGrid1.Row,StringGrid1.Col]:=StrToFloat(Edit1.Text);

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

StringGrid2.Visible:=true;

Label2.Visible:=true;

Label3.Visible:=true;

for j:=1 to 4 do

begin

d[j]:=1;

for i:=1 to 3 do

if b[i,j]<>0 then d[j]:=d[j]*b[i,j];

StringGrid2.Cells[j-1,0]:=FloatToStr(d[j]);

end;

 

 

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

end.


Рисунок 9.5 – Результат виконання програми.

Пояснення до програм

 

Введення елементів матриці в пам’ять ЕОМ проводиться по рядках, тобто у внутрішньому циклі змінюється індекс стовпця, а в зовнішньому - індекс рядка.

При визначенні добутку ненульових елементів кожного стовпця матриці також організовано два вкладені цикли: зовнішній за номером стовпця - параметр циклу J і внутрішній за номером рядка за змінною І. У внутрішньому циклі проводиться перебір вСх елементів J-го стовпця, кожен з яких порівнюється з нулем. Якщо B(I,J)=0, то проводиться обчислення добутку елементів матриці в даному стовпці.

 

Питання для самоперевірки

 

1. Як оголошується двовимірний масив?

2. Яким способом можна записати значення індекСв елементів?

3. Який порядок зміни індекСв елементів двовимірного масиву?

4. Які способи введення елементів двовимірного масиву ви знаєте?

5. В чому різниця між перебором елементів двовимірного масиву по рядках і стовпцях?

6. Як вивести елементи масиву в текстовому вікні користуючись мовою Visual Basic ?

ПРОЦЕДУРИ

 

При складанні програм з використанням процедур необхідно:

- скласти графічний алгоритм розв’язання задачі з використан-ням процедури, передбачити введення вихідних даних, звертання до процедури, виведення вихідних даних задачі і результатів обчислень;

- скласти окремо графічний алгоритм процедури і навести опис формальних параметрів;

- скласти головну програму, в якій передбачити звернення до процедури. Процедуру-програму можна використати як внутрішню, так і зовнішню (за рекомендацією викладача);

- скласти програму самої процедури;

- розв’язати задачу в діалоговому режимі.

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

10.1. Дано квадратну матрицю А розміром nxn. Скласти програму нормування матриці, поділивши вС елементи кожного рядка на максимальний елемент за модулем цього рядка. Пошук максимального елемента рядка оформити у вигляді прцедури.

10.2. Дано три одновимірні масиви різної розмірності. Скласти прграму формування одновимірного вектора D, елементами якого є відмінні від нуля мінімальні елементи за модулем заданих масивів. Пошук мінімального елемента за абсолютним значенням виконати у вигляді процедури.

10.3. Оформити у вигляді прграми обчислення функції

ex=1+x+x2/2!+x3/3!+...

і порівняти одержаний результат зі значенням, отриманим при використанні стандартної функції EXP(X), для х=2.3; 8.5.

10.4. Дано двохвимірний масив. Відсортувати масив по стовпцях у спаданні. Перестановку чисел виконати у вигляді підпрограми.

10.5. Дано два одновимірні масиви, які складаються не більш як з 30 елементів кожний. Використавши підпрограму пошуку максимального елемента, знайти півсуму максимальних елементів заданих масивів.

10.7. Дано два трикутники зі сторонами a, b, c i d, e, f. Використавши підпрограму, визначити, чи ці трикутники є прямокутні чи ні?

10.8. Дано сторони двох трикутників: a, b, c та d, e, f. Знайти, на скільки площа одного трикутника більша від другого. Площа трикутника ABC зі сторонами A, B, C обчислюється за формулою Герона

де R - півпериметр трикутника ABC. Обчислення площі трикутників оформити у вигляді прцедури.

10.9. Дано три квадратні матриці. Сформувати вектор, який складається з мінімальних елементів кожної матриці, відмінних від нуля. Пошук мінімального елемента виконати у вигляді процедури.

10.10. Дана прямокутна матриця. Сформувати вектор, який складається з максимальних елементів кожного стовпця (рядка) матриці. Пошук максимального елемента в стовпці (рядку) виконати у вигляді підпрограми.

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

Аргумент х змінюється від початкового значення 2.8 з кроком 0.15 до кінцевого 3.7.

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

Для значень х, які містяться в проміжку [-1.5;1.5] з кроком Dх=0.5, j=0, і для значень х, які містяться в проміжку [-2.5;3] з кроком 0.6; j=0.1. Передбачити недопустимість ділення на 0.

10.13. Скласти прграму знаходження суми стовпців матриці розміром mxn рузельтат записати у вигляді вектора.

10.14. Обчислити значення перших n (n<30) елементів гео-метричної прогреСї з допомогою підпрограми, якщо відомий перший елемент прогреСї а та знаменник пргреСї q. Кожний наступний елемент геометричної прогреСї утворюється множенням попереднього на знаменник прогреСї. Для розміщення в пам’яті обчислених елементів їх слід оголосити як одновимірний масив.

10.15. Обчислити сполучення з n елементів по m (n<m)

Обчислення факторіала виконати у вигляді підпрограми.

10.16. Дано декартові координати 8 точок. Підрахувати, скільки точок належить площині, обмеженій колом з радіусом R і центром в точці (0,0). Провірку належності оформити у вигляді підпрограми.

10.17. Дано координати 5 точок. Обчислити і вивести на друк полярні координати. Полярний радіус і полярний кут обчислюються так:

де х, у - декартові координати точок. Переведення в полярні координати виконати у вигляді підпрограми.

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

10.19. Дано дві квадратні матриці одного порядку А і В. Показати, що для них вірний асоціативний закон, тобто А*В=В*А. У випадку стверджувальної відповіді вивести на друк повідомлення “АСОЦІАТИВНИЙ ЗАКОН ВИКОНУЄТЬСЯ”,в противному випадку - “АСОЦІАТИВНИЙ ЗАКОН НЕ ВИКОНУЄТЬСЯ”. Обчислення добутку двох матриць виконати у вигляді підпрограми.

10.20. Дано експерементальні значення чотирьох випадкових величин, кожна з яких має не більше 8 значень. Обчислити дисперСю випадкової величини ri=1, 2, 3, 4, вважаючи її експериментальними значеннями, математичне сподівання заданих випадкових величин. Математичне сподівання і дисперСя випадкової величини Х обчислюється так:

Обчислення математичного сподівання оформити у вигляді процедури.

10.21. Дано три прямокутні матриці. Знайти слід кожної матриці і вивести на друк значення найменшого за модулем сліду. Обчислення сліду матриці оформити у вигляді підпрограми. Слідом матриці називається сума елементів головної діагоналі.

10.22. Дано три вектори. Визначити максимальний парний елемент кожного вектора і упорядкувати їх за спаданням. Пошук максимального елемента вектора виконати у вигляді підпрограми.

10.23. Дано дві прямокутні матриці. Розв’язати рівняння px+q=0, де p - мінімальний за модулем елемент першої матриці; q - мінімальний за модулем елемент другої матриці. Пошук мінімального за модулем елемента матриці оформити у вигляді процедури.

10.24. Дано координати точок х1, y1; x2, y2; x3, y3; x4, y4. Визначити і вивести на друк координати точок, для яких кут між віссю абсцис і променем, що з’єднує точку з початком координат, є максимальним. Обчислення величини кута між віссю абсцис і променем, що з’єднує точку з початком координат, оформити у вигляді підпрограми.

10.25. Обчислити наближено площу фігури, яка обмежена віссю Х, прямими Х=а і Х=b (a<b) і кривою Y=Y(X)=X2/(1+X). Інтервал зміни Х поділити на 10 частин і підсумувати площі десяти прямокутників з основою 0.2; висота прямокутника дорівнює значенню функції на лівій границі його основи. Обчислення площі оформити у вигляді підпрограми. Для значень a=3; b=5; a=7; b=9.

 

Приклад. Дано два вектори А і В розміром від 1 до 10. Скласти програму обчислення максимального елемента векторів. Знаходження максимального елемента виконати у вигляді процедури.

 

Розв’язок задачі.

 

1. Графічний алгоритм розв’язання задачі показаний на рис.10.1, а - головна програма, рис.10.2 - підпрограма.

 


 

 


 

 

 
 
Рисунок.10.а- графічний алгоритм

       
   
 
 
Рисунок.10.2- графічний алгоритм

 


1. Програма мовою GW-Basic

10 REM Використання процедури для

20 REM Пошуку найбільшого значення

30 DIM A(20),B(20),D(20)

40 INPUT “Введіть кількість елементів вектора А і В” ;NA,NB

50 FOR I=1 TO NA: PRINT “A(”;I;”)=”;

60 INPUT A(I): NEXT I

70 FOR I=1 TO NB : PRINT “B(”;I;”)=”

80 INPUT B(I):NEXT I

90 REM Підготовка до звертання до підпрограми

100 ND=NA:FOR I=1 TO ND : D(I)=A(I):NEXT I

110 REM Звертання до підпрогтами

120 GOSUB 200: MAX =MAXD

130 ND=NB: FOT I=1 TO ND: D(I)=B(I):NEXT I

140 GOSUB 200:MAXB = MAXD

150 PRINT “Макс. елемент вектора А=”;MAXA

160 PRINT “Макс. елемент вектора В=”;MAXB

170 STOP

200 REM Підпрогарма обчислення максимального значення, МАХD

210 MAXD=D(1)

220 FOR I=2 TO ND : IF D(I)>MAXD THEN MAXD=D(I): NEXT I

230 RETURN

Макс. елемент вектора А=895

Макс. елемент вектора В=189

 

2. Програма мовою Pascal

program Max;

const na=5;

nb=7;

k=10;

type Vector=array [1..k] of real;

var A:vector;

B:vector;

i:integer;

maxA,maxB:real;

procedure Max (k:integer;D:vector; var maxd:real);

var i:integer;

begin

maxd:=D[1];

for i:=1 to k do

if d[i]>maxd then maxd:=d[i];

end;

begin

for i:=1 to na do

Begin

write('A(',i,')=');

readln (a[i]);

end;

for i:=1 to nb do

Begin

write('B(',i,')=');

readln (b[i]);

end;

max(na,A,maxA);

max(nb,B,maxB);

writeln('MaxA=',maxA:4:2);

writeln('MaxB=',maxB:4:2);

readln;

end.

МахА=895

МахВ=189

3. Програма мовою С

# include<conio.h>

# include <stdio.h>

# include <math.h>

float a[20],b[20],maxa,maxb;

int i,j,na,nb;

void max(int nd,float d[],float *maxd)

{

*maxd=d[1];

for(i=1;i<=nd;i++)

if(d[i]>*maxd) *maxd=d[i];

}

 

main()

{

clrscr();

printf("Введіть кількість елементів векторів А і В");

scanf("%d,%d",&na,&nb);

for(i=1;i<=na;i++)

{ printf("A(%d)=",i);

scanf("%f",&a[i]);

}

printf("\n");

for(i=1;i<=nb;i++)

{ printf("B(%d)=",i);

scanf("%f",&b[i]);

}

max(na,a,&maxa);

max(nb,b,&maxb);

printf("Максимальний елемент вектора А=%f\n",maxa);

printf("Максимальний елемент вектора B=%f",maxb);

}

Максимальний елемент вектора А=895

Максимальний елемент вектора B=189

Опис форми.

Відкриваємо нову форму і на цій формі створюємо такі елементи (таблиця 10.1):


Таблиця 10.1- Елементи керування і їх властивості

Елемент (Name) Властивість Значення
Label1 Caption Максимальне значення матриці А
Label2 Caption  
  BorderStyle 1-Fixed Single
Label3 Caption  
  BorderStyle 1-Fixed Single
Label4   Максимальне значення матриці В

 

Рисунок 10.3 – Інтерфейс програми.

Програма:

Sub max(D() As Single, ND As Byte, MaxD As Single)

Dim i As Byte

MaxD = D(1)

For i = 1 To ND

If D(i) > MaxD Then MaxD = D(i)

Next i

End Sub

Private Sub Form_Load()

Static A(20) As Single, B(20) As Single, NA As Byte, Nb As Byte, i As Byte, maxA As Single, maxB As Single

NA = InputBox("Введіть кількість елементів вектора A ")

For i = 1 To NA

A(i) = InputBox("Введіть значення елементу масиву A(" & i & ")=>")

Next i

Nb = InputBox("Введіть кількість елементів вектора B ")

For i = 1 To Nb

B(i) = InputBox("Введіть значення елементу масиву B(" & i & ")=>")

Next i

Call max(A(), NA, maxA)

Label2.Caption = maxA

Call max(B(), Nb, maxB)

Label3.Caption = maxB

 

End Sub

Рисунок 10.4 – Результат виконання програми.

Програма мовою Delphi

Опис форми.

Відкриваємо нову форму і на цій формі створюємо такі елементи (таблиця 10.2):

Таблиця 10.2 - Елементи керування і їх властивості

 

Елемент (Name) Властивість Значення

 

Label1 Caption MaxA
Label2 Caption MaxB
Edit1 Text  
Edit2 Text  
Edit3 Text  
Edit4 Text  
StringGrid1 RowCount
  ColCount
  FixedCols
  FixedRows
StringGrid2 RowCount
  ColCount
  FixedCols
  FixedRows
Button1 Caption Обчислити
Button2 Caption Вихід
Button3 Caption ОК
Button4 Caption ОК


Рисунок 10.5 – інтерфейс програми.

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

 

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

StringGrid1: TStringGrid;

Edit1: TEdit;

Button3: TButton;

StringGrid2: TStringGrid;

Edit2: TEdit;

Button4: TButton;

Label1: TLabel;

Label2: TLabel;

Edit3: TEdit;

Edit4: TEdit;

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type vector=array [1..10] of real;

var

Form1: TForm1;

a,b:vector;

nA,nB:integer;

maxA,maxB:real;

implementation

 

{$R *.dfm}

procedure Max(D:vector; nd:integer; var maxD:real);

var i:integer;

 

begin

maxd:=d[1];

for i:=1 to nd do

if maxd<d[i] then maxd:=d[i]

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=Edit1.Text;

a[StringGrid1.col]:=strtofloat(Edit1.Text);

nA:=StringGrid1.Col;

end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

StringGrid2.Cells[StringGrid2.Col,StringGrid2.Row]:=Edit2.Text;

b[StringGrid2.col]:=strtofloat(Edit2.Text);

nB:=StringGrid2.col;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

Max(A,nA,maxA);

Edit3.Text:=FloatToStr(maxA);

Max(B,nB,maxB);

Edit4.Text:=FloatToStr(maxB);

end;

end.

 


Рисунок 10.6 – Результат виконання програми

 

Пояснення до програм

Графічний алгоритм показаний на рис.10.1 На рис.10.2 показаний алгоритм головної програми, який складається з введення елементів векторів А та В, звертання до підпрограми обчислення максимального елемента (MAXD), яке здійснює обчислення максимального елемента вектора А при другому звертанні – максимального елемента вектора В і вивоедення результатів обчислення. На рис.10.2 наведений алгоритм підпрограми обчислення максимального елемента (MAXD). Формальними параметрами підпрограми є вектор D, кількість елементів цього вектора, ND та MAXD.

 

Питання для самоперевірки

 

1. З якою метою використовуються підпрограми?

2. Що таке формальні і фактичні параметри в процедурах - під-програмах?

3. Як оформляється процедура мовами програмування?

4. Яка різниця між зовнішньою і внутрішньою процедурами?

5. Як формується звернення до підпрограми мовами програмування?

6.Охарактеризуйте відмінності при звертанні до підпрограми мовами програмування.

 

ПІДПРОГРАМИ-ФУНКЦІЇ

 

11.1. Скласти процедуру-функцію,яка обчислює значення х аргумента монотонної функції,при якому f(x)=0, згідно формули:

Очевидно:

11.2. Скласти процедуру-функцію,яка визначає довжину відрізка на площині за заданими полярними координатами його вершин згідно формули :

Використовуючи цю процедуру,скласти програму, яка вводить полярні координати вершин трикутника і друкує його периметр.

Вершини: .

11.3. Оформити у вигляді процедури-функції обчислення бінома :

де із заданою точністю .

11.4. Нехай функція y(x) задана таблицею:

 

Xi X1 X2 X3 X4 ... X20
Yi Y1 Y2 Y3 Y4 ... Y20

 

Скласти опис процедури-функції для обчислення значення цієї функції в довільній точці згідно формули лінійної інтерполяції:

, де .

11.5. Скласти програму для обчислення означеного інтегралу:

згідно методу трапецій , де -крок інтегрування, а=2,b=3,n-число інтервалів;

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

6 Задані дійсні a i b. Отримати

, де .

Обчислення функції f(x;y) оформити у вигляді процедури-функції.

11.7. Обчислити ймовірність появи випадкової події рівно m разів в n незалежних дослідах згідно формули Бернуллі:

, де , q=1-p, m ,n - цілі додатні числа, р -дійсне додатнє число з інтервалу (0;1) . Знаходження факторіалу оформити у вигляді підпрограми-функції.

11.8. Оформити обчислення значення інтегральної функції Ф(x), використовуючи наближену формулу (x>0):

у вигляді процедури-функції.

11.9. Отримати послідовнісь п'ятнадцяти псевдовипад-кових чисел в інтервалі (0;1) згідно формули:

де F{ } - символ взяття дробової частини від виразу у фігурних дужках. За a0 взяти будь-який десятковий дріб. Знаходження чергового ak (k=1,2,...) оформити у вигляді процедури-функції.

11.10. Описати процедуру-фнкцію для обчислення

Число n , дійсні U, V і елементи дійсного вектора А вибрати самостійно. Скласти програму для обчислення величини

.

11.11. Скласти програму обчислення розміщення згідно наближеної формули:

.

Обчислення ln(x!) оформити у вигляді п

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти