В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Мята04
Мята04
19.01.2022 12:05 •  Информатика

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

Показать ответ
Ответ:
joshwa77
joshwa77
06.12.2020 23:40

Мотиви, ТЕОРЕТИЧНІ ВІДОМОСТІ

Багатовимірні масиви

Двовимірний масив (матриця) можна представити як одновимірний масив, кожний елемент якого – масив. Тривимірний масив – це масив, кожний елемент якого являє собою двовимірну матрицю.

char Matrix2D[6][9]; // Двовимірний масив 6x9 елементів

unsigned long Arr3D[4][2][8]; // Тривимірний

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

int Mass[3][2][4] = {1,2,3,4,5,6,7,8,9,10,11,12,

13,14,15,16,17,18,19,20,21,22,23,24};

Рекомендується для наочності групувати дані за до проміжних фігурних дужок:

int Mass[3][2][4]={{{l,2,3,4},{5,6,7,8}},

{{9,10,ll,12},{13,14,15,16}},

{{17,18,19,20},{21,22,23,24}};

Для багатовимірних масивів при ініціалізації дозволяється опускати лише величину першої розмірності:

int main()

{

char x[][3]={{9,8,7},{6,5,4},{3,2,1}};

for(int i=0; i<3; i++)

{

for(int j=0; j<3; j++)

printf("%d ", (int)x[i][j]);

printf("\n");

}

return 0;

}

Динамічне виділення пам’яті під масиви

Змінні у програмах повинні розміщатися в одному з трьох місць: в області даних програми, в області стеку, в області вільної пам’яті (купи).

Кожній змінній у програмі може відводитися пам’ять або статично (в момент завантаження), або динамічно (у процесі виконання програми).

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

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

Виділення пам’яті можна здійснювати двома

б: функції malloc(), calloc(), free(). Ці функції описані у заголо­вочному файлі <stdlib.h> або <malloc.h>

Функція malloc(size) виділяє size байтів з купи. У випадку успішного виділення пам’яті покажчик встановлюється на виділений блок пам’яті. При невдалому виділенні пам’яті функція повертає NULL.

Функція calloc(num, size), окрім виділення області пам’яті під масив об’єктів, ще здійснює ініціалізацію елементів масиву нульовими значеннями. Тут num вказує, скільки елементів буде зберігатися у масиві, а size – розмір кожного елемента у байтах.

Наприклад, якщо необхідно виділити пам’ять для масиву з n цілих чисел типу long, це можна зробити за до оператора:

long * fptr = (long *)malloc(n*sizeof(long));

Якщо необхідно виділити пам’ять під двовимірний масив розмірності m×n, це можна зробити за до оператора

float* fptr = (float*)malloc(n*m*sizeof(float));

Функція free(*block) звільняє пам’ять, на яку вказує покажчик block.

б: функції new(), delete(). Ці функції з’явилися в С++.

malloc(), calloc(), free() працюють і в С, і в С++. Нові опе­ра­то­ри гнучкого розподілення пам’яті new() i delete() мають додаткові можли­вості.

Якщо оператори malloc(), calloc() повертають пустий покаж­чик, який далі пере­творюється до потрібного типу, то оператор new() повертає покаж­чик на той тип, для якого виділяється пам’ять, і додаткових перетворень не потребує.

Синтаксис операторів:

тип *ім’я_масиву = new тип [тип число];

. . .

delete[] ім’я;

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота