Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Belova_T_M_Programmirovanie_na_S_Builder

.pdf
Скачиваний:
226
Добавлен:
15.03.2016
Размер:
2.15 Mб
Скачать

Программирование с использованием одномерных массивов

111

максимальный – на последнем месте, то поменять местами эти элементы.

11.Дан массив из 15 вещественных чисел. Если минимальный элемент массива предшествует максимальному элементу, то подсчитать сумму максимального и минимального элементов, иначе вычислить разность.

12.Дан массив из 15 вещественных чисел. Если максимальный элемент массива предшествует минимальному элементу, то подсчитать произведение минимального и максимального элементов, иначе среднее арифметическое.

13.Дан массив b из 15 целых чисел. Найти наименьшее из чисел, расположенных от начала массива до максимального элемента массива b.

14.Дан массив из 10 целых чисел. Если минимальный элемент массива расположен на 4 месте, а максимальный – рядом (слева или справа), то подсчитать среднее арифметическое максимального и минимального элементов массива.

15.Дан массив из 15 целых чисел. Если минимальный элемент массива меньше максимального в 3 раза, то каждый элемент массива увеличить в 3 раза.

16.Дан массив b из 15 целых чисел. Найти наибольшее из чисел, расположенных от минимального элемента до конца массива b.

17.Дан массив из 15 целых чисел. Если минимальный или максимальный элемент равен 0, то обнулить элементы массива, предшествующие минимальному элементу в массиве.

18.Дан массив из 15 целых чисел. Если минимальный элемент меньше максимального в 2 раза, то все элементы, предшествующие максимальному элементу, установить равными минимальному элементу.

19.Дан массив из 10 целых чисел. Если максимальный элемент находится на 2 месте, а минимальный элемент − на 5 месте, то все элементы, расположенные от минимального элемента и до конца массива, установить равными максимальному элементу.

20.Даны натуральное число n и целочисленный массив а[15]. Определить среднее арифметическое тех чисел, которые кратны n.

21.Дан целочисленный массив а[15]. Найти наименьшее из чисел, значения которых кратны 3, в последовательности чисел а[15]. Пре-

112

Программирование линейных алгоритмов в системе C++Builder

дусмотреть ситуацию, когда таких чисел в последовательности нет.

22.Дан целочисленный массив а[10]. Найти наибольшее из чисел, значения которых кратны 5 и не кратны 7, в последовательности чисел а[10]. Предусмотреть ситуацию, когда таких чисел в последовательности нет.

23.Дан массив b из 15 целых чисел. Найти наибольшее из чисел, расположенных от начала массива до минимального элемента массива b.

24.Дан массив из 10 вещественных чисел. Максимальный элемент массива увеличить в 2 раза, а минимальный элемент уменьшить в 2 раза. Вывести преобразованный массив.

25.Дан массив из 15 вещественных чисел. Максимальный элемент массива заменить суммой минимального и максимального элемен-

тов, а минимальный элемент разностью максимального и минимального элементов. Вывести преобразованный массив.

26.Дан массив из 10 целых чисел, среди которых могут быть одинаковые числа. Установить все элементы, имеющие наименьшее значение, равными среднему арифметическому значению положительных элементов массива. Предусмотреть ситуацию, когда в массиве положительных чисел нет.

27.Дан массив из 15 целых чисел, значения которых лежат в диапазоне от 1 до 1000. Определить индекс первого элемента тройки элементов массива, сумма которых максимальна. Например, 1, 2 и 3 элементы, 4, 5 и 6 элементы и т.д.

28.Дан массив из 20 целых чисел. Определить индекс первого элемента пары элементов массива, сумма которых максимальна. Например, 1 и 2 элементы, 3 и 4 элементы и т.д.

29.Дан массив из 20 целых чисел. Определить индекс первого элемента пары элементов массива, произведение которых минимально. Например, 1 и 2 элементы, 3 и 4 элементы и т.д.

30.Дан массив из 15 целых чисел, значения которых лежат в диапазоне от 1 до 1000. Определить индекс первого элемента тройки элементов массива, сумма которых минимальна. Например, 1, 2 и 3 элементы, 4, 5 и 6 элементы и т.д.

Задачи второго уровня сложности

1.Даны натуральное число n и целые числа а1,...,аn. Подсчитать максимальную длину последовательности подряд расположенных эле-

Программирование с использованием одномерных массивов

113

ментов, имеющих одинаковые значения.

2.Даны натуральное число n и целые числа а1,...,аn. Подсчитать максимальную длину последовательности подряд расположенных элементов, каждый из которых больше предыдущего.

3.Даны натуральное число n и целочисленный массив а[n], среди элементов которого есть одинаковые. Создать массив b из различных элементов массива а.

4.Даны натуральное число n и целые числа а1,...,аn, среди которых могут быть как положительные, так и отрицательные числа. Создать массив b, в начале которого поместить отрицательные числа, а в

