Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
файл 2 примеры решения задач.doc
Скачиваний:
19
Добавлен:
31.05.2015
Размер:
404.99 Кб
Скачать

Программа

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] заштрихованной области (JI) и неотрицательности элемента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. {конец программы}