<
  • Главная
Статьи

НОУ ІНТУЇТ | лекція | масиви

  1. Заняття 2. Двовимірні масиви У двовимірного масиву є два індексу: - номер рядка, - номер стовпчика....

Заняття 2. Двовимірні масиви

У двовимірного масиву є два індексу: У двовимірного масиву є два індексу:   - номер рядка,   - номер стовпчика - номер рядка, - номер стовпчика.

Індексація двовимірного масиву представлена ​​на Мал. 6.4 .


Мал.6.4.

Індексація двовимірного масиву

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

  1. Оголосити масив в функції main (): тип_даних імя_массіва [кількість рядків] [кількість стовпців]; double a [5] [9]; // двовимірний масив з 5 рядків, 9 стовпців
  2. Проініціалізувати масив;
  3. Провести обчислення, дослідження.

Способи ініціалізації двовимірного масиву Способи ініціалізації двовимірного масиву   представлені в   таблиці 6 представлені в таблиці 6.4 . Звернемо увагу на те, що числа і відомі заздалегідь і в програмі не фігуруватимуть.

Таблиця 6.4. Способи ініціалізації двовимірного масиву a [n] [m] Частина блок-схеми Частина програми 1. з файлу: double a [n] [m]; int i, j; fstream file; file.open ( "1.txt", ios :: in); for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {file >> a [i] [j]; }} File.close (); 2. по заданій формулі Таблиця 6 : Double a [n] [m]; int i, j; for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {a [i] [j] = f (i, j); }}

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

Висновок двовимірного масиву на екран представлений в табл. 6.5 .

Таблиця 6.5. Висновок двовимірного масиву на екран Частина блок-схеми Частина програми for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {cout << setw ( 6) << a [i] [j]; } Cout << endl; }

Принципи знаходження таких величин, як сума, твір, мінімальне, максимальне значення, представлені в табл. 6.6 .

Таблиця 6.6. Принципи дослідження двовимірного масиву Частина блок-схеми Частина програми 1. знаходження суми: s = 0; for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {s = s + a [i] [j]; }} Cout << "s =" << s << endl; 2. знаходження твори: p = 1; for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {p = p * a [i] [j]; }} Cout << "p =" << p << endl; 3. знаходження середнього арифметичного і кількості елементів: s = 0, k = 0; for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {s = s + a [i] [j]; k = k + 1; }} S = s / k; cout << "s =" << s << endl; cout << "k =" << k << endl; 4. знаходження максимального елемента: max = -10E10; imax = 0; jmax = 0; for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {if (a [i] [j]> max) {max = a [i] [j]; imax = i; jmax = j; }}} Cout << "max =" << max << endl; cout << "imax =" << imax << endl; cout << "jmax =" << jmax << endl; 5. знаходження мінімального елемента: min = 10E10; imin = 0; jmin = 0; for (i = 0; i <n; i = i + 1) {for (j = 0; j <m; j = j + 1) {if (a [i] [j] <min) {min = a [i] [j]; imin = i; jmin = j; }}} Cout << "min =" << min << endl; cout << "imin =" << imin << endl; cout << "jmin =" << jmin << endl; 6. поміняти елементи Таблиця 6 і місцями: tmp = a [i1] [j1]; a [i1] [j1] = a [i2] [j2]; a [i2] [j2] = tmp; 7. поміняти місцями рядки і : For (j = 0; j <m; j = j + 1) {tmp = a [i1] [j]; a [i1] [j] = a [i2] [j]; a [i2] [j] = tmp; } 8. поміняти місцями стовпчики і : For (i = 0; i <n; i = i + 1) {tmp = a [i] [j1]; a [i] [j1] = a [i] [j2]; a [i] [j2] = tmp; } 9. обчислення формули : S = 0; for (i = 0; i <n; i = i + 1) {s = s + f (a [i] [j], i, j); } Cout << "s =" << s << endl;

Умови для дослідження квадратної матриці (кількість рядків і стовпців збігається):

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

Приклад 3. Масив Приклад 3 заданий формулою . Знайти суму елементів у другому рядку, поміняти місцями першу і третю рядки, знайти твір по формулі .

