четверг, 28 февраля 2013 г.

масиви

Дамо поняття масиву. Масив – це впорядкований іменований набір із фіксованої кількості однотипних даних. Доступ до будь-якого елементу масиву здійснюється за його номером. У масиви можна об’єднувати результати експериментів, списки прізвищ співробітників, різні складні структури даних. Наприклад, список учнів у класному журналі є масивом. У масиві дані розрізняються за своїми порядковими номерами (індексами). Якщо кожний елемент масиву визначається за допомогою одного номера, то такий масив називається одновимірним, якщо за двома – то двовимірним. Двовимірний масив – це таблиця з рядків і стовпців. У таблицях перший номер вказує на рядок, а другий – на положення елемента в рядку. Усі рядки таблиці мають однакову довжину.
Одновимірний масив може бути набором чисел, сукупністю символьних даних чи елементів іншої природи (навіть масив масивів). Так само, як і в послідовності, в одновимірному масиві можна вказати елемент з конкретним номером, наприклад а5, або записати загальний вигляд елемента, використовуючи як індекс змінну і, вказуючи діапазон її зміни:
a[i] , i=1, 2 n.
Задачі, в яких використовуються масиви, можуть мати різне формулювання. Наприклад, задача починається зі слів «Дано n чисел...» і далі вказується, що треба зробити з цими числами. При написанні програми мовою Паскаль для розв'язання подібної задачі слід виконати такі дії:
  • визначити, які числа задані: цілі чи дійсні; якщо про це
конкретно не сказано, то краще вважати їх дійсними;
  • назвати весь масив одним ім'ям (це ім'я буде використовуватись для кожного елемента, тільки до імені масиву додаватиметься номер елемента – індекс);
  • описати масив у розділі змінних var, тим самим відвести місце в пам'яті для масиву;
  • ввести дані до пам'яті.
В описі масиву використовують спеціальне слово array (масив), після якого у квадратних дужках через дві крапки вказують діапазон змінювання номерів елементів, далі слово of (із) і тип даних масиву. Коли транслятор зустрічає опис масиву, він відводить для нього стільки послідовних ділянок пам'яті, скільки вказано в квадратних дужках, і такої довжини, яка відповідає типу даних у масиві.
Здебільшого номери елементів змінюються від 1 до заданого числа n, яке є ocтаннім значенням (верхньою межею) номера елемента масиву. Значення n можна задати в розділі констант (const). Приклад опису масиву:
const n = 10; var a: array [1..n] of real;
Цей опис означає, що для масиву a буде відведено десять ділянок оперативної пам'яті по шість байтів кожна. У Паскалі імена цих ділянок записуються так:
a[1], a[2], a[3], a[4], a[5], a[6].
В описі після імені масиву а ставиться двокрапка, після якої вказується тип даного – масив. Якщо в програмі кілька масивів одного розміру і типу, то, як і для простих змінних, їх імена можна задати через кому, а потім, після двокрапки, вказати опис масиву. Для введення даних у пам'ять необхідно організувати цикл. Оскільки введення описаного масиву а може мати вигляд:
for і := 1 to n do read(a[i]);
Значення, що вводяться, набираються на клавіатурі і відокремлюються одне від одного пропусками, після чого натискається Enter. Введення можна прокоментувати і вводити кожне дане в окремому рядку після підказу:
for і := 1 to n do begin write ('a [', і, '] = '); readl n(a[i]) end;
При обробці масивів розв'язування багатьох задач базується на простіших задачах:
  • обчислення суми (добутку) елементів масиву;
  • знаходження найбільшого (найменшого) елемента;
  • упорядкування елементів за зростанням або спаданням. 

Створити масив за допомогою генератора псевдовипадкових чисел. Ввести з клавіатури деяке значення та визначити номер найпершого з елементів, що дорівнюють цьому значенню. Якщо таких елементів не існує, вивести відповідне повідомлення.
Лінійний пошук здійснюється шляхом перебирання всіх елементів масиву та порівняння кожного з них із заданим значенням. Якщо елемент знайдено, цикл пошуку переривається і виводиться знайдений індекс. А якщо цикл пошуку дійшов останнього елемента, і цей елемент не дорівнює заданому значенню, виводиться повідомлення про відсутність шуканого елемента. Описаний алгоритм пошуку елемента в неупорядкованому масиві реалізовано в програмі ех7_5, код якої наведено нижче. 



 задача

Визначити добуток двох матриць розміром NxN.

вторник, 26 февраля 2013 г.

задачі масиви

