Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачник по программированию.doc
Скачиваний:
25
Добавлен:
03.11.2018
Размер:
1.94 Mб
Скачать

Система тестов

Алгоритмический язык

алг МоиШины (арг цел N, арг вещ таб Диам[1 : N], Вес[1 : N], арг вещ ДопДиам, ДопВес, рез цел Шина1, Шина2, рез лит Otvet)

нач цел i, j, лит Flag

i:=1; Flag:="Нет"

нц пока (i< =N-1) и (Flag="Нет") | цикл по первой шине из пары

j:=i+1

нц пока (j< =N) и (Flag="Нет") | цикл по второй шине из пары

если (abs(Диам[i] - Диам[j]) <= ДопДиам) | условие соче-

и (abs(Вес[i] - Вес[j]) <= ДопВес ) | таемости шин

то Flag:="Да"; Шина1:=i; Шина2:=j

иначе j:=j+1

все

кц

i:=i+1

кц

если Flag="Да"

то Otvet := "По параметрам подходят друг другу " + Шина1 + "-ая и " +

+“Шина2 + "ая шины."

иначе Otvet := "Шин, подходящих друг другу, в партии нет."

все

кон

Turbo 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.