конце положительные.

5.Даны натуральное число n и символьный массив а[n], в котором хранятся латинские буквы и арабские цифры. Создать символьный массив b, поместив в него только латинские буквы из массива а.

6.Даны натуральное число n и символьный массив а[n], в котором хранятся латинские буквы и арабские цифры. Создать целочисленный массив b, поместив в него только цифры из массива а.

7.Даны натуральное число n и целочисленный массив а[n]. Упорядочить массив а по возрастанию.

8.Даны натуральное число n и целочисленный массив а[n]. Упорядочить массив а по убыванию.

9.Даны натуральное число n и символьный массив а[n], в котором хранятся латинские буквы и арабские цифры. Создать символьный

массив b, поместив в начале которого числа, а в конце латинские буквы из массива а.

10.Даны натуральное число n и целочисленный массив а[n]. состоящий только из 0 и 1. Определить самое большое количество подряд идущих единиц и вывести на экран индексы начала и конца этого диапазона.

11.Даны натуральное число n и целочисленный массив а[n]. состоящий только из 0 и 1. Определить самое большое количество подряд идущих нулей и вывести на экран индекс начала и количество нулей самой длинной серии нулей.

12.Даны натуральное число n и целочисленный массив а[n]. Вывести значение true для случая, если массив а[n] представляет знакочередующуюся последовательность, и false − в противном случае. Последовательность является знакочередующейся, если знак оче-

114

Программирование линейных алгоритмов в системе C++Builder

редного элемента противоположен знакам его соседей.

13.Даны натуральное число n и целочисленные массивы а[n] и b[n], упорядоченные по возрастанию (предыдущий элемент меньше последующего). Требуется получить третий упорядоченный по возрастанию массив, путем слияния первых двух.

14.Даны натуральное число n и целочисленный массив а[n]. Вывести значение true для случая, если массив а[n] представляет возрастающую или убывающую последовательность, и false − в противном случае.

15.Даны натуральное число n и целые числа а1,...,аn. Подсчитать максимальную длину последовательности подряд расположенных элементов, имеющих отрицательные значения. Возможно, что таких чисел в массиве а нет.

16.Даны натуральное число n и целые числа а1,...,аn. Подсчитать максимальную длину последовательности подряд расположенных элементов, имеющих положительные значения. Возможно, что таких чисел в массиве а нет.

17.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которых нет в массиве b. Возможно, что таких чисел в массиве а и в массиве b нет.

18.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые есть в массиве b. Возможно, что таких чисел в массиве а и в массиве b нет.

19.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые встречаются в массиве b более одного раза. Возможно, что таких чисел в массиве а и в массиве b нет.

20.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые больше минимального элемента среди четных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

21.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые меньше максимального элемента среди нечетных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

22.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые меньше максимально-

Программирование с использованием одномерных массивов

115

го элемента среди чисел массива b, значения которых кратны 3. Возможно, что таких чисел в массиве а и в массиве b нет.

23.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые больше минимального элемента среди чисел массива b, значения которых не кратны 7. Возможно, что таких чисел в массиве а и в массиве b нет.

24.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые больше суммы минимального и максимального элементов среди чисел массива b, значения которых кратны 5. Возможно, что таких чисел в массиве а и в массиве b нет.

25.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые меньше произведения минимального и максимального элементов среди нечетных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

26.Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые меньше среднего арифметического минимального и максимального элементов среди четных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

27.Даны натуральное число n и целочисленный массив а[n], элементами которого являются двузначные числа. Из массива а выбрать элементы, у которых старшая цифра ровно в 2 раза меньше младшей цифры. Возможно, что таких чисел в массиве а нет.

28.Даны натуральное число n и целочисленный массив а[n], элементами которого являются двузначные числа. Из массива а выбрать элементы, значения которых не принадлежат диапазону [50,60]. Возможно, что таких чисел в массиве а нет.

29.Даны натуральное число n и символьный массив а[n], в котором хранятся буквы русского алфавита. Создать символьный массив b, поместив в него буквы из массива а, лежащие в диапазоне [б, м]. Возможно, что таких букв в массиве а нет.

30.Даны натуральное число n и символьный массив а[n], в котором хранятся буквы латинского алфавита. Создать символьный массив b, поместив в него буквы из массива а, не лежащие в диапазоне [d, p]. Возможно, что таких букв в массиве а нет.

116

6 ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ

ДВУМЕРНЫХ МАССИВОВ В СИСТЕМЕ C++BUILDER

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

6.2Основные понятия

Массив – это структурированный тип данных, состоящий из фиксированного числа упорядоченных по индексу элементов, имеющих один и тот же тип.

Если в качестве типа элемента одномерного массива берется другой массив, то образуется структура, называемая двумерным массивом. Для описания типа элементов может быть использован любой объявленный тип. Двумерный массив или матрица представляет собой прямоугольную таблицу элементов одинакового типа.