Задача 1. У заданій послідовності цілих чисел визначити кількість і суму елементів, кратних 10.





Файл:Pr3.jpg

Задача 3. Дано n чисел. Замінити всі від’ємні числа їх модулями.

Файл:Pr6.jpg 
Задача 3. Напишіть програму для відшукання найбільшого елементу масиву [1..n], де n = 117.

Файл:Pr4.jpg
 

четверг, 21 февраля 2013 г.

задачі. цикл з параметрами



Задача. Обчислити та вивести на екран номери і значення перших n=10 елементів. a := 3 + cos(2*i)
Це можна зробити за допомогою наступної програми:
program Elements;
var i,n: integer; a : real;
begin
n := 10;
for і := 1 to n do begin
a := 3 + cos(2*i); writeln(i:4, a:15:2)
end
end.
3.           Пошук потрібних елементів. Задача пошуку потрібних елементів з-поміж усіх елементів послідовності розв'язують методом перегляду і аналізу всіх елементів. Для відбору потрібних елементів використо­вують деяку умову (логічний вираз). Усе це роблять за допомогою команди if, яка знаходиться в тілі команди циклу.
З а д а ч а 3. Нехай елементи числової послідовності описуються формулою a=2-2cos3i, і = 1,2,...,12. Вивести на екран номери і значення лише додатних елементів.
program Find;
var i,n: integer; a : real;
begin
n := 12;
for і := 1 to n do begin
a := 2 - 2*cos(3*i);
if a > 0 then writeln(i:4, a:15:2)
end
                    end.
Завдання. Виведіть на екран елементи, які більші, ніж 1 і менші, ніж 2.

четверг, 7 февраля 2013 г.

Двохвимірні Масиви

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

Тому двовимірний масив можна задати таким чином: b: array [1 .. n] of array [1 .. m] of integer.
Однак, подібний запис двовимірного масиву на практиці використовується нечасто. Найбільш кращим є наступний варіант: b: array [1 .. n, 1 .. m] of integer.
Схематично, двовимірний масив можна представити у вигляді матриці, де перший індекс [1 .. n] визначає кількість рядків, а другий індекс [1 .. m] визначає кількість стовпців. Для прикладу візьмемо масив b: array [1 .. 7,1 .. 6] of integer. Схематично його можна представити так:


dvumernihyj massiv 

Як видно, такий масив містить 42 елемента (7 × 6). Для доступу до елементу масиву необхідно вказати номер рядка і стовпця, на перетині яких цей елемент розташований. Наприклад, на нашому малюнку елемент масиву b [3,3] має значення 122.
Наступна програма записує в кожен елемент масиву випадкове число і потім виводить всі ці числа на екран.



  1. program massiv10;
  2. uses crt;
  3. const N=5;
  4.          M=4;
  5. var X:array [1..N, 1..M] of integer;
  6.        I, J:integer;
  7. begin
  8. clrscr;
  9. randomize;
  10. for i:=1 to N do
  11.     for j:=1 to M do
  12.     x [I, J]:=random (100);
  13. for i:=1 to N do
  14. begin
  15.   for j:=1 to M do
  16.     write (' ',x[I,J]);
  17.     writeln
  18. end;
  19. readln
  20. end.
 У рядку № 3 і № 4 вкажемо значення для константи «N» і «M».
У рядку № 5 запишемо область двовимірного масиву, що складається з N - рядків і M - стовпців. Він записується також як і одновимірний масив, тільки у квадратних дужках вказується область зберігання двовимірного масиву. Таким чином, наш масив буде складатися з 5 рядків і 4 стовпців
У рядку № 6 записуємо змінні, для зберігання індексів рядка і стовпця.
Рядок № 9,10,11,12 - заповнюємо масив випадковими числами (Усі рядки і стовпці заповняться випадковими числами). Як видно з програми, для того щоб заповнити елементи двовимірного масиву різними значеннями, необхідно використовувати 2 цикли (один цикл вкладається в інший). У зовнішньому циклі лічильником виступає індекс рядка, у внутрішньому циклі - індекс стовпця. Зовнішній цикл виконається один раз тільки коли внутрішній цикл виконається 4 рази. А так як зовнішній цикл повинен виконатися 5 разів, то внутрішній цикл за цей час виконається 20 разів, заповнивши при цьому всі 20 елементів двовимірного масиву.
Рядок № 13 - № 17. Виводимо значення всіх елементів масиву на екран. Причому, як тільки заповнюються всі комірки одного рядка масиву, проиходит перехід на інший рядок, і наступна рядок масиву виводиться на іншому рядку.