- •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.2.2. Пример для варианта 30
Написать программу перестановки минимального и максимального элементов двумерного массива размером NxM. Память для массива выделить динамически.
2.4.2.3. Программа
//Лабораторная работа № 15
//Задание № 2
//Выполнила Петрова А.А.
#include<conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
double **a, tmp; // указатель исходных одвумерного массива a
int i, j, n, m, imin, jmin, imax, jmax;
cout << "Vvedite razmer massiva a: n, m" << endl;
cin >> n >> m;
a = new double*[n]; // Выделение памяти под массив указателей
for(i=0; i<n; i++) // Выделение памяти под соответствующие
a[i] = new double[m]; // этим указателям строки матрицы
for (i=0; i<n; i++) // Ввод двумерного массива
for (j=0; j<m; j++)
{
cout << "Vvedite a[" << i << "][" << j << "]: " ;
cin >> a[i][j];
}
cout << "Мassiv A:" << endl; // Вывод двумерного массива
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw (9) << a[i][j] << " ";
cout << endl;
}
imin=jmin=imax=jmax=0; // Поиск индексов минимального и
for (i=0; i<n; i++) // максимального элементов массива
for (j=0; j<m; j++)
{
if (a[i][j]<a[imin][jmin]) { imin=i;
jmin=j;
}
if (a[i][j]>a[imax][jmax]) { imax=i;
jmax=j;
}
}
tmp = a[imin][jmin]; // Перестановка элементов
a[imin][jmin] = a[imax][jmax];
a[imax][jmax] = tmp;
cout << "Result :" << endl; // Вывод результата
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw (9) << a[i][j] << " ";
cout << endl;
}
cout <<"Нажмите любую клавишу...";
getch();
for(i=0; i<n; i++) // Освобождение выделенной памяти
delete [] a[i];
delete []a;
a = NULL;
return 0;
}
2.4.2.4. Тестирование
2.4.3. Задание 3. Динамические одномерные массивы Викентьева
Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать.
Выполнить указанное в варианте задание и вывести полученный массив на печать.
Порядок выполнения работы:
1. Ввести размер массива;
2. Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);
3.Заполнить массив (можно с помощью датчика случайных чисел);
4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);
5.Напечатать массив(ы)-результат(ы);
6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.
2.4.3.1. Варианты заданий
Таблица 15.3
№ |
Задание |
1 |
Удалить первый четный элемент |
2 |
Удалить первый отрицательный элемент |
3 |
Удалить элемент с заданным ключом (значением) |
4 |
Удалить элемент равный среднему арифметическому элементов массива |
5 |
Удалить элемент с заданным номером |
6 |
Удалить N элементов, начиная с номера K |
7 |
Удалить все четные элементы |
8 |
Удалить все элементы с четными индексами |
9 |
Удалить все нечетные элементы |
10 |
Удалить все элементы с нечетными индексами |
11 |
Добавить элемент в начало массива |
12 |
Добавить элемент в конец массива |
13 |
Добавить К элементов в начало массива |
14 |
Добавить К элементов в конец массива |
15 |
Добавить К элементов, начиная с номера N |
16 |
Добавить после каждого отрицательного элемента его модуль |
17 |
Добавить после каждого четного элемента элемент со значением 0 |
18 |
Добавить по К элементов в начало и в конец массива |
19 |
Добавить элемент с номером К |
20 |
Удалить элементы, имеющие значение больше заданного |
21 |
Удалить N элементов, начиная с номера K |
22 |
Удалить все четные элементы |
23 |
Удалить все элементы с четными индексами |
24 |
Удалить все нечетные элементы |
25 |
Добавить после каждого нечетного элемента элемент со значением 1 |
26 |
Удалить максимальный элемент |
27 |
Удалить минимальный элемент |
28 |
Удалить элементы, имеющие значение меньше заданного |
29 |
Все отрицательные элементы заменить их модулями |
30 |
Удалить элемент с заданным номером |
2.4.3.2. Пример обработки динамического массива для варианта 30
Удалить элемент с заданным номером
2.4.3.3. Программа
2.4.4.4. Тестирование
2.4.4. Задание 4. Динамические двумерные массивы
Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
Выполнить указанное в варианте задание и вывести полученный массив на печать.
Порядок выполнения работы:
1. Ввести размер массива;
2. Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);
3.Заполнить массив (можно с помощью датчика случайных чисел);
4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);
5.Напечатать массив(ы)-результат(ы);
6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.