- •Лабораторная работа 1
- •Лабораторная работа 2 Переменные и константы. Базовые типы. Арифметические операции
- •Операции
- •Ввод и вывод данных
- •Лабораторная работа 3 Циклический и ветвящийся поток управления
- •Алгоритмы разветвляющейся структуры
- •Операторы выбора
- •Операторы циклов
- •Операторы перехода
- •Задание
- •Лабораторная работа 4 Функции. Вызов функций с формальными параметрами, передаваемыми по значению
- •Задание
- •Лабораторная работа 5 Одномерные массивы
- •Задание
- •Лабораторная работа 6 Многомерные массивы
- •Задание
- •Лабораторная работа 7 Функции для работы с символами
- •Лабораторная работа 8 Строки, литералы. Передача строк в функции
- •Строки и литералы
- •Библиотечные функции для работы со строками
- •Выделение памяти под строки
- •Передача строк в качестве параметров функций
- •Задание
- •Лабораторная работа 9 Указатели и динамические массивы
- •Задание
- •Варианты
- •Лабораторная работа 10 Динамические структуры данных
- •Структуры и указатели
- •Задание
- •Лабораторная работа 11 Объектно-ориентированное программирование. Создание классов и объектов
- •Задание
- •Лабораторная работа 12 Знакомство со средой быстрой разработки приложений. Использование компонент библиотеки vcl
- •Лабораторная работа 13 Вывод в форму результатов работы программы
- •Лабораторная работа 14 Изучение обработчиков событий компонентов библиотеки vcl
- •Лабораторная работа 15 Использование таймера для создания различных эффектов
- •Лабораторная работа 16 Рисование в канве. Построение графиков функций
- •Лабораторная работа 17 Изучение принципа работы текстового редактора
- •Список рекомендуемой литературы
- •Оглавление
Задание
Запустите C++Builder.
Составьте программу в соответствии с вашим вариантом задания (таблица), используя массивы. Размер массива задайте сами. Сделайте три варианта программы. В первом элементы массива определяются в программе, во втором задаются пользователем, а в третьем заполняются с помощью генератора случайных чисел. Исходный и конечный массивы выведите на экран.
Выполните компиляцию программы. При наличии ошибок внести исправления.
Сдайте отчет преподавателю.
Варианты
№ |
Задача |
Диапазон изменения значений элементов массива |
1 |
Вывести на экран все четные числа в массиве |
[-100…100] |
2 |
Определить число нулей и число единиц в массиве |
0 или 1 |
3 |
Поменять 0 и 1 ролями |
0 или 1 |
4 |
Определить, сколько значений в массиве превышают среднее значение |
[-50…120] |
5 |
Сгруппировать все ненулевые значения в начале массива |
[-1…4] |
6 |
Вычислить произведение элементов массива |
[-20.5…50.5] |
7 |
Вывести на экран все нечетные числа в массиве |
[-60…20] |
8 |
Найти количество положительных элементов в массиве |
[-30…40] |
9 |
Определить, есть ли в данном массиве два соседних элемента с одинаковыми знаками |
[-100…50] |
10 |
Переставить элементы массива в обратном порядке |
[1…78] |
11 |
Определить, сколько в массиве элементов, которые строго больше обоих своих соседей |
[-3.2…104.2] |
12 |
Сгруппировать все нулевые значения в начале массива |
[-2…1] |
13 |
Найти значение наибольшего элемента в массиве |
[-40…70] |
14 |
Циклически сдвинуть элементы массива вправо |
[1…66] |
15 |
Отсортировать массив по возрастанию |
[-25…50] |
16 |
Поменять у элементов массива знаки |
[-36…70] |
17 |
Вычислить разность элементов массива |
[45.7…157.7] |
18 |
Положительные элементы массива поменять местами с отрицательными |
[-100…200] |
19 |
Переставьте соседние элементы массива |
[-25…80] |
20 |
Найти значение наименьшего элемента в массиве |
[-200…-30] |
21 |
Найти количество отрицательных элементов в массиве |
[-50…30] |
22 |
Найти количество элементов массива, которые больше предыдущего элемента в этом массиве |
[-10…20] |
23 |
Отсортировать массив по убыванию |
[-48…95] |
24 |
Вычислить сумму элементов массива |
[-34.6…23.6] |
25 |
Циклически сдвинуть элементы массива влево |
[-5…24] |
Лабораторная работа 6 Многомерные массивы
Цель работы – познакомиться с многомерными массивами, приобрести навыки написания программ на языке C++ с использованием двумерных массивов.
Теория
Многомерные массивы – массивы, элементами которых являются массивы. Двумерные массивы можно представлять в виде квадратной таблицы, в которой первый индекс элемента означает номер строки, а второй индекс – номер столбца. Например, массив A[3][4] будет состоять из 12 элементов и его можно записать в виде:
A[0][0] A[0][1] A[0][2] A[0][3]
A[1][0] A[1][1] A[1][2] A[1][3]
A[2][0] A[2][1] A[2][2] A[2][3]
Определение многомерного массива:
type имя_массива [К1] [К2] … [КN];
Здесь N – размерность массива, К1 - количество в массиве элементов размерности N-1 каждый и т.д.
Пример
int ARRAY [4] [3] [6];
Трехмерный массив ARRAY состоит из четырех элементов, каждый из которых – двухмерный массив с размерами 3 на 6. В памяти массив ARRAY размещается в порядке возрастания самого правого индекса, т.е. самый младший адрес имеет элемент ARRAY [0] [0] [0], затем идет ARRAY [0] [0] [1] и т.д.
Многомерный массив подобно одномерному массиву может быть проинициализирован с помощью списка инициализаторов. Первыми инициализируются элементы с самыми маленькими индексами.
Пример
int MyArray[3][3][3] = {0,1,2,3,4,5,6,7,8,9,10,11};
Начальные значения получают следующие элементы трёхмерного массива:
MyArray[0][0][0] == 0
MyArray[0][0][1] == 1
MyArray[0][0][2] == 2
MyArray[0][1][0] == 3
MyArray[0][1][1] == 4
MyArray[0][1][2] == 5
MyArray[0][2][0] == 6
MyArray[0][2][1] == 7
MyArray[0][2][2] == 8
MyArray[1][0][0] == 9
MyArray[1][0][1] == 10
MyArray[1][0][2] == 11
Остальные элементы массива получают начальные значения в соответствии со статусом массива (в глобальном массиве значения остальных элементов равны 0, в локальном массиве элементам присваиваются неопределённые значения).
Дополнительные фигурные скобки в инициализаторе позволяют инициализировать отдельные фрагменты многомерного массива. Каждая пара фигурных скобок специфицирует значения, относящиеся к одной определённой размерности. Пустые фигурные скобки не допускаются.
Пример
int MyArray[3][3][3] = {{{0,1}}, {{100},{200,210},{300}},
{{1000},{2000,2100},{3000,3100,3200}}};
В результате выполнения этого оператора определения будут означены следующие элементы массива MyArray:
MyArray[0][0][0] == 0
MyArray[0][0][1] == 1
MyArray[1][0][0] == 100
MyArray[1][1][0] == 200
MyArray[1][1][1] == 210
MyArray[1][2][0] == 300
MyArray[2][0][0] == 1000
MyArray[2][1][0] == 2000
MyArray[2][1][1] == 2100
MyArray[2][2][0] == 3000
MyArray[2][2][1] == 3100
MyArray[2][2][2] == 3200
По аналогии с одномерным массивом, при явной инициализации массива входящего в состав многомерного массива его самая левая размерность может не указываться. Она определяется на основе инициализатора.
Пример
int MyArray[ ][3][3] = {{{0,1}}, {{100},{200,210},{300}},
{{1000},{2000,2100}}};
Транслятор понимает, что речь идёт об определении массива размерности 3*3*3.
Для считывания, вывода на экран и обработки многомерных массивов необходимо использовать вложенные циклы. Первый цикл – по первому индексу, второй цикл – по второму индексу, то есть по всем элементам в строках и т.д.
Пример
const int n=10, m=5;
int A[n][m];
for(int i=0; i<n; ++i)
{
for(int j=0; j<m; ++j)
cout<<A[i][j]<<" ";
cout<<endl;
}