{ Пример 5.4. Из партии шин отобрать две шины, диаметры
которых отличаются не более, чем на D см,
а вес - не более, чем на W грамм.
Система тестов
╔═══════╤════════╤══════════════════════════════════╤═══════════╗
║ │ │ Данные │ ║
║ Номер │ Прове- ├──────┬────────┬─────┬────────────┤ ║
║ теста │ ряемый │Колич.│ │ │ Допуски │ Результат ║
║ │ случай │ шин │Диаметры│ Вес ├──────┬─────┤ ║
║ │ │ │ │ │ диам.│ вес │ ║
╟───────┼────────┼──────┼────────┼─────┼──────┼─────┼───────────╢
║ │ "Есть │ │ 103 │ 98 │ │ │ ║
║ 1 │ такие │ 4 │ 100 │ 100 │ 1 │ 1 │"2-я и 3-я ║
║ │ шины" │ │ 99 │ 101 │ │ │ шины" ║
║ │ │ │ 101 │ 99 │ │ │ ║
╟───────┼────────┼──────┼────────┼─────┼──────┼─────┼───────────╢
║ │ "Нет │ │ 100 │ 100 │ │ │"Подходящих║
║ 2 │ таких │ 3 │ 98 │ 100 │ 1 │ 1 │ шин нет" ║
║ │ шин" │ │ 100 │ 98 │ │ │ ║
╚═══════╧════════╧══════╧════════╧═════╧══════╧═════╧═══════════╝
}
Program MyTyres;
Uses Crt;
Type Mas = Array [1..100] of Real;
Var
Number, i, j : Integer; { Number - количество шин }
Diameter, Weight : Mas; { массивы параметров шин }
First, Second : Integer; { номера отобранных шин }
Flag : Boolean;
D, W : Real; {D, W - допуски по параметрам}
{-------------------------------------------------------}
Procedure InputOutput; {описание процедуры ввода-вывода данных}
Begin
ClrScr;
Write('Количество шин : '); ReadLn(Number);
WriteLn('Параметры шин : ');
For i := 1 to Number do
begin
Write(i, '-ая шина: Диаметр - '); ReadLn(Diameter[i]);
Write(' Вес - '); ReadLn(Weight[i])
end; WriteLn;
Write('Допуск по диаметру : '); ReadLn(D);
Write('Допуск по весу : '); ReadLn(W);
WriteLn; WriteLn(' Пapаметры шин ');
WriteLn('N шины Диаметр Вес');
For i := 1 to Number do
WriteLn(i:4, Diameter[i]:10:1, Weight[i]:10:1);
WriteLn
End; { of InputOutput }
{----------------------------------------------------------}
Procedure YesNo(Var First, Second : Integer; Var Flag : Boolean);
Begin { описание процедуры поиска решения задачи }
i:=1; Flag := FALSE;
While (i<=Number-1) and not Flag do { цикл по первой шине из пары }
begin
j := i+1;
While(j<=Number) and not Flag do { цикл по второй шине из пары }
If (Abs(Diameter[i]-Diameter[j]) <= D)
and (Abs(Weight[i]-Weight[j]) <= W)
then begin Flag:=TRUE; First:=i; Second:=j end
else j := j+1;
i:=i+1
end;
End; {of YesNo }
{----------------------------------------------------------}
BEGIN
InputOutput; { Вызов процедуры ввода-вывода исходных данных }
YesNo(First, Second, Flag);{ Вызов процедуры поиска решения задачи }
WriteLn('О т в е т :');
If Flag then WriteLn('По параметрам подходят друг другу ',
First, '-ая и ', Second, '-ая шины.')
else WriteLn('Шин, подходящих друг другу, в партии нет.');
ReadLn
END.
Похожие записи/страницы:
- Из партии шин отобрать две шины, диаметры которых отличаются не более, чем на D см, а вес — не более, чем на W…
- Выяснить, есть ли в баскетбольных командах "Спартак" и "Зенит" игроки одинакового роста - Pascal(Паскаль)
- Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сведения о багаже каждого пассажира…
- Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сведения о багаже каждого пассажира…
- Определить, имеется ли среди элементов главной диагонали заданной целочисленной матрицы A(N, N) хотя бы один…
- На изготовление одной тарелки идет P - грамм массы, на изготовление одной чашки идет k - грамм, на изготовление…
- Пусть универсальное множество U- множество всех сотрудников некоторой фирмы; А - множество всех сотрудников…
- Задан список городов. Присвоить переменной Т название последнего из городов, название которого содержит более 4…