Дисциплина
«Основы программирования»
Задание: Разработать алгоритм в виде блок-схемы
и написать текст программы, для нахождения
результата произведения:
Q =
начало
Вывод сообщения
Введите целое число, кроме 3 и -3
Ввод В
( B 3 ) and ( B -3 )
-
+
Q : = 1
K : = 3 , 15
Вывод Q
Q : = Q * SQRT ( k + 4 ) / ( 9 – SQR ( В ) )
конец
Program Primer ;
Uses CRT ;
Var B : integer ;
k : byte ;
Q : real ;
BEGIN
Repeat { начало цикла }
ClrScr ;
Write ( ‘ Введите целое число, кроме 3 и -3 : ‘ ) ;
ReadLN ( B ) ;
Until ( B 3 ) and ( B -3 ) ; { критерий выхода из цикла }
Q : = 1 ;
For K : = 3 to 15 do
Q : = Q * SQRT ( k + 4 ) / ( 9 – SQR ( В ) ) ;
WriteLN ( ‘ Q = ‘ , Q : 10 : 2 ) ; { форматный вывод }
ReadKey ; { задержка выполнения программы }
END.
Задание: Разработать алгоритм в виде блок-схемы
и написать текст программы, для нахождения
суммы:
N =
суммирование производить при условии, если
= 0 Введите целое число Вывод сообщения Ввод A N : = 0 - Y + Вывод N N : = N + SQR ( Y - A ) конец Y : = Y + 1 " width="640"
начало
Введите целое положительное число
Вывод сообщения
Ввод M
Y : = - 8
-
+
M = 0
Введите
целое число
Вывод сообщения
Ввод A
N : = 0
-
Y
+
Вывод N
N : = N + SQR ( Y - A )
конец
Y : = Y + 1
= 0 ; { критерий выхода из цикла } Y : = - 8 ; N : = 0 ; Write ( ‘ Введите целое число : ‘ ) ; ReadLN ( A ) ; While Y do { начало цикла } begin N : = N + SQR ( Y - A ) ; Y : = Y + 1 ; end ; WriteLN ( ‘ N = ‘ , N ) ; ReadLn ; { задержка выполнения программы } END. " width="640"
Program Primer ;
Var Y , A , N : integer ;
M : word ;
BEGIN
Repeat { начало цикла }
Write ( ‘ Введите целое положительное число : ‘ ) ;
ReadLN ( M ) ;
Until M = 0 ; { критерий выхода из цикла }
Y : = - 8 ; N : = 0 ;
Write ( ‘ Введите целое число : ‘ ) ;
ReadLN ( A ) ;
While Y do { начало цикла }
begin
N : = N + SQR ( Y - A ) ;
Y : = Y + 1 ;
end ;
WriteLN ( ‘ N = ‘ , N ) ;
ReadLn ; { задержка выполнения программы }
END.
Пример : Установить, имеется ли в введенном
тексте баланс открывающихся и
закрывающихся скобок.
Начало
Вывод сообщения
Введите любое предложение
Ввод S
L : = 0
P : = 0
D : = length ( S )
i : = 1, D
+
-
S[ i ] = ‘ ) ’
-
+
S [ i ] = ‘ ( ‘
P : = P + 1
L : = L + 1
-
( L = 0 ) and
( P = 0 )
+
В предложе-
нии скобок нет!
Вывод
сообщения
+
-
P = L
Имеется баланс скобок
Вывод
сообщения
Вывод
сообщения
Нет
баланса
скобок
Конец
Program Stroka 1;
Uses CRT ; { подключение модуля для управления экраном }
Var S : string ; { исходная строка }
P : byte ; { количество правых скобок в строке S }
L : byte ; { количество левых скобок в строке S }
i : byte ; { индексы элементов строки S }
D : byte ; { длина введённой строки }
Begin
ClrScr ; { очистка экрана }
WriteLn ( ' Введите любое предложение: ' ) ;
ReadLn ( S ) ;
L : = 0 ;
P : = 0 ;
D : = Length ( S ) ; { определили длину введённой строки }
For i : = 1 to D do
IF S [ i ] = ‘ ) ' then p : = p + 1 else
IF S [ i ] = ‘ ( ' then L : = L + 1 ;
IF ( L = 0 ) and ( P = 0 ) THEN
WriteLn ( ' В ведённом предложении скобок нет! ' )
ELSE
IF L = P THEN
Writeln ( ' В введённой строке имеется баланс скобок ' )
ELSE
Writeln ( ' В введённой строке нет баланса скобок ' ) ;
ReadKey ; { задержка выполнения программы }
End .
Пример :
В ведённом предложении определить
и вывести на экран количество слов заканчивающихся буквой Я (или я ),
а также сами эти слова .
начало
Введите предложение
Вывод сообщения
Ввод S
S : = S + ‘ ‘
Slovo : = ‘’
I : = 1
Kol : = 0
I
-
+
C
A
B
C
A
-
+
S [ i ] ‘ ‘
D : = Length ( Slovo )
Slovo : = Slovo + S [ i ]
i : = i + 1
( Slovo [ D ] = ‘ Я ‘ )
OR
( Slovo [ D ] = ‘ я ‘ )
-
+
Kol : = Kol + 1
Вывод Slovo
Slovo : = ‘’
i : = i + 1
B
+
Kol = 0
-
Нет слов
заканчива
ющихся
на Я или я
Вывод Kol
Вывод сообщения
конец
Мы живём на планете Земля
S =
планете
живём
на
5
7
Земля
2
ы
М
5
2
D =
Slovo =
26
21
20
9
1 3
1 2
1 0
4
3
2
1
1
К ol =
i =
Program Stroka ;
Uses CRT ; { подключение модуля }
Var S : string ; { исходная строка }
Slovo : string ; { отдельное слово из строки S }
Kol : byte ; { количество слов, удовлетворяющих условию }
i : byte ; { индексы элементов строки S }
D : byte ; { длина слова }
Begin
ClrScr ; { очистка экрана }
Write ( ' Введите предложение: ' ) ;
ReadLn (S) ;
S : = S + ' ' ; { добавляем к исходной строке пробел для }
{ возможности просмотра последнего слова предложения }
Slovo : = ' ' ; { резервируем переменную под каждое слово строки S }
Kol : = 0 ; { первоначальное значение для количества слов }
i : = 1 ; { индекс первого символа строки S }
While i do { пока индексы не вышли за }
{ длину строки S … }
Begin
While S [ i ] ' ' do begin { формируем отдельное слово }
Slovo : = Slovo+ S[ i ];
i : = i + 1;
end ;
D : = Length ( Slovo ) ;
IF ( Slovo [ D ] = ' я ' ) or ( Slovo [ D ] = ' Я ' ) THEN
begin
Kol : = Kol +1; { находим количество слов }
WriteLn ( Slovo ) ; { выводим на экран слово }
end ;
Slovo : = ' ' ; { очищаем переменную для следующего слова }
i : = i + 1;
End ;
IF Kol = 0 THEN
Writeln ( ' Нет слов, удовлетворяющих условию ' )
ELSE
Writeln ( ' Количество слов равно ', kol ) ;
ReadKey ; { задержка выполнения программы }
End .
Задача :
Организовать ручное заполнение
целочисленного вектора М,
размерностью 10.
Вывести на экран элементы вектора,
а также сумму всех отрицательных
его элементов и количество
элементов, больших числа 5.
- 8
9
3
8
1
7
4
3
- 2
М =
Сумма отрицательных элементов равна - 15
Количество элементов больших 5 , равно 3
Начало
i : = 1, 10
S : = 0
Введите
элемент
вектора
Вывод сообщения
K : = 0
Ввод M [ i ]
Вывод
сообщения
Исходный
вектор
i : = 1, 10
Вывод M [ i ]
5 + - K : = K + 1 Конец " width="640"
i : = 1, 10
Вывод S
M [ i ]
-
+
S : = S + M [ i ]
i : = 1, 10
Вывод K
M [ i ] 5
+
-
K : = K + 1
Конец
Program Vektor ;
Var
M : array [ 1 . . 10 ] of integer ; { вектор }
i : byte ; { индекс элементов вектора }
K : byte ; { количество элементов, больших числа 5 }
S : integer ; { сумма отрицательных элементов }
BEGIN
FOR i : = 1 to 10 do { заполнение вектора }
begin
Write ( ‘ Введите элемент вектора : ‘ ) ;
ReadLn ( M [ i ] ) ;
end ;
S : = 0 ; { первоначальное значение суммы }
K : = 0 ; { первоначальное значение количества }
Writeln ( ‘ Исходный вектор ‘ ) ;
FOR i : = 1 to 10 do { вывод вектора на экран }
Write ( M [ i ] : 7 ) ; { форматный вывод }
WriteLn ; { переход на новую строку }
5 THEN K : = K + 1 ; Writeln ( ‘ Количество элементов удовлетворяющих условию = ‘ , К ) ; ReadLn; { задержка выполнения программы } END. " width="640"
FOR i : = 1 to 10 do { поиск суммы }
IF M [ i ] THEN S : = S + M [ i ] ;
Writeln ( ‘ Сумма отрицательных элементов вектора равна ‘ , S ) ;
WriteLn ; { переход на новую строку }
FOR i : = 1 to 10 do { поиск количества }
IF M [ i ] 5 THEN K : = K + 1 ;
Writeln ( ‘ Количество элементов удовлетворяющих условию = ‘ , К ) ;
ReadLn; { задержка выполнения программы }
END.
Задача :
Организовать ручное заполнение
целочисленного одномерного массива
А, размерностью N .
Заменить все отрицательные элементы
на число Р .
Вывести на экран элементы вектора ДО
и ПОСЛЕ изменения.
44
Р =
- 2
9
- 8
А =
4
7
1
8
3
3
1
7
4
3
44
8
44
3
44
9
А =
=1) and (N i : = 1, N Введите элемент вектора Вывод сообщения A Ввод A [ i ] " width="640"
Начало
Введите размерность
вектора ( max = 15 )
Вывод
сообщения
Ввод N
-
+
(N=1) and
(N
i : = 1, N
Введите
элемент
вектора
Вывод сообщения
A
Ввод A [ i ]
Исходный
вектор
A
Вывод сообщения
i : = 1, N
Вывод
сообщения
Введите
число для замены
Вывод A [ i ]
Ввод Р
i : = 1, N
А [ i ]
+
-
B
А [ i ] : = P
Вектор ПОСЛЕ замены элементов
B
Вывод сообщения
i : = 1, N
Вывод A [ i ]
Конец
= 1 ) and ( N ; FOR i : = 1 to N do { заполнение вектора } begin Write ( ‘ Введите элемент вектора : ‘ ) ; ReadLn ( A [ i ] ) ; end ; Writeln ( ‘ Исходный вектор ‘ ) ; FOR i : = 1 to N do { вывод вектора на экран } Write ( A [ i ] : 5 ) ; { форматный вывод } " width="640"
Program Vektor ;
Var
A : array [ 1 . . 15 ] of integer ; { вектор }
i : byte ; { индекс элементов вектора }
N : byte ; { количество элементов в векторе }
P : integer ; { число для замены }
BEGIN
REPEAT { проверка корректности ввода размерности }
Write ( ‘ Введите размерность вектора : ‘ ) ;
ReadLn ( N ) ;
UNTIL ( N = 1 ) and ( N ;
FOR i : = 1 to N do { заполнение вектора }
begin
Write ( ‘ Введите элемент вектора : ‘ ) ;
ReadLn ( A [ i ] ) ;
end ;
Writeln ( ‘ Исходный вектор ‘ ) ;
FOR i : = 1 to N do { вывод вектора на экран }
Write ( A [ i ] : 5 ) ; { форматный вывод }
WriteLn ; { переход на новую строку }
Write ( ‘ Введите число для замены : ‘ ) ;
ReadLn ( P ) ;
FOR i : = 1 to N do { замена отрицательных элементов }
IF A [ i ] THEN A [ i ] : = P ;
Writeln ( ‘ Вектор ПОСЛЕ замены элементов ‘ ) ;
FOR i : = 1 to N do { вывод вектора на экран }
Write ( A [ i ] : 5 ) ; { форматный вывод }
ReadLn; { задержка выполнения программы }
END.
Задача :
Организовать заполнение
целочисленного вектора Y ,
размерностью 10, случайным образом .
Найти в массиве минимальный элемент
и вывести его на экран.
Начало
Randomize
i : = 1, 10
Y [ i ] : = Random ( 99 )
Вывод
сообщения
Исходный
вектор
i : = 1, 10
Вывод Y [ i ]
Min : = Y [ 1 ]
i : = 1, 10
Y [ i ]
+
-
Вывод Min
Min : = Y [ i ]
Конец
Program Vektor ;
Uses CRT ;
Var
Y : array [ 1 . . 10 ] of integer ; { вектор }
i : byte ; { индекс элементов вектора }
Min : integer ; { минимальный элемент }
BEGIN
ClrScr ;
Randomize ; { инициализация генератора случайных чисел }
FOR i : = 1 to 10 do { заполнение вектора }
Y [ i ] : = RANDOM ( 99 ) ;
Writeln ( ‘ Исходный вектор ‘ ) ;
FOR i : = 1 to 10 do { вывод вектора на экран }
Write ( Y [ i ] : 5 ) ; { форматный вывод }
WriteLn ; { переход на новую строку }
Min : = Y [ 1 ] ;
FOR i : = 1 to 10 do { поиск минимального элемента }
IF Y [ i ] THEN Min : = Y [ i ] ;
Writeln ( ‘ Минимальный элемент вектора = ‘ , Min ) ;
ReadLn; { задержка выполнения программы }
END.
Задача :
Организовать ручное заполнение
одномерного массива Z ,
размерностью 8, вещественными
числами.
Переставить местами первый элемент
массива и элемент массива, равный числу Х.
Вывести на экран массив ДО и ПОСЛЕ перестановки.
1.1
X =
8.1
-2.3
9 .7
Z =
- 3 .1
4 .3
7 .9
- 8 .2
1.1
8.1
9 .7
-2.3
- 8 .2
7 .9
4 .3
- 3 .1
1.1
Z =
4
Index =
1.1
X =
Z =
- 3 .1
4 .3
7 .9
- 8 .2
9 .7
8.1
-2.3
1.1
A =
Начало
i : = 1, 8
Введите
элемент
вектора
Вывод сообщения
Ввод Z [ i ]
Исходный
вектор
Вывод
сообщения
i : = 1, 8
Вывод Z [ i ]
A
A
Вывод
сообщения
Введите
число для перестановки
Ввод Х
i : = 1, 8
Z [ i ] = Х
+
-
B
index : = i
B
Index = 0
-
+
А : = Z [ 1 ]
Z [ 1 ] : = Z [ index ]
Массив не
изменился
Вывод
сообщения
Z [ index ] : = A
Массив
ПОСЛЕ
замены
Вывод сообщения
i : = 1, 8
Вывод Z [ i ]
Конец
Program Vektor ;
Var
Z : array [ 1 . . 8 ] of REAL ; { вектор }
i : byte ; { индекс элементов вектора }
A : reaL ; { для перестановки элементов }
X : reaL ; { число для сравнения }
index : byte ; { индекс переставляемого элемента }
BEGIN
FOR i : = 1 to 8 do { заполнение вектора }
begin
Write ( ‘ Введите элемент вектора : ‘ ) ;
ReadLn ( Z [ i ] ) ;
end ;
Writeln ( ‘ Исходный вектор ‘ ) ;
FOR i : = 1 to 8 do { вывод вектора на экран }
Write ( Z [ i ] : 6 : 1 ) ; { форматный вывод }
WriteLn ; { переход на новую строку }
Write ( ‘ Введите число для ПЕРЕСТАНОВКИ : ‘ ) ;
ReadLn ( Х ) ;
FOR i : = 1 to 8 do { поиск индекса переставляемого элемента }
IF Z [ i ] = X THEN index : = i ;
IF index = 0 THEN Writeln ( ‘ Вектор НЕ изменился ‘ )
ELSE
begin
A : = Z [ 1 ] ;
Z [ 1 ] : = Z [ index ] ;
Z [ index ] : = A ;
Writeln ( ‘ Вектор ПОСЛЕ перестановки элементов ‘ ) ;
FOR i : = 1 to 8 do { вывод вектора на экран }
Write ( Z [ i ] : 6 : 1 ) ; { форматный вывод }
end ;
ReadLn; { задержка выполнения программы }
END.
Задача :
Организовать ручное заполнение
одномерного массива В,
размерностью 10, целыми числами.
Найти и вывести на экран произведение
чётных элементов массива.
Начало
i : = 1, 10
Введите
элемент
вектора
Вывод сообщения
Ввод В [ i ]
Исходный
вектор
Вывод
сообщения
i : = 1, 10
Вывод В [ i ]
A
A
Pr : = 1
F : = 5
i : = 1, 10
ODD ( B [ i ] ) = False
+
-
F : = 7
B
Pr : = Pr * B [ i ]
B
F = 5
+
-
Вывод Pr
В массиве нет
чётных
элементов
Вывод
сообщения
Конец
Program Vektor ;
Var
B : array [ 1 . . 10 ] of integer ; { вектор }
i : byte ; { индекс элементов вектора }
F : byte ; { переключатель }
Pr : integer ; { произведение чётных элементов }
BEGIN
FOR i : = 1 to 10 do { заполнение вектора }
begin
Write ( ‘ Введите элемент вектора : ‘ ) ;
ReadLn ( B [ i ] ) ;
end ;
Writeln ( ‘ Исходный вектор ‘ ) ;
FOR i : = 1 to 10 do { вывод вектора на экран }
Write ( B [ i ] : 6 ) ; { форматный вывод }
WriteLn ; { переход на новую строку }
F : = 5 ;
Pr : = 1 ; { первоначальное значение произведения }
FOR i : = 1 to 10 do { поиск произведения чётных элементов }
IF ODD ( Z [ i ] ) = FALSE THEN begin
F : = 7 ;
Pr : = Pr * B [ i ] ;
end ;
IF F = 5 THEN Writeln ( ‘ В массиве НЕТ чётных элементов ‘ )
ELSE Writeln ( ‘ Произведение чётных элементов равно ‘ , Pr ) ;
ReadLn; { задержка выполнения программы }
END.
Задача :
Организовать ручное заполнение
двумерного массива В, размерностью
5 х 7, целыми числами.
Найти и вывести на экран количество
чётных элементов массива и максимальный
элемент матрицы.
Начало
i : = 1, 5
j : = 1, 7
Введите
элемент
матрицы
Вывод сообщения
Ввод В [ i , j ]
A
A
Исходная
матрица
Вывод сообщения
i : = 1, 5
j : = 1, 7
Переход на
новую строку
Вывод В [ i , j ]
В
В
Kol : = 0
i : = 1, 5
j : = 1, 7
Вывод
Kol
ODD ( B [ i , j ] ) =
false
+
-
Kol : = Kol + 1
C
Max + - Max : = B [ i , j ] Конец " width="640"
C
Max : = B [ 1, 1 ]
i : = 1, 5
j : = 1, 7
Вывод
Max
B [ i , j ] Max
+
-
Max : = B [ i , j ]
Конец
Задача :
Организовать случайное заполнение
двумерного массива А, размерностью
3 х 5, целыми числами.
Найти и вывести на экран произведение
нечётных элементов массива в столбце W .
Начало
Randomize
i : = 1, 3
j : = 1, 5
A [ i , j ] : = Random ( 99 )
A
A
Исходная
матрица
Вывод сообщения
i : = 1, 3
j : = 1, 5
Переход на
новую строку
Вывод A [ i , j ]
В
=1) and (W A " width="640"
Вывод
сообщения
Введите номер столбца
Ввод W
-
+
(W=1) and
(W
A
В
P : = 1
F : = 4
i : = 1, 3
ODD ( A [ i , W ] ) =
true
+
-
F : = 7
P : = P * A [ i , W ]
C
C
F = 7
+
-
Вывод Р
Вывод
сообщения
В столбце
нет нечётных
элементов
Конец
Задача :
Организовать ручное заполнение
двумерного массива В, размерностью
9 х 9, целыми числами.
Заменить все элементы главной диагонали
на сумму их индексов.
Вывести на экран массив В ДО и ПОСЛЕ
изменения.
Начало
i : = 1, 9
j : = 1, 9
Введите
элемент
матрицы
Вывод сообщения
Ввод В [ i , j ]
A
A
Матрица
ДО изменения
Вывод сообщения
i : = 1, 9
j : = 1, 9
Переход на
новую строку
Вывод В [ i , j ]
В
В
i : = 1, 9
В [ i , i ] : = i + i
С
С
Матрица
ПОСЛЕ изменений
Вывод сообщения
i : = 1, 9
j : = 1, 9
Переход на
новую строку
Вывод В [ i , j ]
Конец
Задача :
Организовать случайное заполнение
двумерного массива М, размерностью
Т х Т, целыми числами.
Заменить все элементы выше главной
диагонали на первый элемент матрицы.
Вывести на экран массив М ДО и ПОСЛЕ
изменения.
1 0 ) Размерность Введена не верно ! Вывод сообщения + - ( Т =1) and ( Т 0 ) A " width="640"
Начало
Вывод
сообщения
Введите размерность
квадратной матрицы
( max = 10 )
Ввод Т
-
+
( Т or
( Т 1 0 )
Размерность
Введена не верно !
Вывод
сообщения
+
-
( Т =1) and
( Т 0 )
A
A
Randomize
i : = 1, Т
j : = 1, Т
М [ i , j ] : = Random ( 99 )
В
В
Матрица
ДО изменения
Вывод сообщения
i : = 1, Т
j : = 1, Т
Переход на
новую строку
Вывод М [ i , j ]
С
С
i : = 1, T
j : = 1, T
i
+
-
M [ i , j ] : = M [ 1 , 1 ]
D
D
Матрица
ПОСЛЕ изменений
Вывод сообщения
i : = 1, T
j : = 1, T
Переход на
новую строку
Вывод M [ i , j ]
Конец