- •1. Задачи по разработке алгоритмов и программ
- •Программа
- •Результат работы программы
- •1.3. Вычислительные процессы с использованием процедур
- •Решение задачи
- •Программа
- •Результат работы программы
- •Пошаговый словесный алгоритм
- •Решение задачи
- •Пояснения к схеме алгоритма
- •Программа
- •Фрагмент результата работы программы
- •Пошаговый словесный алгоритм
- •Решение задачи
- •Программа
- •Пояснения к схеме алгоритма
- •Решение задачи
- •Программа
- •Результат работы программы
- •Пояснения к схеме алгоритма
- •Решение задачи
- •Пояснения к схеме алгоритма
- •Программа
- •Результат работы программы
- •Решение задачи
- •Пояснения к схеме алгоритма
- •Программа
- •Результат работы программы
- •1.6. Алгоритмы и программы для нахождение сумм и произведений функциональных выражений
- •Решение задачи
- •Пояснения к схеме алгоритма
- •Программа
- •Результат работы программы
Программа
Program Prog1_10;
Var
I, J : Byte;
A : array [1..5, 1..12] of Real;
Begin {начало раздела операторов программы}
for I:= 1 to 5 do
Begin {начало цикла 1 - для перебора строк массива А}
for J := 1 to 12 do
Begin {начало цикла 2 - для перебора столбцов массива А}
{вычисление значения элемента массива в зависимости от условия}
If I <= J Then A[I, J] := sin(I + J)
else A[I, J] := ln(I/J);
Write(A[I, J]:7:2, ' ');{вывод элемента массива на экран}
end; {конец цикла 2}
Writeln; {переход на следующую строку}
end; {конец цикла 1}
End. {конец программы}
Результат работы программы
0.91 0.14 -0.76 -0.96 -0.28 0.66 0.99 0.41 -0.54 -1.00 -0.54 0.42
0.69 -0.76 -0.96 -0.28 0.66 0.99 0.41 -0.54 -1.00 -0.54 0.42 0.99
1.10 0.41 -0.28 0.66 0.99 0.41 -0.54 -1.00 -0.54 0.42 0.99 0.65
1.39 0.69 0.29 0.99 0.41 -0.54 -1.00 -0.54 0.42 0.99 0.65 -0.29
1.61 0.92 0.51 0.22 -0.54 -1.00 -0.54 0.42 0.99 0.65 -0.29 -0.96
Задача 1.11. Разработать схему алгоритма и программу получения из матрицыА1010, заданной по законуaij = cos(i + j) двух одномерных массивовCиD. В массивCзанести все неотрицательные элементы заштрихованной области матрицыА, а в массивD– отрицательные элементы незаштрихованной области. Вывести на экран число элементов массивовСиD.
Решение задачи
Алгоритм решения задачи включает анализ двух условий:
и
Если выполняется первое условие, то элемент aijзаносится в массивС:ck =aij, если выполняется второе условие – то элементaijзаносится в массивD:dn =aij. Таким образом, логика алгоритма требует организации двух циклов для формирования и перебора значенийaijи использования разветвляющихся процессов для их анализа. Схема алгоритма решения задачи представлена на рис. 1.11.
Рис. 1.11
Пояснения к схеме алгоритма
Обозначения:
A[I, J] –aij элемент матрицы А;
С[K] –ck элемент массива C;
D[N] –dn элемент массива D;
K,N– счетчики числа элементов массивовC,D.
Символ 1. Начало алгоритма.
Символ 2. Обнуление счетчиков элементов массивовC(переменнаяK) и массиваD(переменнаяN).
Символ 3. Открытие внешнего цикла с параметромI = 1; 10 для перебора строк матрицы A.
Символ 4. Открытие внутреннего цикла с параметромJ = 1; 10 для перебора столбцов матрицы A.
Символ 5. Вычисление элементаA[I,J].
Символ 6. Проверка условий принадлежности элементаA[I,J] заштрихованной области (J≥I) и неотрицательности элементаA[I,J]. Если условия верны, выполняетсясимвол7, если нет –символ 8.
Символ 7. Увеличение счетчика элементов массиваC(переменнаяK). Присвоение элементу массиваCзначения элементаA[I,J].
Символ 8. Проверка условий принадлежности элементаA[I,J] незаштрихованной области (J<I) и отрицательности элементаA[I,J]. Если условия верны, выполняетсясимвол 9, если нет –символ 10.
Символ 9. Увеличение счетчика элементов массиваD(переменнаяN). Присвоение элементу массиваDзначения элементаA[I,J].
Символ 10. Закрытие внутреннего цикла с параметромJ.
Символ 11. Закрытие внешнего цикла с параметромI.
Символ 12. Вывод на экран значенийK,N.
Символ 13. Конец алгоритма.
Программа
Program Prog1_11;
Var
I, J, K, N : Byte;
A : array [1..10, 1..10] of Real;
C, D : array [1..55] of Real;
Begin {начало раздела операторов программы}
K := 0; N := 0; {начальные значения для индексов массивов C, D}
for I := 1 to 10 do {цикл 1 - для перебора строк матрицы А}
for J := 1 to 10 do {цикл 2 - для перебора столбцов матрицы А}
Begin {начало циклов 1, 2}
A[I, J] := cos(I + J); {вычисление A[I, J]}
If (J >= I) and (A[I, J] >= 0) Then {проверка условий}
Begin {начало блока 1 – условия верны}
K := K + 1; {увеличение индекса K на 1}
C[K] := A[I, J]; {заполнение массива C}
end {конец блока 1}
else If (J < I) and (A[I, J] < 0) Then {проверка условий}
Begin {начало блока 2–условия верны}
N := N + 1; {увеличение индекса N на 1}
D[N] := A[I, J]; {заполнение массива D}
end; {конец блока 2}
end; {конец циклов 1, 2}
Writeln('Число элементов массива C = ', K); {вывод K}
Writeln('Число элементов массива D = ', N); {вывод N}
End. {конец программы}