Вы находитесь на странице: 1из 6

Змін. Лист № докум.

Підпис Дата
121.1151.25.02
Літ. Аркуш Аркушів
Разработка и реализация
Студент Штопенко С.А 16.02 1 5
программ с использованием
многомерных динамических НУК ім. адм. Макарова
Викладач Макарова Л.Н
массивов
Лабораторная работа № 1

Тема: Разработка и реализация программ для работы с указателями и


одномерными динамическими массивами

Цель работы: овладение навыками составления программ для работы с


указателями и одномерными динамическими массивами и выполнение их в
Visual Studio IDE.

Задание № 1.1

Пусть имеется следующий фрагмент программы, представленный в


вариантах (см. Табл. 2.1). Объясните, как изменится массив после его
выполнения, при следующем начала программы (Указание: n равно номеру
варианта).
int* form(int& n) {
int N = 25;
n = 10 + N % 10;
int* a = new int[n];
*a = N;
for (int i = 1; i < n; i++) *(a + i) = *(a + i - 1) + 1;
return a;
}

int main()
{
int N = 25;
int* a, n; a = form(n);
int** p = new int* [n];
for (int i = 0; i < n; i++)
{
p[i] = (a + i);
*p[i] = *p[i] + N;
}
}

Программа реализует сначала формирования линейного массива

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Предоставленный фрагмент программы прибавляет к каждому элементу


массива число N

51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

Лис
121.1151.25.01 т
Змін.. Лист № докум. Підпис Дата
Лис
121.1151.25.01 т
Змін.. Лист № докум. Підпис Дата
Задание № 1.2

Составить программу, которая заполняет динамический одномерный массив


с помощью случайных чисел, затем меняет массив, согласно задачам,
которые приведены в таблице 2.2 и выполнить ее в Visual Studio IDE

Удалить все отрицательные двухзначные элементы массива.

Примечание:
a. Вывести массив до и после модификации.
b. При обращении к элементам массива использовать указатели.

Решение

1. Постановка задачи
Составить программу, которая заполняет динамический одномерный
массив с помощью случайных чисел, затем меняет массив, удаляя все
отрицательные двухзначные элементы массива и выполнить ее в Visual
Studio IDE

2. Алгоритм решения задачи


1. Выделить динамическую память для элементов массива
2. Заполнить массив случайными числами.
3. Вывести элементы массива на экран.
4. В новый массив p записать только те элементы из исходного
массива, которые больше -99 и меньше -9 и вывести на экран.
5. Освободить память, которая была выделена под массив p

3. Код программы
#include <iostream>
#include <cmath>
#include <time.h>

using namespace std;

int* form(int& n) {
cout << "Введите n=";
cin >> n;
cout << "Первоначальный массив : ";
int* a = new int[n];
for (int i = 0; i < n; i++) {
*(a + i) = -rand() % 100 + rand() % 100;
cout << *(a + i) << " ";
}
cout << endl;

Лис
121.1151.25.01 т
Змін.. Лист № докум. Підпис Дата
return a;
}

Лис
121.1151.25.01 т
Змін.. Лист № докум. Підпис Дата
int main()
{
setlocale(LC_ALL, "");
srand(time(0));
int* a, n; a = form(n);
int** p = new int* [n];
cout << "Изменненный массив : ";
for (int i = 0; i < n; i++)
{
int t = *(a + i);
if (t > -99 && t < -9) continue;
p[i] = (a + i);
cout << *p[i] << " ";
}
cout << endl;
delete[] p;
}

4. Результат работы программы:

1)Введите n=10

2)Первоначальный массив: 22 -14 -29 36 66 0 -82 -16 -35 -14

3)Изменённый массив: 22 36 66 0

Вывод: Овладел навыками составления программ для работы с указателями


и одномерными динамическими массивами и выполнил их в Visual Studio
IDE.

Лис
121.1151.25.01 т
Змін.. Лист № докум. Підпис Дата