Масиви. Частина 3. Приклади розв’язку найпоширеніших задач з одновимірними масивами
Дана тема базується на темі: Масиви. Одновимірні масиви. Ініціалізація масиву.
Зміст
- 1. Знаходження сум та добутків елементів масиву. Приклади
- 2. Знаходження максимального (мінімального) елементу масиву. Приклади
- 3. Сортування масиву методом вставки
- 4. Пошук елементу в масиві. Приклади
- Зв’язані теми
Пошук на інших ресурсах:
1. Знаходження сум та добутків елементів масиву. Приклади
Приклад 1. Задано масив A, що містить 100 цілих чисел. Знайти суму елементів цього масиву. Фрагмент коду, що розв’язує цю задачу.
// сума елементів масиву A зі 100 цілих чисел int A[100]; int suma; // змінна, що містить суму int i; // допоміжна змінна // ввід масиву A // ... // Обчислення суми suma = 0; // обнулити суму for (i=0; i<100; i++) suma += A[i];
Перебір усіх елементів масиву виконується в циклі for. Змінна sum зберігає результуюче значення суми елементів масиву. Змінна i є лічильником, який визначає індекс елементу масиву A[i].
Приклад 2. Задано масив B, що містить 20 дійсних чисел. Знайти суму елементів масиву, що лежать на парних позиціях. Вважати, що позиції 0, 2, 4 і т.д. є парними.
// сума елементів масиву B // що лежать на парних позиціях float B[20]; float sum; // змінна, що містить суму int i; // допоміжна змінна // ввід масиву // ... // Обчислення суми sum = 0; // обнулити суму for (i=0; i<20; i++) if ((i%2)==0) sum += B[i];
У цьому прикладі вираз
(i%2)==0
визначає парну позицію (парний індекс) масиву B. Якщо потрібно взяти непарні позиції, то потрібно написати
(i%2)==1
Приклад 3. Задано масив, що містить 50 цілих чисел. Знайти суму додатніх елементів масиву.
// сума додатніх елементів масиву int A[50]; int sum; // змінна, що містить суму int i; // допоміжна змінна // ввід масиву // ... // Обчислення суми sum = 0; // обнулити суму for (i=0; i<50; i++) if (A[i]>0) sum = sum + A[i];
Приклад 4. Задано масив з 50 цілих чисел. Знайти добуток елементів масиву, що є непарними числами.
// добуток непарних елементів масиву int A[50]; int d; // змінна, що містить добуток int i; // допоміжна змінна // ввід масиву // ... // Обчислення добутку d = 1; // початкове встановлення добутку for (i=0; i<50; i++) if ((A[i]%2)==1) d = d * A[i];
Щоб визначити, чи елемент масиву A[i] є непарним, потрібно перевірити умову
(A[i]%2)==1
Якщо умова виконується, то елемент масиву є непарне число.
2. Знаходження максимального (мінімального) елементу масиву. Приклади
Приклад 1. Задано масив з 30 дійсних чисел. Знайти елемент (індекс), який має максимальне значення в масиві.
// пошук позиції (індексу), що містить максимальне значення float B[30]; float max; // змінна, що містить максимум int index; // позиція елементу, що містить максимальне значення int i; // допоміжна змінна // ввід масиву // ... // пошук максимуму // встановити максимум як 1-й елемент масиву index = 0; max = B[0]; for (i=1; i<30; i++) if (max<B[i]) { max = B[i]; // запам'ятати максимум index = i; // запам'ятати позицію максимального елементу }
У вищенаведеному прикладі змінна max містить максимальне значення. Змінна index містить позицію елементу, що має максимальне значення. На початку змінній max присвоюєтья значення першого елементу масиву. Потім, починаючи з другого елементу, відбувається проходження всього масиву в циклі for. Одночасно перевіряється умова
if (max<B[i])
Якщо умова виконується (знайдено інший максимум), тоді нове значення максимуму фіксується у змінних max та index.
Вищенаведений приклад знаходить тільки один максимум. Однак, в масивах може бути декілька максимальних значень. У цьому випадку для збереження позицій (індексів) максимальних значень потрібно використовувати додатковий масив як показано у наступному прикладі.
Приклад 2. Задано масив з 50 цілих чисел. Знайти позицію (позиції) елементу, що має мінімальне значення. Якщо таких елементів декілька, сформувати додатковий масив індексів.
// пошук позицій (індексів), що містять мінімальне значення int A[50]; int min; // змінна, що містить мінімальне значення int INDEXES[50]; // позиції елементів, що містять мінімальне значення int n; // кількість однакових мінімальних значень int i; // допоміжна змінна // ввід масиву // ... // 1. Пошук мінімального значення // встановити мінімум як 1-й елемент масиву min = A[0]; for (i=1; i<50; i++) if (min>A[i]) min = A[i]; // запам'ятати мінімальне значення // 2. Формування масиву n = 0; // онулити лічильник в масиві INDEXES for (i=0; i<50; i++) if (min == A[i]) { n++; // збільшити кількість елементів в INDEXES INDEXES[n-1] = i; // запам'ятати позицію } listBox1->Items->Clear(); // 3. Вивід масиву INDEXES в listBox1 for (i=0; i<n; i++) listBox1->Items->Add(INDEXES[i].ToString());
У вищенаведеному лістингу спочатку шукається мінімальне значення min.
На другому кроці формується масив INDEXES, в якому кількість елементів записується в змінну n. Відбувається пошук мінімального значення в масиві A з одночасним формуванням масиву INDEXES.
На третьому кроці наведено приклад, як вивести масив INDEXES в елемент управління listBox1(ListBox).
3. Сортування масиву методом вставки
Приклад. Дано масив A з 10 цілих чисел. Здійснити сортування елементів масиву у спадному порядку з допомогою методу вставки.
// сортування масиву методом вставки int A[10]; int i,j; // допоміжні змінні - лічильники int t; // допоміжна змінна // ввід масиву A // ... // сортування for (i=0; i<9; i++) for (j=i; j>=0; j--) if (A[j]<A[j+1]) { // поміняти місцями A[j] та A[j+1] t = A[j]; A[j] = A[j+1]; A[j+1] = t; }
4. Пошук елементу в масиві. Приклади
Приклад 1. Визначити, чи знаходиться число k в масиві M з 50 цілих чисел.
// визначення наявності заданого числа в масиві чисел int M[50]; int i; int k; // шукане значення bool f_is; // результат пошуку, true - число k є в масиві, інакше false // ввід масиву M // ... // ввід числа k // ... // пошук числа в масиві f_is = false; for (i=0; i<50; i++) if (k==M[i]) { f_is = true; // число знайдене break; // вихід з циклу, подальший пошук не має сенсу } // вивід результату if (f_is) label1->Text = "Число " + k.ToString() + " є в масиві M."; else label1->Text = "Числа " + k.ToString() + " немає в масиві M.";
Приклад 2. Знайти всі позиції входження числа k в масиві M з 50 цілих чисел.
// визначення всіх позицій заданого числа в масиві чисел int M[50]; // масив чисел int i; // допоміжна змінна int k; // шукане значення int INDEXES[50]; // шуканий масив позицій входження числа k int n; // кількість знайдених позицій або кількість елементів в масиві INDEXES // ввід масиву M // ... // ввід числа k // ... // пошук числа k в масиві M і одночасне формування масиву INDEXES n = 0; for (i=0; i<50; i++) if (k==M[i]) { // число знайдено n++; INDEXES[n-1] = i; } // вивід результату в listBox1 listBox1->Items->Clear(); for (i=0; i<n; i++) listBox1->Items->Add(INDEXES[i].ToString());
Зв’язані теми
- Масиви. Частина 1. Визначення масиву. Одновимірні масиви. Ініціалізація масиву
- Масиви. Частина 2. Двовимірні масиви. Масиви рядків. Багатовимірні масиви