Рішення. Дану задачу можна розбити на кілька етапів:

  1. задати масив за формулою і вивести його на екран;
  2. знайти суму елементів у другому рядку і вивести її на екран;
  3. поміняти місцями першу і третю рядки;
  4. вивести на екран змінений масив;
  5. знайти твір по формулі і вивести його на екран.

Кожен зазначений етап вирішується за допомогою циклів. Всі цикли доцільно використовувати з передумовою (в програмі - оператор for). На першому етапі слід організувати двовимірний цикл по Кожен зазначений етап вирішується за допомогою циклів , по , Тому що необхідно задати значеннями і вивести на екран весь масив. На другому етапі перед циклом необхідно задати , А в тілі циклу по налічувати значення . індекс задаємо як 1, що відповідає другому рядку. Слід зазначити, що не можна вважати суму з якоїсь певної рядку (стовпці, діагоналі) всередині двовимірного циклу, тому що в цьому випадку буде більше в рази (залежить від кількості рядків / стовпців) .На третьому етапі індекси рядків беремо - для першого рядка, - для третього рядка. Заміна рядків організовується в одновимірному циклі по . На четвертому етапі матриця а повинна бути відображена на екрані. Нам потрібно показати, що заміна рядків виконана верно.На п'ятому етапі перед циклом слід задати , А в тілі циклу налічувати твір. Цикл організуємо одновимірний по від 0 до 2 включно, тому що згідно з формулою змінюється тільки .

Блок-схема для прикладу 3 приведена на Мал. 6.5 .


Мал.6.5.

Блок-схема для прикладу 3

Код програми (Visual Studio) з оператором for:

// proga29.cpp: визначає точку входу для консольного застосування. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; int main () {double a [6] [8]; double S, tmp, P; int i, j; cout << "Massiv a:" << endl; for (i = 0; i <6; i = i + 1) {for (j = 0; j <8; j = j + 1) {a [i] [j] = 3.0 * i-5.0 * j; cout << setw (5) << a [i] [j]; } Cout << endl; } S = 0; for (j = 0; j <8; j = j + 1) {S = S + a [1] [j]; } Cout << "S =" << S << endl; for (j = 0; j <8; j = j + 1) {tmp = a [0] [j]; a [0] [j] = a [2] [j]; a [2] [j] = tmp; } For (i = 0; i <6; i = i + 1) {for (j = 0; j <8; j = j + 1) {cout << setw (5) << a [i] [j ]; } Cout << endl; } P = 1; for (i = 0; i <= 2; i = i + 1) {P = P * (a [i] [1] -a [i] [0]); } Cout << "P =" << P << endl; return 0; } Результат виконання програми:

короткі підсумки

Найпоширенішими видами масивів є одномірні і двовимірні масиви. Статичні масиви легко задавати і використовувати в програмі. Цикли роблять роботу з масивами зручною і доступною.

питання

  1. Що таке масив?
  2. Перерахуйте види масивів.
  3. Що таке індекс?
  4. Як домогтися відображення масиву на екрані у вигляді рівної таблиці?

вправи

  1. Одновимірна масив задати в програмі. Знайти максимальний з негативних елементів і поміняти його місцями з останнім.
  2. Одновимірна масив задати з клавіатури. Знайти суму негативних, кількість позитивних і твір ненульових елементів.
  3. Одновимірна масив задати числами. Знайти середнє арифметичне елементів, що задовольняють умові .
  4. Одновимірна масив задати за формулою . Знайти кількість елементів, що задовольняють умові , Мінімальний елемент.
  5. матрицю задати за формулою . Знайти новий одновимірний масив з творів елементів кожного рядка матриці . Знайти максимальний елемент серед позитивних елементів матриці . Замінити третій елемент в першому рядку матриці на знайдений максимальний елемент.
  6. матрицю задати за формулою . Знайти суму позитивних елементів над головною діагоналлю матриці. Знайти максимальний елемент серед негативних елементів 4-ої рядка. Замінити знайдений максимальний елемент значенням суми.
  7. матрицю задати за формулою . Поміняти місцями першу і останню рядки матриці. підрахувати для елементів кожного рядка матриці за формулою: , де - номер рядка.
Що таке індекс?
Як домогтися відображення масиву на екрані у вигляді рівної таблиці?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью