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

Belova_T_M_Programmirovanie_na_S_Builder

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

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

#include "Unit1.h" //---------------------------------------------------------------------------

#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

const m=4, n=5;

typedef double mas[m][n]; int i, j;

mas a; double sum;

for(i=0;i<m;i++)

for(j=0;j<n;j++) a[i][j]=StrToFloat(StringGrid1->Cells[j][i]); sum=0;

for(i=0;i<m;i++)

for(j=0;j<n;j++)

sum+=a[i][j]; Label3->Caption=FloatToStr(sum);

}

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

6.4Контрольные вопросы к разделу 6

21.Написать фрагмент программы ввода двумерного целочисленного массива, в котором 5 строк и 10 столбцов.

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

22.Написать фрагмент программы вывода двумерного вещественного массива, в котором 5 строк и 6 столбцов.

23.Дать описание трехмерного целочисленного массива.

24.Дать описание четырехмерного целочисленного массива в качестве переменной и в качестве типа.

25.Заданы массивы: float a[15][8], b[15][8];

Допустимы ли в C++Builder операции над этими массивами как над единым целым?

Ввести квадратную вещественную матрицу 4-го порядка, элементы которой заданы построчно, и распечатать ее по столбцам.

Присвоить нулевые значения всем элементам массива float a[10][5];

Для чего предназначается компонент TStringGrid? Какими свойствами обладает компонент TStringGrid?

6.5 Индивидуальные задания к разделу 6

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

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

1.Дана вещественная матрица размером 4 строки, 5 столбцов. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу.

2.Определить, является ли заданная целочисленная квадратная матрица порядка 5 симметричной относительно главной диагонали.

3.Дана вещественная матрица размером 4 строки, 5 столбцов. Поменять местами максимальный и минимальный элементы матрицы.

4.Дана целочисленная квадратная матрица порядка 5. Найти максимальный элемент среди элементов, лежащих ниже главной диагона-

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

ли, и максимальный элемент среди элементов, лежащих выше главной диагонали, и поменять их местами.

5.Дана целочисленная квадратная матрица порядка 5. Найти максимальный элемент среди элементов, лежащих левее вспомогательной диагонали, и максимальный элемент среди элементов, лежащих правее вспомогательной диагонали, и поменять их местами.

6.Среди строк целочисленной квадратной матрицы порядка 5 найти строку с минимальной суммой элементов.

7.Дана целочисленная квадратная матрица порядка 5. Найти минимальный элемент среди элементов, лежащих ниже главной диагонали, и максимальный элемент среди элементов, лежащих выше главной диагонали, и вычислить их среднее арифметическое.

8.Дана целочисленная квадратная матрица порядка 5. Найти минимальный элемент среди элементов, лежащих левее вспомогательной диагонали, и максимальный элемент среди элементов, лежащих правее вспомогательной диагонали, и вычислить их среднее геометрическое.

9.Среди столбцов целочисленной квадратной матрицы порядка 5 найти столбец с максимальной суммой элементов.

10.Среди тех столбцов целочисленной матрицы размером 3 строки, 5 столбцов, которые содержат только такие элементы, значения которых по модулю не превышают 10, найти столбец с минимальным произведением элементов.

11.Даны целые числа а1,...,а10, целочисленная квадратная матрица порядка 5. Заменить нулями в матрице те элементы, для которых имеются равные числа среди а1,...,а10.

12.В двумерном целочисленном массиве размером 4 строки, 5 столбцов поменять местами строки, симметричные относительно середины массива (горизонтальной линии).

13.В двумерном целочисленном массиве размером 4 строки, 5 столбцов поменять местами столбцы, симметричные относительно середины массива (вертикальной линии).

14.Даны две вещественные квадратные матрицы порядка 4. Получить новую матрицу прибавлением к элементам каждого столбца пер-

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

вой матрицы минимального элемента соответствующего столбца второй матрицы.

15.В целочисленной квадратной матрице порядка 4 найти наибольший по модулю элемент. Получить квадратную матрицу порядка 3 путем выбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.

16.В данной вещественной квадратной матрице порядка 5 найти наименьший элемент. Получить квадратную матрицу порядка 4 путем выбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.

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

18.Дана целочисленная квадратная матрица порядка 4. Найти в каждой строке наибольший элемент и поменять его местами с элементом, расположенным на главной диагонали.

19.Дана целочисленная квадратная матрица порядка 5. Найти в каждой строке наименьший элемент и поменять его местами с элементом, расположенным на вспомогательной диагонали.

20.Дана вещественная матрица размером 4 строки, 5 столбцов. Оп-

ределить числа b1,..,b4, равные значениям средних арифметических элементов строк.

21.Дана вещественная матрица размером 4 строки, 5 столбцов. Оп-

ределить числа b1,..,b5, равные значениям средних арифметических элементов столбцов.

22.Дана вещественная матрица размером 4 строки, 5 столбцов. Оп-

ределить числа b1,..,b5, равные среднему арифметическому значению максимального и минимального элементов каждого столбца.

23.В данной вещественной квадратной матрице порядка 5 найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

24.В данной вещественной квадратной матрице порядка 5 найти среднее геометрическое положительных элементов столбца, в котором

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

расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

