- •1. Краткие теоретические сведения
- •1.1. Понятие указателя
- •1.2. Объявление указателя
- •1.3. Операции над указателями
- •1.4. Передача параметра по ссылке
- •1.5. Динамическое выделение памяти
- •1.5.1. Динамическое размещение одномерного массива
- •1.5.2. Динамическое размещение двухмерного массива
- •1.5.3. Динамические массивы
- •1.5.4. Формирование динамических массивов с использованием библиотечных функций
- •1.5.5. Формирование динамических массивов с использованием операций new и delete
- •1.5.6. Динамические массивы
- •1.5.7. Динамические массивы
- •1.5.8. Динамические массивы
- •1.5.9. Освобождение выделенной динамической памяти.
- •1.5.10. Описание динамической строки
- •1.5.11. Объявление динамического массива
- •1.6. Связь указателей и массивов
- •1.7. Массивы указателей
- •1.8. Массивы и функции
- •1.9. Указатель на символьную строку
- •Второй пример
- •Увеличение указателя на символьную строку
- •Уменьшение количества операторов
- •Сканирование символьной строки
- •1.10. Заполнение массивов случайными числами
- •1.12. Примеры программирования задач
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Динамические одномерные массивы
- •2.4.1.1. Варианты заданий
- •2.4.1.2. Пример обработки динамического массива для варианта 30
- •2.4.1.3. Программа
- •Int *a, *b; // указатели исходных одномерных массивов a и b
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Динамические двумерных массивы
- •2.4.2.1. Варианты заданий
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Динамические одномерные массивы Викентьева
- •2.4.3.1. Варианты заданий
- •2.4.4.1. Варианты заданий
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие указателя 2
2.4.1.2. Пример обработки динамического массива для варианта 30
Заданы два массива А(5) и В(4). Первым на печать вывести массив, содержащий наименьшее значение. Напечатать также это значение и его порядковый номер.
2.4.1.3. Программа
//Лабораторная работа № 15
//Задание № 1
//Выполнила Петрова А.А.
#include<conio.h>
#include<iostream.h>
int main ()
// пример программы обработки динамических массивов
{
int n, // количество элементов в исходном массиве a
m; // количество элементов в исходном массиве b
Int *a, *b; // указатели исходных одномерных массивов a и b
int i, j; //счетчики циклов
int imina, //индекс минимального элемента массива a
jminb; //индекс минимального элемента массива b
int mina, //минимальный элемент массива a
minb; //минимальный элемент массива b
// формирование исходных массиваов
cout << "Введите количество элементов массива a: "; cin >> n;
a=new int[n];//динамическое выделение памяти для массива a
cout <<"Введите " <<n <<" элемента (ов) массива a: "<< endl;
for (i=0;i<n;i++) cin >> a[i];
cout << "Введите количество элементов массива b: "; cin >> m;
b=new int[m];//динамическое выделение памяти для массива b
cout <<"Введите " <<m <<" элемента (ов) массива b: "<< endl;
for (j=0;j<m;j++) cin >> b[j];
// Контрольный вывод исходных массиваов
cout << "Исходный массив a: " << endl;
for (i=0;i<n;i++) cout <<" a[ " <<i << " ] =" <<a [i] <<" ";
cout << endl ;
cout << "Исходный массив b: " << endl;
for (j=0;j<m;j++) cout <<" b[ " <<j << " ] =" <<b [j] <<" ";
cout << endl ;
//поиск минимального элемента массива a
imina=0;
mina=a[0];
for (i=1;i<n;i++)
{
if (a[i]<mina){mina=a[i];imina=i;}
}
//поиск минимального элемента массива b
jminb=0;
minb=b[0];
for (j=1;j<m;j++)
{
if (b[j]<minb){minb=b[j];jminb=j;}
}
cout <<"imina = "<< imina << " mina = "<< mina << endl;
cout <<"jminb = "<< jminb << " = "<< minb << endl;
if (mina < minb)
{cout << "Наименьшее значение в массиве a"<< endl;
for (i=0;i<n;i++) cout <<" a[ " <<i << " ] =" <<a [i] <<" ";
cout << endl;
}
else
{cout << "Наименьшее значение в массиве b"<< endl;
for (j=0;j<m;j++) cout <<" b[ " <<j << " ] =" <<b [j] <<" ";
cout << endl;
}
cout <<"Нажмите любую клавишу...";
getch() ;
delete []a; // освобождение динамической памяти
delete []b;// освобождение динамической памяти
return 0;
}
2.4.1.4. Тестирование
2.4.2. Задание 2. Динамические двумерных массивы
Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.
2.4.2.1. Варианты заданий
Таблица 15.1
№ |
Задание |
1 |
Определить количество положительных элементов, расположенных ниже побочной диагонали матрицы. |
2 |
Определить количество отрицательных элементов, расположенных выше главной диагонали матрицы. |
3 |
Определить сумму отрицательных элементов, расположенных выше побочной диагонали матрицы. |
4 |
Определить произведение положительных элементов, расположенных ниже главной диагонали матрицы. |
5 |
Определить сумму элементов, расположенных на главной диагонали матрицы, и произведение элементов, расположенных на побочной диагонали матрицы. |
6 |
Определить количество четных элементов, расположенных на главной и побочной диагоналях. |
7 |
Найти максимальный среди элементов, лежащих ниже побочной диагоали. |
8 |
Найти минимальный среди элементов, лежащих выше главной диагонали. |
9 |
Найти максимальный среди элементов, лежащих выше побочной диагонали. |
10 |
Найти минимальный среди элементов, лежащих ниже главной диагонали. |
11 |
Найти в каждой строке матрицы максимальный элемент. |
12 |
Найти в каждом столбце матрицы минимальный элемент. |
13 |
Найти сумму элементов, расположенных в четных (по номеру) строках матрицы. |
14 |
Найти произведение элементов, расположенных в нечетных (по номеру) столбцах матрицы. |
15 |
Подсчитать сумму четных элементов и произведение нечетных элементов матрицы. |
16 |
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые, и значение 1 − в противном случае. |
17 |
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если элементы k-й строки матрицы упорядочены по убыванию, и значение 0 − в противном случае. |
18 |
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0 − в противном случае. |
19 |
Задана матрица размером NxM. Определить количество «особых» элементов матрицы, считая элемент «особым», если он больше суммы остальных элементов своего столбца. |
20 |
Задана матрица размером NxM. Определить количество «особых» элементов матрицы, считая элемент «особым», если в строке слева от него находятся элементы, меньшие его, а справа – большие. |
21 |
Задана символьная матрица размером NxM. Определить количество различных элементов матрицы (т.е. повторяющиеся элементы считать один раз). |
22 |
Дана матрица размером NxM. Упорядочить ее строки по возрастанию их первых элементов. |
23 |
Дана матрица размером NxM. Упорядочить ее строки по возрастанию суммы их элементов. |
24 |
Дана матрица размером NxM. Упорядочить ее столбцы по возрастанию их наименьших элементов. |
25 |
Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали. |
26 |
Для матрицы размером NxM вывести на экран все седловые точки. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или наоборот. |
27 |
В матрице размером NxM переставить строки так, чтобы на главной диагонали матрицы были расположены элементы, наибольшие по абсолютной величине. |
28 |
В матрице размером NxM найти максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше главной диагонали. |
29 |
В матрице размером NxM поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. |
30 |
В матрице размером NxM поменять местами минимальный и максимальный элементы. |
31 |
Из матрицы размером NxM получить матрицу размером (N–1) x (M–1) путем удаления из исходной матрицы строки и столбца, на пересечении которых расположен элемент с наибольшим по модулю значением |