Пример:

int mas[3][5];

В данном примере объявлен двумерный массив mas. Массив mas представляет собой матрицу, состоящую из 3 строк и 5 столбцов.

Доступ к значениям элементов двумерного массива обеспечивается через индексы, каждый из которых заключается в квадратные скобки. Например, mas[3][2] – значение элемента, лежащего на пересечении 4-ой строки и 3-его столбца, так как индексы начинаются с нуля.

По такому принципу можно описать не только двумерные, но и n- мерные массивы. Размерность массивов ограничивает только объем памяти конкретной ЭВМ.

Пример описания трехмерных массивов а и b:

typedef int mes[3]; typedef mes ves[5]; typedef ves res[8]; res а;

Программирование в системе C++Builder с использованием подпрограмм 117

int b[3][5][8];

Для описания многомерных массивов можно использовать предварительно определенные константы:

const N=10, M=15; int mas[N][M];

Если многомерный массив инициализируется при его объявлении, список значений по каждой размерности заключается в фигурные скобки. Объявление трехмерного массива A3 размерностью 4 на 3 на 2 имеет вид:

int A3[4][3][2]={{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}},

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

Для работы с двумерными массивами обычно используются вложенные циклы. Часто применяется вложенная структура алгоритма с модификаторами.

Тело внутреннего цикла

Рис.6.1. Схема алгоритма вложенных циклов Обнуление элементов двумерного массива можно выполнить, ис-

пользуя вложенный оператор for: for (int k=0; k<3; k++)

for (int m=0; m <5; m ++) a[k][m]=0;

118 Программирование в системе C++Builder с использованием подпрограмм

Ввод и вывод значений элементов двумерного массива с клавиатуры можно осуществить с помощью компоненты TStringGrid страницы Аdditional, предназначенной для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. С помощью компоненты ТEdit, представляющей собой однострочный редактор текста, можно вводить и/или отображать достаточно длинные текстовые строки.

Пример:

Edit5->Text=StringGrid1->Cells[i][j]; /* позволяет вывести в окно содержимое ячейки, где i - номер столбца; j - номер строки. */ После выполнения присваивания в Edit5->Text хранится содер-

жимое (текст) ячейки таблицы.

StringGrid1->Cells[i][j] определяет содержимое ячейки с табличными координатами (i, j).

Динамическое размещение многомерных массивов

Многомерные массивы можно размещать в динамической памяти с помощью операций new и delete. Например, операторы

const N=3, M=5; int **ary;

ary = new int * [N]; // массив указателей for (int i = 0; i <N; i++) {

ary[i] = new int [M]; // инициализация указателей

}

объявляют массив с именем ary, содержащий 3 строки и 5 столбцов.

Чтобы освободить память, можно использовать операторы for (int i = 0; i <N; i++) {

delete [] ary[i];

}

delete [] ary;

6.3Пример программирования с использованием двумерного массива

Задание.

Подсчитать сумму всех элементов в двумерном массиве а[4][5].

Программирование в системе C++Builder с использованием подпрограмм 119

Разработка алгоритма (рис. 6.2):

Входные данные: a – массив, состоящий из вещественных чисел. Выходные данные: sum – вещественная переменная, сумма всех

элементов массива.

Промежуточные данные: i, j – счетчики циклов.

При вычислении суммы элементов массива в начале алгоритма переменную, хранящую сумму, необходимо обнулить.

При вычислении произведения элементов массива в начале алгоритма переменной, хранящей произведение, необходимо присвоить единицу.

a

sum=0

i=0,m-1

j=0,n-1

sum+=a[i][j]

sum

Рисунок 6.2. Схема алгоритма вычисления суммы элементов массива

120 Программирование в системе C++Builder с использованием подпрограмм

Разработка формы (рис. 6.3, табл. 6.1):

Рис.6.3. Внешний вид формы Таблица 6.1 Используемые компоненты

 

Имя компо-

Страница

Настраи-

 

палитры

ваемые

Значение

нента

 

компонент

свойства

 

 

 

 

1

Form1

Caption

Лабораторная работа №6

 

 

 

 

 

2

Label1

Standard

Caption

Введите элементы матрицы

 

 

 

 

 

3

Label2

Standard

Caption

Сумма элементов равна

 

 

 

 

 

4

Label3

Standard

Caption

 

 

 

 

 

 

5

Button1

Standard

Caption

Рассчет

 

 

 

 

 

 

 

 

FixedCols

0

 

 

 

 

 

6

StringGrid1

Additional

RowCount

4

 

 

FixedRows

0

 

 

 

 

 

 

 

 

 

 

 

Options

[goEditing, goTabs]

Текст программы

//---------------------------------------------------------------------------

#include <vcl.h> #pragma hdrstop

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]