Из партии шин отобрать две шины, диаметры которых отличаются не более, чем на D см, а вес — не более, чем на W грамм — Pascal(Паскаль)

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.

Leave a Comment

1 + 9 =