Добавлен: 25.10.2018
Просмотров: 1246
Скачиваний: 15
1
Семинар 1. Динамические массивы
Цель семинара: Овладение навыками разработки, кодирования на Си и
отладки циклических алгоритмов, использующих динамические массивы.
1.
Задание
1. Вспомните задачи 2 и 3 из семинара 1 прошлого семестра нашего курса
«Программирование и основы алгоритмизации»: разработка циклических
алгоритмов с одномерными массивами (задача 2 – задачи приведены также
в разделе 2 этого семинара) и с матрицами (задача 3 – условия также есть в
разделе 3 этого семинара). Напишите и отладьте программы с
динамическими массивами для решения этих задач, используя примеры
лекции 1 этого семестра.
2. Вспомните задачу семинара 2 прошлого семестра нашего курса
«Программирование и основы алгоритмизации»: функции и многофайловые
программы; условие этой задачи также приведено в разделе 4 данного
семинара. Исправьте решение этой задачи в соответствии с полученными
замечаниями; это очень важно, так как решение этой задачи лежит в основе
курсовой работы. Измените программу, используя динамические массивы
– см. примеры лекции 1 текущего семестра. Ответьте на вопрос: какие
преимущества дает использование динамических массивов?
3. Отчет по выполнению задания обязательно должен содержать условия
задач, анализ данных (возможно, в виде таблицы «Состав данных»), блок-
схемы семинаров прошлого семестра (возможно, с исправленными
ошибками), коды приложений с локальными массивами (прошлого
семестра) и с динамическими массивами.
Жду отчетов по индивидуальным заданиям разделов 2, 3, 4. Напоминаю, что
отчет по выполнению задания обязательно должен содержать условие задачи,
анализ данных (возможно, в виде таблицы «Состав данных»), блок-схему,
программу (в двух вариантах: с локальными и с динамическими массивами).
2
2
. Варианты индивидуальных заданий на проектирование
алгоритма обработки одномерных массивов (раздел 6 семинара 1
прошлого семестра)
В приведенных ниже задачах значения A, B (если они есть в варианте) и
вектора X и (или) Y задаются вводом; n — размер каждого из векторов X и Y.
1. Каждая пара (X
k
,Y
k
) представляет координаты одной из n точек на
плоскости. Определить, у какого числа точек положительна как абсцисса X
k
,
так и ордината Y
k
; для прочих точек найти среднее расстояние до начала
координат.
2. Рассмотрев все пары (X
k
,Y
k
), подсчитать случаи равенства элементов пары;
найти также среднее арифметическое чисел вектора X.
3. Получить вектор T по правилу T
k
= max (X
k
,Y
k
), k = 1,2, … ,n; подсчитать
элементы T
k
, получившие значения элементов X
k
.
4. Изменить каждый положительный элемент вектора T, поделив элемент на
его номер, а отрицательные элементы – подсчитать.
5. Каждая пара (X
k
, Y
k
) задает длины сторон прямоугольника; найти число тех
прямоугольников, площадь которых больше A.
6. Найти число n1 отрицательных элементов вектора X и их сумму C1 и число
n2 положительных элементов вектора Y и их сумму C2.
7. Получить вектор T по правилу
n,
,
3,
2,
1,
k
k
X
k
X
k
X
Tk
,
0
,
0
0
,
а также подсчитать число нулей в полученном векторе T.
8. Найти число и произведение положительных элементов вектора X,
удовлетворяющих требованию sin X
k
≤ 0.
9. Пара (X
k
, Y
k
) представляет координаты одной из n точек на плоскости. Найти
число точек, у которых ордината Y
k
больше абсциссы X
k
,
и сумму расстояний
от первой точки до остальных точек.
10. Найти сумму и число элементов вектора X, для которых ||X
k
–A|<B.
11. Найти сумму и число элементов вектора X, для которых ||X
k
–A|<B.
12. Заменить каждый неположительный элемент вектора X абсолютной
величиной имеющего тот же номер элемента вектора Y и подсчитать число
таких замен.
13. Пара (X
k
, Y
k
) представляет координаты одной из n точек на плоскости. Найти
число точек, находящиеся вне круга диаметром B, центр которого имеет
координаты X0, Y0.
14. Получить вектор T по правилу
n,
,
3,
2,
1,
k
k
X
k
X
k
X
k
X
Tk
,
0
,
cos
1
0
,
sin
1
а также подсчитать число неотрицательных элементов X
k
.
3
15. Найти среднее арифметическое положительных элементов вектора X,
имеющих четный номер, и среднее арифметическое отрицательных
элементов вектора Y, имеющих нечетный номер.
16. Найти
y
x
S
S
, где S
x
, S
y
– средние арифметические положительных
элементов векторов X и Y соответственно.
17. В векторе X подсчитать число нулей и заменить отрицательные элементы их
абсолютными величинами.
18. Пара (X
k
, Y
k
) представляет координаты одной из n точек на плоскости.
Подсчитать, сколько из них лежит в квадрате с длиной стороны A, центр
симметрии которого находится в начале координат, а стороны параллельны
координатным осям.
19. Найти среднее арифметическое элементов вектора X, исключая нули, и
число неположительных элементов вектора.
20. Найти отдельные суммы S1, S2 и количества n1, n2 элементов X
k
, значения
которых соответственно больше A и меньше –A.
21. Вычислить куб суммы и общее число элементов вектора X, удовле-
творяющих условию X
k
< A/2 или условию A < X
k
< B.
22. Подсчитать число отрицательных элементов вектора X, а каждый
положительный его элемент изменить, умножив на предыдущий элемент.
Первый элемент должен быть отрицательным.
23. Определить число произведений X
k
·Y
k
, удовлетворяющих требованию X
k
·Y
k
< A (номер k у элементов одинаков) и сумму S этих произведений.
24. Найти среднее арифметическое тех элементов вектора X, которые
удовлетворяют требованию X
k
< X
1
, и среднее арифметическое всех
элементов вектора X.
25. Найти сумму и число положительных элементов вектора X, каждый из
которых больше имеющего тот же номер элемента вектора Y.
26. В векторе X изменить значения положительных элементов, умножив на B, а
отрицательные элементы уменьшить вдвое; затем подсчитать, сколько
окажется элементов, абсолютная величина которых не превышает A.
27. Задать значения Y
k
тем элементам X
k
, для которых выполняется условие |X
k
–
Y
k
| < A, и подсчитать число измененных элементов.
28. Заменить значения элементов вектора Y по правилу
Y
k
=
n;
,
3,
2,
1,
k
k
Y
k
X
k
Y
k
X
k
Y
k
X
k
Y
,
подсчитать случаи равенства исходных значений X
k
и Y
k
.
4
3.
Варианты индивидуальных заданий на проектирование
алгоритма обработки матриц
Дана матрица А из n строк и m столбцов. Способ задания n и m
определяется средой программирования и указаниями преподавателя. Матрицу
A необходимо вводить и выводить (если ее элементы были изменены)
построчно.
1. Определить число нулевых элементов в каждой строке матрицы.
2. Заменить элементы матрицы, равные нулю, на заданное значение.
3. Найти среднее арифметическое элементов матрицы, меньших заданного
значения.
4. Вывести индексы элементов матрицы, равных нулю.
5. Для каждой строки матрицы найти произведение отрицательных элементов.
6. Для каждого столбца матрицы вычислить среднее арифметическое
элементов, меньших первого элемента этого столбца
7. Определить число отрицательных и число положительных элементов
матрицы.
8. Элементы матрицы, абсолютная величина которых больше заданного
значения C, разделить на С.
9. Определить число элементов, меньших заданного значения, для каждого
столбца матрицы.
10. В каждом столбце матрицы заменить нулевые элементы значением первого
элемента этого столбца, который предполагается не равным нулю.
11. Для каждого столбца матрицы найти среднее арифметическое элементов,
больших нуля, но меньших единицы.
12. Найти номера строк матрицы, сумма элементов которых меньше 0.
13. Вычислить произведение положительных элементов для каждого столбца
матрицы.
14. Определить число отрицательных и число положительных элементов в
каждой строке матрицы.
15. Найти число строк матрицы, сумма элементов которых меньше 0.
16. Вычислить произведение тех элементов матрицы, которые больше Е, но
меньше Н (Е и Н
заданные значения, Е < Н).
17. Вычислить общую сумму элементов тех строк матрицы, первый элемент
которых положителен.
18. Все отрицательные элементы матрицы заменить квадратом их значений.
19. Для каждой строки матрицы определить число элементов, больших первого
элемента этой строки.
20. Определить число столбцов матрицы, сумма элементов которых
положительна.
5
21. Для каждой строки матрицы определить произведение элементов, меньших
последнего элемента этой строки.
22. Вывести
номера
столбцов,
произведение
элементов
которых
меньше единицы.
23. Отрицательные элементы матрицы заменить на нуль. Определить число
замен, сделанных в каждой строке
24. Вывести номера тех строк матрицы, в которых число положительных
элементов больше m/2.
25. Вычислить общую сумму элементов тех строк матрицы, последний элемент
которых равен нулю.
26. Положительные элементы матрицы увеличить в 2 раза, а отрицательные
заменить на нуль.
27. Для каждого столбца найти произведение элементов, больших первого
элемента столбца.
28. Для каждой строки определить число элементов, равных последнему
элементу этой строки.
4. Индивидуальное задание на разработку и использование
функций Си (из семинара 2 курса «Программирование)»
Разработайте программу, выделив в ней одну или несколько под-
программ (функций). Требования к составляемым подпрограммам:
каждая подпрограмма является функционально завершенной и должна
вызываться более одного раза с разными фактическими параметрами;
подпрограмма обработки не должна содержать ввод (вывод) данных;
в подпрограммах не рекомендуется использовать глобальные переменные.
ВАРИАНТЫ:
1. Если сумма S
A
положительных элементов главной диагонали матрицы
A (7×7) больше единицы, вывести значение S
A
/S
B
, где S
B
— сумма
положительных элементов главной диагонали матрицы B (5×5).
2. Определить индексы минимального элемента (в предположении, что он
единственный) в каждой из трех матриц A (7×5), B (3×7), C (4×5).
3. Даны матрицы A (5×5), B (7×7), C (4×4). Вычислить значение выражения P
A
+ P
B
– P
C
, где P
A
(P
B
, P
C
) — произведение положительных элементов
главной диагонали матрицы A (B, C).
4. В каждой из двух матриц A (7×7), B (5×5) определить минимальное значение
среди положительных элементов главной диагонали.
5. Если среднее арифметическое S
A
положительных элементов матрицы
A (5×4) больше среднего арифметического S
B
положительных элементов
матрицы B (4×6), найти сумму S
A
+ S
B
, иначе найти разность S
A
– S
B
.