Общий вид алгоритма разветвляющегося процесса
Общий вид записи с условным оператором:
If «Условие» then «Оператор_1» else «Оператор_2»;
«Условие» − логическое выражение.
if, then, else − зарезервированные слова («если», «то», «иначе»).
Условие задачи:
Найдите значения функции ,
если |
Порядок выполнения действий:
1. Присвоение значений переменным A и B.
2. Организация цикла по переменной Х.
3. Вычисление функции D в зависимости от условия.
4. Вычисление значений функции F.
5. Вывод значения функции F.
1 способ: Цикл с предусловием (WHILE)
Program funk_F1; Var а, b, d, x, F: real; begin a:= 2.7; b:= -0.3; x:=1; While x<=8 do begin if x<2.3 then d:=(a+x)/x else if x>=5 then d:=a*x*x+b*x else d:=(a+b)/(x+1); F:=b*d+ln(d); writeln('F(',x:2:1, ')= ',F:6:2); x:=x+0.5; end; readln; end. |
2 способ: Цикл с постусловием (REPEAT…UNTIL)
Program funk_F2; var a, b, d, x, F:real; begin a:= 2.7; b:=-0.3; x:=1; repeat if x<2.3 then d:=(a+x)/x else if x>=5 then d:=a*x*x+b*x else d:=(a+b)/(x+1); F:=b*d+ln(d); Writeln ('F(',x:2:1, ')= ',F:6:2); x:=x+0.5; until x>8; readln; end. |
Задание 6. Обработка одномерных массивов
Одномерный массив − это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер.
Например, A(8) – одномерный массив, где А – имя массива, 8 – количество элементов.
Общий вид записи:
А1, А2 , А3……., Аn – это одномерный массив,
где Аi – элементы массива, i=1, 2, 3……n – индекс представляет собой переменную целого типа. Запись элемента массива на языке Паскаль А[i].
Общий вид записи описания одномерного массива:
Var «Имя массива»: Array[n1..n2] Of«Тип элементов»;
n1 − номер первого элемента;
n2 − номер последнего элемента.
Array, of –зарезервированные слова («массив», «из»).
Задача 1.В массиве X(15) вычислите максимальный элемент массива и его порядковый номер.
Обозначения: MAX– максимальный элемент массива; K – порядковый номер максимального элемента массива. Program Massiv1; Var {Описание используемых переменных} K, i, MAX: integer; {Описание массива X} X: array [1..15] of integer; begin {Организация цикла для ввода элементов массива с клавиатуры} for i:=1 to 15 do readln (X[i]); {Присвоение начальных значений максимальному элементу и его порядковому номеру} MAX:=X[1]; K:=1; {Организация цикла для поиска максимального элемента массива и его порядкового номера} for i:=2 to 15 do if X[i]>MAX then begin MAX:=X[i]; K:=i; end; {Вывод результатов вычисления на экран} writeln ('MAX=', MAX:2, ';K=', K); readln; end. |
Задача 2.В массиве R(8) найдите минимальный элемент и замените его на 5.
Обозначения: MIN– минимальный элемент массива; N – порядковый номер минимального элемента. Program Massiv2; Var R: array[1..8] of integer; i, n, MIN: integer; begin for i:=1 to 8 do readln (R[i]); {Присвоение начальных значений минимальному элементу и его порядковому номеру} MIN:= R[1]; n:=1; {Организация цикла для поиска минимального элемента массива и его порядкового номера} for i:=2 to 9 do if R[i]<MIN then begin MIN:= R[i]; n:=i; end; {Вывод результатов вычисления на экран} writeln ('MIN=',MIN); {Замена минимального элемента массива на 5} R[n]:=5; {Вывод нового массива на экран} for i:=1 to 8 do write (R[i]:5); readln; end. |
Задача 3.В массиве А(8) определите количество положительных и отрицательных элементов.
Обозначения: p – количество положительных элементов; ot – количество отрицательных элементов. Program Massiv3; Var p, ot, i: integer; a: array[1..8] of integer; begin writeln ('Введите элементы массива А'); for i:=1 to 8 do readln (А[i]); {Присвоение начальных значений количеству положительных и отрицательных элементов} p:=0; ot:=0; {Организация цикла для подсчёта количества положительных и отрицательных элементов массива} for i:=1 to 8 do if А[i]>0 then p:=p+1 else ot:=ot+1; {Вывод результатов вычисления на экран} writeln ('Количество положительных элементов=', p:2); writeln ('Количество отрицательных элементов=', ot:2); readln; end. |
Задача 4.В массиве X(15) вычислите сумму элементов массива меньших 10
и произведение элементов массива больших нуля.
Обозначения: S – сумма элементов массива, меньших 10; P – произведение элементов массива, больших нуля. Program Massiv4; Var i, S, P: integer; X: array [1..15] of integer; begin for i:=1 to 15 do readln (X[i]); {Присвоение начальных значений сумме и произведению} S:=0; P:=1; {Организация цикла для вычисления суммы и произведения элементов массива} for i:=1 to 15 do begin if X[i]<10 then S:=S+X[i]; if X[i]>0 then P:=P*X[i]; end; {Вывод результатов вычисления на экран} writeln ('S=', S); writeln ('P=', P); readln; end. |
Задача 5.В массиве D(15) найдите все положительные элементы и замените их на среднее арифметическое отрицательных элементов.
Обозначения: S – сумма отрицательных элементов массива; SA – среднее арифметическое отрицательных элементов массива; K –количество отрицательных элементов массива. Program Massiv5; Var K, I: integer; S, SA: real; D: array [1..15] of real; Begin write ('Введите элементы массива D'); for i:=1 to 15 do readln (D[i]); {Присвоение начальных значений сумме и количеству элементов} S:=0; K:=0; {Организация цикла для вычисления суммы и количества отрицательных элементов массива} for i:=1 to 15 do if D[i]<0 then begin S:=S+D[i]; K:=K+1; end; {Вычисление среднего арифметического элементов массива} SA:=S/K; {Вывод среднего арифметического элементов массива на экран} writeln ('SA=',SA:7:2); writeln ('Вывод нового массива D'); {Организация цикла для определения положительных элементов массива и замена их на среднее арифметическое и вывод нового массива на экран} for i:=1 to 15 do begin if D[i]>0 then D[i]:=SA; writeln ('D(',i, ')= ', D[i]:5:2); end; readln; end. |
Задача 6.В массиве С(7) отсортируйте все элементы по возрастанию.
Обозначения: m – вспомогательная переменная для перестановки элементов массива. Данные массива задаются типизированной константой, значения элементов массива выбираются произвольно Program Massiv6; Var k, i, M: integer; {Описание массива С с помощью типизированной константы} const c: array[1..7] of integer = (5,-4,2,7,-1,88,9); begin {Сортировка массива} for k:=1 to 7 do for i:=k+1 to 7 do if c[i]<=c[k] then begin M:=c[i]; c[i]:=c[k]; c[k]:=M; end; {Вывод нового массива на экран} for i:=1 to 7 do writeln ('c[',i,']=',c[i]:2); readln; end. |
Алгоритм сортировки массива:
1. Сравним между собой первый и второй элементы массива и переставим их (если это необходимо) в порядке возрастания. Затем то же самое проделаем со вторым и третьим элементами и т.д. до конца массива. В результате этих сравнений и перестановок наименьшее число окажется первым.
2. Второй этап сравнений и перестановок будет проходить для (N−1) элементов (N − количество элементов массива), начиная со второго до N. В этом случае второй элемент окажется наименьшим. Уменьшая каждый раз количество элементов на 1, операции сравнения и перестановок закончим тогда, когда останется один элемент массива.
Переменная M является в качестве подсобной для перестановки элементов.
Задача 7.В массиве Х(8) подсчитайте сумму элементов, стоящих на чётных местах.
Обозначения: S − сумма элементов, стоящих на чётных местах; i − переменная цикла с предусловием. Program Massiv7; Var i,s: integer; X: array[1..8] of integer; begin for i:=1 to 8 do readln (X[i]); {Присвоение начальных значений сумме и переменной} S:=0; i:=2; {Организация цикла с предусловием} While i<=8 do begin {Вычисление суммы и переход на следующее чётное место} S:=S+X[i]; i:=i+2; end; {Вывод результатов вычисления на экран} writeln ('S=',S); readln; end. |
Задание 7. Обработка двумерных массивов
Двумерный массив – это структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен.
Например, D(3×4) – двумерный массив, состоящий из 3 строк и 4 столбцов.
Общий вид записи:
где Dij– элементы массива; i– индекс строки; j– индекс столбца. |
Запись элементов двумерного массива на языке Паскаль D[i,j].
Общий вид записи описания двумерного массива:
Var «Имя массива»: array[n1..n2, m1..m2] of«Тип элементов»;
n1 − номер первой строки; n2 − номер последней строки; | m1 – номер первого столбца; m2 – номер последнего столбца. |
array, of –зарезервированные слова («массив», «из»).
Задача 1.Найдите максимальный элемент в каждой строке матрицы A(4×3).
Обозначения: MAX– максимальный элемент матрицы. Program Matriza1; Var i, j, MAX: integer; А:array[1..4,1..3] of integer; begin {Организация ввода матрицы с клавиатуры построчно}for i:=1 to 4 dofor j:=1 to 3 do readln (A[i, j]); {Организация цикла для поиска максимального элемента в каждой строке} for i:=1 to 4 do begin {Присвоение начального значения максимальному элементу текущей строки} MAX:=a[i,1]; for j:=2 to 3 do if a[i,j]>MAX then MAX:=a[i,j]; {Вывод результатов вычисления на экран} writeln ('Макс.элемент в', i, 'строке=', MAX); end; readln; end. |
Задача 2.В матрице D(3×3) найдите произведение элементов каждого столбца.
Обозначения: P – произведение элементов каждого столбца. Program Matriza2; Var {Описание переменных матрицы} i, j, p: integer; {Описание матрицы D} D: array[1..3,1..3] of integer; Begin {Организация ввода матрицы с клавиатуры построчно}for i: =1 to 3 dofor j : = 1 to 3 do readln (D[i, j]); {Организация цикла для вычисления произведения элементов каждого столбца} for j:=1 to 3 do begin {Присвоение начального значения произведению} P:=1; for i:=1 to 3 do p:=p*D[i,j]; {Вывод результатов вычисления на экран} writeln ('P=',P); end; readln; end. |
Задача 3.В матрице С(5×5) элементы, лежащие выше главной диагонали, уменьшите на сумму элементов главной диагонали.
Обозначения: Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j). S – сумма элементов главной диагонали. Для ввода данных используется функция Random (50) –датчик случайных чисел в диапазоне [0;49]. Program Matriza3; Var i, j, s: integer; C: array[1..5,1..5] of integer; begin {Запуск генератора случайных чисел} Randomize; Writeln ('Данная матрица'); For i:=1 to 5 do begin For j:=1 to 5 do begin C[i, j]:=Random(50); Write (' ',C[i, j]:4); End; Writeln; End; {Присвоение начального значения сумме} S:=0; {Вычисление суммы элементов главной диагонали матрицы} For i:=1 to 5 do S:=S+C[i, i]; Writeln ('S=',S); Writeln ('Новая матрица'); {Организация цикла для уменьшения элементов матрицы, лежащих выше главной диагонали на сумму} For i:=1 to 5 do begin For j:=1 to 5 do begin If i<j then C[i, j]:= C[i, j]-S; {Вывод новой матрицы на экран} Write (' ',C[i, j]:4); end; Writeln; End; Readln; End. |
Задача 4.В матрице В(3×3) все элементы, лежащие на главной диагонали,
замените на 0.
Данные задаются типизированной константой, значения элементов массива выбираются произвольно Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j). Program Matriza4; Var i, j: integer; {Описание матрицы В с помощью типизированной константы} const B: array[1..3,1..3] of integer= ((1,-3,2), (5,-4,-2), (-1,5,8)); begin {Организация цикла для замены элементов главной диагонали матрицы на0} for i:=1 to 3 do for j:=1 to 3 do if i=j then B[i, j]:=0 {Вывод новой матрицы на экран} for i:=1 to 3 do begin for j:=1 to 3 do write (B[i, j]:5); writeln; end; readln; end. |
Задача 5.В матрице А(4×4) определите в каждом столбце количество отрицательных элементов.
Обозначения: k– количествоотрицательных элементов. Program Matriza5; Var i, j, k: integer; A: array[1..4,1..4] of integer; begin for i : = 1 to 4 do for j : = 1 to 4 do readln (А[i, j]); {Организация цикла для подсчёта количества отрицательных элементов в каждом столбце} for j:=1 to 4 do begin {Присвоение начального значения количеству элементов} k:=0; for i:=1 to 4 do if A[i,j]<0 then k:=k+1; {Вывод результатов вычисления на экран} writeln ('В столбце №',j, 'кол-во отриц.элементов- ',k); end; readln; end. |
Задача 6.Выполните транспонирование матрицы Х(3×3) (замените строки
столбцами).
Обозначения: Yij – элементы полученной матрицы после транспонирования. Program Matriza6; Var i, j: integer; Y: array[1..3,1..3] of integer; X: array[1..3,1..3] of integer; begin {Организация ввода матрицы X с клавиатуры} for i:=1 to 3 do for j:=1 to 3 do readln (X[i, j]); {Организация цикла для замены строк столбцами матрицы} for i:=1 to 3 do for j:=1 to 3 do Y[j,i]:=X[i,j]; {Вывод новой матрицы Y на экран} for i:=1 to 3 do begin for j:=1 to 3 do write (Y[i,j]:5); writeln; end; readln; end. |
Задача 7.Определите произведение элементов четных столбцов матрицы В(3×4).
Обозначения: Р – произведение элементов. Program Matriza7; Var Р, i, j: integer; B: array[1..3,1..4] of integer; begin for i : = 1 to 3 do for j : = 1 to 4 do readln (B[i, j]); j:=2; {Организация цикла с предусловием} while j<=4 do begin {Присвоение начального значения произведению} P:=1; {Вычисление произведения} for i:=1 to 3 do Р:=Р*В[i,j]; {Вывод результатов вычисления на экран} writeln ('Р=',Р); {Переход на следующий чётный столбец} j:=j+2; end; readln; end. |
Задача 8.В каждой строке матрицы А(3×3) определите сумму положительных элементов.
Обозначения: S– сумма положительных элементов. Program Matriza8; Var s, i, j: integer; A: array[1..3,1..3] of integer; begin for i : = 1 to 3 do for j : = 1 to 3 do readln (А[i, j]); {Организация цикла для вычисления суммы положительных элементов матрицы в каждой строке} for i:=1 to 3 do begin {Присвоение начального значения сумме} S:=0; for j:=1 to 3 do if A[i,j]>0 then S:=S+A[i,j]; {Вывод результатов вычисления на экран} writeln ('Сумма ',i,' строки=',S); end; readln; end. |