- •Кафедра Естественно-научных дисциплин учебно-методическое пособие по программированию
- •Глава 1. Алгоритмы линейной и разветвляющейся структуры
- •Результаты работы Pascal-программы
- •Система тестов
- •Система тестов
- •Система тестов
- •Результаты работы Pascal-программы:
- •Задачи для самостоятельного решения
- •Глава 2. Алгоритмы, реализуемые с помощью циклов типа для
- •Система тестов
- •Исполнение алгоритма
- •Задачи для самостоятельного решения
- •Глава 3. Алгоритмы, реализуемые с помощью вложенных циклов типа для
- •Пример 3.3. В заданной матрице a(n, m) поменять местами строки с номерами p и
- •Задачи для самостоятельного решения
- •Глава 4. Алгоритмы, реализуемые с помощью циклов типа пока
- •Цикл типа пока с прерыванием
- •Цикл типа пока без прерывания
- •Пример 4.1. Определить, является ли заданная последовательность чисел a1, a2, ..., aN монотонно убывающей. Система тестов
- •Система тестов
- •Результаты работы Pascal-программы
- •Система тестов
- •Задачи для самостоятельного решения
- •Глава 5. Алгоритмы, реализуемые с помощью вложенных циклов типа пока
- •Система тестов
- •Система тестов
- •Система тестов
- •Система тестов
- •Блок-схема (фрагмент)
- •Задачи для самостоятельного решения
- •Глава 6. Алгоритмы, реализуемые с помощью комбинации циклов типа для и пока
- •Система тестов
- •Система тестов
- •Исполнение алгоритма
- •Задачи для самостоятельного решения
- •Глава 7. Алгоритмы обработки символьной информации
- •Типы данных, используемые для обработки символьной информации
- •Функции и команды обработки строк
- •Система тестов
- •Исполнение алгоритма
- •Исполнение алгоритма
- •Система тестов
- •Задачи для самостоятельного решения
Система тестов
Обозначения:
N - количество игроков в команде "Спартак";
M - количество игроков в команде "Зенит";
S(N) - массив ростов игроков команды "Спартак" (см);
Z(N) - массив ростов игроков команды "Зенит" (см).
Алгоритмический язык
алг Рост (арг цел N, M, арг целтаб S[1:N], Z[1:M], резлит Otvet)
нач цел i, j, лит Flag
i:=1; Flag:="Нет"
нц пока (i<=N) и (Flag="Нет") |цикл по игрокам "Спартака"
j:=1
нц пока (j<=M) и (Flag="Нет") |цикл по игрокам "Зенита"
если S[i]=Z[j] | проверка равенства ростов
то Flag:="Да"
иначе j:=j+1
все
кц
i:=i+1
кц
если Flag="Да"
то Otvet:="Есть игроки одинакового роста"
иначе Otvet:="Нет игроков одинакового роста"
все
кон
Turbo Pascal
Program EqualHeight;
Uses Crt;
Type Mas = Array [1..20] of Integer;
Var
Spart, Zenit : Mas; {массивы ростов игроков}
N, M, i, j : Integer; {N - к-во игроков "Спартака", M -"Зенита"}
Flag : Boolean;
Name : String; {название команды}
{------------------------------------------}
Procedure Input(NCommand : Integer; Var Number : Integer; Var Rost:Mas);
{NCommand - номер команды (равен 1 или 2)}
Begin {описание процедуры ввода данных по команде}
If NCommand=1 then Name:='Спартак' else Name:='Зенит';
Write('Введите количество игроков команды ', Name, ': ');
ReadLn(Number);
WriteLn('Введите роста игроков:'); Блок-схема (фрагмент)
For i:= 1 to Number do
begin Write(i, ' игрок - ');
ReadLn(Rost[i])
end;
WriteLn;
End;
{------------------------------------------}
Procedure Search; {описание процедуры поиска решения задачи}
Begin
i:=1; Flag:=FALSE;
While (i<=N) and not Flag do {цикл по игрокам Спартака}
begin
j:=1;
While (j<=M) and not Flag do {цикл по игрокам Зенита}
If Spart[i]=Zenit[j] then Flag:=TRUE
else j:=j+1;
i:=i+1;
end;
End;
{------------------------------------------------------------}
Procedure OutResult; {описание процедуры вывода результата}
Begin
Write('О т в е т : в командах Спартак и Зенит ');
If Flag then Write('есть игроки ') else Write('нет игроков');
WriteLn('одинакового роста.');
ReadLn;
End;
{------------------------------------------}
BEGIN ClrScr; {вызов процедур}
Input(1, N, Spart); {ввод данных для первой команды}
Input(2, M, Zenit); {ввод данных для второй команды}
Search; {поиск решения задачи}
OutResult; {вывод результата}
END.
Пример 5.4. Из партии шин отобрать две шины, диаметры которых отличаются не
более, чем на D см, а вес — не более, чем на W грамм.