- •Кафедра Естественно-научных дисциплин учебно-методическое пособие по программированию
- •Глава 1. Алгоритмы линейной и разветвляющейся структуры
- •Результаты работы Pascal-программы
- •Система тестов
- •Система тестов
- •Система тестов
- •Результаты работы Pascal-программы:
- •Задачи для самостоятельного решения
- •Глава 2. Алгоритмы, реализуемые с помощью циклов типа для
- •Система тестов
- •Исполнение алгоритма
- •Задачи для самостоятельного решения
- •Глава 3. Алгоритмы, реализуемые с помощью вложенных циклов типа для
- •Пример 3.3. В заданной матрице a(n, m) поменять местами строки с номерами p и
- •Задачи для самостоятельного решения
- •Глава 4. Алгоритмы, реализуемые с помощью циклов типа пока
- •Цикл типа пока с прерыванием
- •Цикл типа пока без прерывания
- •Пример 4.1. Определить, является ли заданная последовательность чисел a1, a2, ..., aN монотонно убывающей. Система тестов
- •Система тестов
- •Результаты работы Pascal-программы
- •Система тестов
- •Задачи для самостоятельного решения
- •Глава 5. Алгоритмы, реализуемые с помощью вложенных циклов типа пока
- •Система тестов
- •Система тестов
- •Система тестов
- •Система тестов
- •Блок-схема (фрагмент)
- •Задачи для самостоятельного решения
- •Глава 6. Алгоритмы, реализуемые с помощью комбинации циклов типа для и пока
- •Система тестов
- •Система тестов
- •Исполнение алгоритма
- •Задачи для самостоятельного решения
- •Глава 7. Алгоритмы обработки символьной информации
- •Типы данных, используемые для обработки символьной информации
- •Функции и команды обработки строк
- •Система тестов
- •Исполнение алгоритма
- •Исполнение алгоритма
- •Система тестов
- •Задачи для самостоятельного решения
Глава 6. Алгоритмы, реализуемые с помощью комбинации циклов типа для и пока
Схема циклов типа пока / для Схема циклов типа для / пока
нц пока <условие> нц для i от A до B
тело внешнего цикла тело внешнего цикла
. . . . . . . . . . . .
нц для i от A до B нц пока <условие>
тело внутреннего цикла тело внутреннего цикла
кц кц
. . . . . . . . . . . .
кц кц
Пример 6.1. В заданной целочисленной матрице A(N, M) найти количество строк,
содержащих нули.
Тест
Данные |
Результат |
||
N |
M |
Матрица А |
К |
3 |
3 |
2 |
Алгоритмический язык
алг Строки с нулями (арг цел N, M, арг цел таб A[1:N, 1:M], рез цел K)
дано | N>0, M>0
нач цел i, j, лит Flag
K := 0
нц для i от 1 до N | цикл по всем строкам
j:= 1; Flag := "Нет"
нц пока (j <= M) и (Flag = "Нет") | цикл до нулевого элемента строки
если A[i, j] = 0
то Flag:="Да"; K:=K+1
иначе j:=j+1
все
кц
кц
кон
Исполнение алгоритма Блок-схема
Обозначение проверяемого условия:
(j<=M) и (Flag = "Нет" ) => (1)
Turbo Pascal
Program ContainZero;
Uses Crt;
Var A : Array[1..10, 1..10] of Integer;
N, M, i, j : Integer;
K : Integer; {K - количество строк, содержащих нули}
{--------------------------------------------}
Procedure InputOutput; {описание процедуры ввода-вывода данных}
Begin
ClrScr;
Write('Количество строк - '); ReadLn(N);
Write('Количество столбцов - '); ReadLn(M);
For i := 1 to N do
For j := 1 to M do
begin Write('A[' , i , ' , ' , j , ']= ? ');
ReadLn(A[i, j]);
end;
WriteLn; WriteLn('Исходная матрица :');
For i := 1 to N do
begin
For j := 1 to M do Write(A[i, j] : 5);
WriteLn;
end; WriteLn;
End; { of InputOutput }
{--------------------------------------------}
Function Zero(i:Integer):Boolean; {описание функции, принимающей }
Var Flag : Boolean; {значение Истина, если в строке есть }
Begin {нули, и Ложь, если в строке нет нулей}
j:=1; Flag:=FALSE;
While (j<=M) and not Flag do
If A[i, j]=0 then Flag:=TRUE else j:=j+1;
Zero:=Flag; {значение функции присваивается имени функции}
End;
{--------------------------------------------}
BEGIN
InputOutput; {вызов процедуры ввода-вывода}
K:=0;
For i := 1 to N do
If Zero(i) then K:=K+1; {Zero(i) - указатель функции Zero}
WriteLn('Количество строк, содержащих нули, равно ', K);
ReadLn;
END.
Пример 6.2. Дана целочисленная матрица A(N, M). Определить, встречается ли
заданное целое K среди максимальных элементов столбцов этой матрицы.