25.Дана целочисленная квадратная матрица порядка 4. Для каждой строки найти минимальный элемент или максимальный в зависимости от условия: если на главной диагонали находится элемент больше элемента, расположенного на вспомогательной диагонали, то найти минимальный элемент, иначе максимальный.

26.Дана целочисленная квадратная матрица порядка 4. Ниже глав-

ной диагонали найти минимальный элемент среди четных элементов, а выше главной диагонали среди нечетных элементов.

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

28.Дана целочисленная квадратная матрица порядка 5. Левее вспо-

могательной диагонали найти минимальный элемент среди четных элементов, а правее вспомогательной диагонали среди нечетных элементов.

29.Дана целочисленная квадратная матрица порядка 5. Левее вспомогательной диагонали найти минимальный элемент среди положительных элементов, а правее вспомогательной диагонали найти максимальный элемент среди отрицательных элементов.

30.Дана целочисленная квадратная матрица порядка 5. Для каждого столбца найти минимальный элемент или максимальный в зависимости от условия: если на главной диагонали находится элемент меньше элемента, расположенного на вспомогательной диагонали, то найти минимальный элемент, иначе максимальный.

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

1.Дана вещественная матрица размером n строк, m столбцов. Упорядочить ее строки по возрастанию их первых элементов.

2.Дана вещественная матрица размером n строк, m столбцов. Упорядочить ее строки по возрастанию значений элементов.

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

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

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

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

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

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

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

9.Дана целочисленная матрица размером n строк, m столбцов. Для каждого столбца найти произведение элементов, значения которых лежат в диапазоне [1, 10], и упорядочить столбцы матрицы по убыванию произведений.

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

11.Дана вещественная матрица размером n строк, m столбцов. Упорядочить ее столбцы по возрастанию их первых элементов.

12.Дана целочисленная матрица размером n строк, m столбцов. Найти и вывести строку, в которой длина максимальной серии одинаковых элементов максимальна.

13.Дана целочисленная матрица размером n строк, m столбцов. Найти и вывести столбец, в котором длина максимальной серии возрастающих по значению элементов максимальна.

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

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

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

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

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

18.Дана вещественная матрица размером n строк, m столбцов. Найти строку, содержащую максимальный элемент, и упорядочить эту строки матрицы по возрастанию значений элементов.

19.Дана вещественная матрица размером n строк, m столбцов. Найти строку, содержащую минимальный элемент, и упорядочить эту строки матрицы по убыванию значений элементов.

20.Дана вещественная матрица размером n строк, m столбцов. Найти столбец, содержащий минимальный элемент, и упорядочить этот столбец матрицы по убыванию значений элементов.

21.Дана вещественная матрица размером n строк, m столбцов. Найти столбец, содержащий максимальный элемент, и упорядочить этот столбец матрицы по возрастанию значений элементов.

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

23.Дана целочисленная матрица размером n строк, m столбцов. Найти строку, сумма элементов которой максимальна, и упорядочить эту строку матрицы по убыванию значений элементов.

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

24.Дана целочисленная матрица размером n строк, m столбцов. Найти строку, среднее арифметическое элементов которой максимально, и упорядочить эту строку матрицы по возрастанию значений элементов.

25.Дана целочисленная матрица размером n строк, m столбцов. Найти столбец, среднее арифметическое элементов которого максимально, и упорядочить этот столбец матрицы по возрастанию значений элементов.

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

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

28.Дана целочисленная матрица размером n строк, m столбцов. Найти строку, произведение элементов которой максимально, и упорядочить эту строку матрицы по убыванию значений элементов.

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

30.Дана целочисленная матрица размером n строк, m столбцов. Найти строку, количество различных элементов в которой максимально, и упорядочить эту строку матрицы по возрастанию значений элементов.

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

7ПРОГРАММИРОВАНИЕ В СИСТЕМЕ C++BUILDER

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

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

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

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

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

В C++Builder подпрограммы представлены функциями.

Функции

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

В заголовке объявляются тип возвращаемого функцией результата, имя функции и формальные параметры, если они есть.

Формат заголовка функции:

тип результата <имя функции>(список параметров) тип результата <имя функции>()

Примеры заголовка функции:

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

double a (double x, int b ) void f (void) или void f1()

Если тип возвращаемого значения не указан, он по умолчанию считается равным int. Если функция не возвращает никакого значения, то тип возвращаемого значения объявляется void.

Тело функции представляет собой локальный блок по структуре аналогичный программе:

тип результата <имя функции>(формальные параметры) { <операторы тела функции>

}

Как правило, хотя формально не обязательно, помимо описания функции в текст программы включается также прототип функции – ее предварительное объявление. Прототип представляет собой тот же заголовок функции, но с точкой с запятой “;” в конце. Кроме того, в прототипе можно не указывать имена формальных параметров.

Введение в программу прототипов функций преследует несколько целей:

позволяет использовать в данном модуле функцию, описанную в каком-нибудь другом модуле;

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

Вызов функции осуществляется упоминанием имени функции в соответствующих выражениях наряду с переменными и константами. Оператор вызова функции состоит из имени (идентификатора функции) и списка фактических параметров, отделенных друг от друга запятыми и заключенными в круглые скобки.

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

Например,

double у=a (x, b); // используется возвращаемое функцией значение a (x, b); // возвращаемое функцией значение игнорируется

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

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