4_3_2 (1185054)
Текст из файла
П О Я С Н Е Н И Я К З А Д А Ч Е 4.3.2
1. Условие задачи записано в двух абзацах:
- в первом абзаце приводится описание подпрограммы Р, которую надо разработать;
- во втором абзаце приводится задание, для выполнения которого надо разработать подпрограмму–обработчик события, содержащую обращение к подпрограмме Р. В качестве события можно выбрать, например, “щелчок мышкой по кнопке Button1” , тогда подпрограмма –обработчик события будет иметь имя TForm1.Button1Click.
2. Порядок разработки программы:
- Сначала написать подпрограмму Р. В условии фигурирует некоторая функция f, о которой известно только то, что она зависит от одного аргумента, тип этого аргумента и тип самой функции. Имя функции должно быть среди формальных параметров подпрограммы (в некоторых вариантах таких функций две – f1 и f2). Подпрограмма Р не должна содержать операторов ввода и вывода. В ней должны производиться те и только те действия и над теми объектами, которые указаны в описании подпрограммы (т.е. в первом абзаце). В процедуре Р должен обрабатываться только одномерный массив ( в некоторых вариантах - два одномерных массива). Массивы-параметры подпрограммы Р должны быть описаны как открытые. Не "перетягивайте" в процедуру матрицу и те действия, которые описаны во втором абзаце.
- Внимательно прочитав второй абзац, Вы должны решить какие функции будут использоваться в качестве фактических при обращении к подпрограмме Р. Это могут быть функции, реализующие Sin(x), Cos(x), Ln(x), Exp(x), Abs(x), Int(x), Sqr(x), Sqrt(x), x2, x3, x (тождественная, т.е. f(x)=x ) и т.д. Напишите соответствующие подпрограммы-функции.. Обратите внимание, что описания этих функций должны быть расположены вне других подпрограмм.
- Напишите обработчик события. Так как подпрограмма Р работает с одномерным массивом, а подпрограмма-обработчик дожна обработать строки (столбцы) матрицы по отдельности, надо поочередно переписывать их в одномерный рабочий массив и обращаться к подпрограмме P, передавая этот массив в качестве фактического параметра. Ввод исходных данных и вывод результатов производится только в подпрограмме-обработчике.
П Р И М Е Р З А Д А Ч И Т И П А 4.3.2
Разработать подпрограмму Р для вычисления суммы и количества тех элементов массива x, для которых f( x[i] ) > c, где f - некоторая функция, c - заданная величина, x - массив вещественных чисел из n элементов.
Используя подпрограмму P, для матрицы а[1..5, 1..7] сделать следующее:
- Для каждой строки найти сумму тех ее элементов, значения синусов которых больше 0.7, а если таких элементов в строке нет – вывести соответствующее сообщение.
- Найти количество столбцов, для которых неотрицательна сумма эл-тов, значения косинусов которых больше 0.6.
3) Таблицы данных
Таблица данных для procedure P( x:mas; n:integer; c:real; f:fun; var s:real; var kol:integer )
| Вид данного | Обозначение | Смысл | Тип | Примечание |
| Параметры – значения | x | Заданный одномерный массив вещественных чисел | Mas | |
| n | Кол-во эл-тов в массиве x | Integer | ||
| c | Заданная величина | Real | ||
| f | Вещественная функция одного вещественного аргумента | Fun | ||
| Параметры - переменные | s | Сумма элементов массива x, для которых f( x[i] ) > c | Real | |
| kol | Кол-во элементов массива x, для которых f( x[i] ) > c | Integer | ||
| Промежуточные данные | i | Номер текущего эл-та массива х | Integer |
Таблица данных для procedure TForm1.Button1Click :
| Вид данного | Обозна-чение | Смысл | Тип | Примечание |
| Исходные данные (ИД) | a | Матрица вещественных чисел | Array[1..5;1..7] of real | StringGrid1 |
| Результирующие данные (РД) | sum1 | Сумма элементов текущей строки, синус которых больше 0.7 | Real | StringGrid2 |
| Kol3 | Кол-во столбцов, для которых положительна сумма тех эл-тов, косинус которых больше 0.6 | Integer | Edit1 | |
| Промежуточные данные (ПД) | sum2 | Сумма элементов текущего столбца, косинус которых больше 0.6 | real | |
| Kol1 | Кол-во элементов текущей строки, синус которых больше 0.7 | Integer | ||
| Kol2 | Кол-во элементов текущего столбца, косинус которых больше 0.6 | Integer | ||
| i | Номер текущей строки матрицы а | Integer | ||
| j | Номер текущего столбца матрицы а | Integer | ||
| rab1 | Рабочий массив для хранения текущей строки массива a | Array[1..7] of real | ||
| rab2 | Рабочий массив для хранения текущего столбца массива a | Array[1..5] of real |
2в) Таблица событий
| Имя компонента (Name) | Название события | Описание События | Реакция на событие | Имя соответствующей процедуры – обработчика события |
| Button1 | OnClick | Щелчок мышкой | Вычисление s, kol | TForm1.Button1Click |
| Button2 | OnClick | Щелчок мышкой | Очистка компонент | TForm1.Button2Click |
| Button3 | OnClick | Щелчок мышкой | Заполнение StringGrid1 | TForm1.Button3Click |
4)Тесты
Пусть УСЛ1 - содержать элементы, синус которых больше 0.7;
УСЛ2 - содержать элементы, косинус которых больше 0.6;
| № пп | Что проверяется | Значения исходных данных | Ожидаемый результат |
| T1 | Есть и строки, удовлетворяющие УСЛ1, и строки, не удовлетворяющие УСЛ1. Столбцы не анализируются. | a= 1.57 0 0 0 0 0 0 0 -3.14 -3.14 0 0 0 0 0 -3.14 -3.14 0 0 0 0 0 0 0 0 0 0 0 1.57 -3.14 -3.14 0 0 0 0 | ~2 kol1=0 kol1=0 kol1=0 ~2 |
| T2 | Есть столбцы, не удовлетворяющие УСЛ2. Есть столбцы, удовлетворяющие УСЛ2, но соответствующая им сумма отрицательна. Есть столбцы, удовлетворяющие УСЛ2, а соответствующая им сумма равна нулю. Есть столбцы, удовлетворяющие УСЛ2, а соответствующая им сумма больше нуля. При этом суммарное кол-во столбцов первого и второго вида не равно суммарному кол-ву столбцов третьего и четвертого вида. Строки не анализируются | a= 1.57 -6.28 0 6.28 0 0 0 -3.14 -3.14 0 0 0 0 0 -3.14 -3.14 0 0 0 0 0 1.57 -6.28 0 1.57 0 0 0 -3.14 -3.14 0 -1.57 0 0 0 | kol3=3 |
| Т3 | Все столбцы не удовлетворяют УСЛ2. | Все а [i,j] = -3.14 | kol3=0 |
3б)Алгоритмы
| для procedure P( x, n, c, f, s, kol ) | для procedure TForm1.Button1Click : |
| s:=0 kol:=0 для k от 0 до High(x) шаг 1 цикл если ( f( x[k] ) > c ) то s:= s+ x[k] kol:= kol +1 конец если конец цикла | Начало ввод массива a для i от 1 до 5 шаг 1 цикл перепись i-ой строки массива a в массив rab1 вычисление sum1, kol1 { p(rab1, 0.7, f1, sum1, kol1) } если ( kol1 > 0 ) то вывод sum1 в StringGrid2.Cells[0,i-1] иначе вывод ‘ kol1=0 ’ в StringGrid2.Cells[0,i-1] конец_если конец_цикла kol3 :=0 для j от 1 до 7 шаг 1 цикл перепись j –ой строки в массив rab2 вычисление sum2, kol2 { p(rab2, 0.6, f2, sum2, kol2) } если (sum2 >= 0 и kol 2 > 0 ) то kol3:= kol3 + 1 конец_если конец_цикла вывод kol3 конец |
unit Unit1;
. . .
implementation
{$R *.DFM}
type fun=function(z:real):real;
function f1(z:real):real;
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















