#include <iostream.h> // Програма до задачі про АТС
#include <conio.h>
#include <stdlib.h>
void main() {
randomize();
clrscr();
int y[10];
cout << " Секунда \t Кількість викликів \n";
for (int S = 0, k = 0; k < 10; k++) {
y[k] = random(30);
cout << k+1 << "\t\t" << y[k] << "\n";
S += *(y + k); // або S += y[k];
}
cout << "\n S=" << S;
k = 0;
for (int max = *y; k < 10; k++)
if (*(y + k) > max)
max = *(y + k);
cout << "\n max = " << max;
getch();
}
Задача про створення нового масиву. Утворити масив у, елементи якого обчислюються за формулою yk = ln(k + 1) - 2, де k = 1, 2, ..., 10. Побудувати масив, який складається з від'ємних елементів масиву у. Вивести результати обчислень. Якщо шуканих величин немає, то вивести про це повідомлення.
У наступній програмі змінна n визначає кількість від'ємних елементів у новому масиві.
// Утворення массиву
#include <iostream.h>
#include <math.h>
#define N 10
void main() {
float *y = new float[N];
float *g = new float[N];
int k, n;
cout« " \t ЧМасив Y:\n";
for (k = 0, n = 0; k < 10; k++) {
*( У + k) = l og(k + 1) - 2;
c out << k << "\t" << *(y + k) << "\n";
if (*(y + k) < 0){
*(g + n) = *(y + k);
n++;
}
}
d elete [] y;
cout << "\tMac ив G:\n";
for (k = 0; k < n; k++)
cout << k << "\t" << *(y + k) << "\n";
delete[] g;
}
3. Багатовимірні масиви. Якщо елемент масиву має не один, а декілька індексів, то такі масиви називаються багатовимірними. Прикладами багатовимірних масивів можуть бути різноманітні табличні дані: відомість на зарплату, сторінка в журналі відвідування, таблиця результатів футбольних змагань тощо. Це двовимірні таблиці, яким у математиці відповідає поняття матриці.
Загальний вигляд конструкції опису багатовимірного (N- вимірного) масиву такий:
<тип> <ім'я масиву>[р1>][р2>]... [pN>] ,
де р1 р2, ..., pn задають розміри для кожного виміру.
Кількість індексів визначає вимірність масиву: двовимірні масиви мають два індекси, тривимірні - три і т.д.
Усі багатовимірні масиви можна розглядати й опрацьовувати як одновимірні. Наприклад, тривимірний масив sal[5][20][30] можна інтерпретувати як п'ять масивів розміром 20x30, а їх відповідно — як 20 одновимірних масивів, які містять по 30 елементів.
Надалі, для простоти викладу, розглядатимемо двовимірні масиви.
Елементи двовимірного масиву визначаються іменем масиву та двома індексами: перший індекс означає номер рядка, другий - номер стовпчика, на перетині яких розміщений елемент.
Наприклад, оголосимо масив int doba[24][60]. Він містить елементи цілого типу і складається з 24 рядків і 60 стовпців. Елемент doba[23][59] розміщений на перетині останнього 24-го рядка та останнього 60-го стовпця (нумерація індексів масиву завжди починається з нуля).
Двовимірні масиви компілятор розглядає як послідовність одновимірних. Тому до елементів двовимірного масиву, як і для одновимірних, можна також звертатись через вказівники. У такому випадку це вказівник на вказівник одномірного масиву:
*(*(<назва вказівника>+<зміщення по рядках>)+<зміщення по стовпцях>)
Наприклад, елемент *(*(doba+2)+15) розміщений на перетині 3-го рядка та 16-го стовпця.
Під час оголошення двовимірні масиви можна частково пбо повністю ініціалізувати.
Приклад 2. Оголосимо і проініціалізуємо двовимірний масив цілих чисел
int bal[2][3] = {4, 5, З, 3, 5, 2}
У такому випадку елементам надаються значення так:
b а l[0][0] = 4, bal[0][1] = 5, bal[0][2] = З ,
b а l[1][0] = 3, b а l[1][1] = 5, bal[1][2] = 2.
Двовимірні масиви автоматично ініціалізуються "по рядках", тобто спочатку модифікується зовнішній (правіший) індекс . Надавати значення елементам масиву можна і так:
int bal[2][3] = {{4, 5, 3}, {3, 5, 2}};
або так:
int bal [2][3] = {
4, 5, З,
З, 5, 2
};
Задача про таблицю множення. Скласти програму для занесення в двовимірний масив р таблиці множення двох чисел і виведення масиву на екран.
// Програма Піфагор
#include <iostream.h>
#include <conio.h>
void main() {
const n = 9;
int p[n][n];
clrscr();
for (int і = 0; і < n; i++) {
for (int j = 0; j < n; j++) { // Множення чисел
p[i][j] = ( і + 1) * (j + 1);
cout << p[i][j] << "\t";
}
cout << "\n"; // Для виводу масиву у вигляді таблиці
}
getch();
}