TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 5.4. Из партии шин отобрать две шины, диаметры которых отличаются не более, чем на D см, а вес — не более, чем на W грамм.  
Система тестов
 
N теста Проверяемый случай Данные Результат
N шины Диаметр Вес Допуски Otvet
диам. вес
1 Есть такие шины 1 2 3 4 103 100 99 101 98 100 101 99  1  1 "2-я и 3-я шины"
 2 Нет таких шин 1 2 3 100 98 100 100 100 98 1 1 "Подходящих шин нет"
 
Демонстрация

Школьный АЯ

алг МоиШины (арг цел 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 := "Шин, подходящих друг другу, в партии нет." 
  все
кон
Исполнение алгоритма 
 
Обозначения проверяемых условий:
(i <= N-1) и (Flag = "Нет")   => (1) 
(i < N) и (Flag = "Нет")    => (2) 
(abs(Диам[i] - Диам[j]) <= ДопДиам)  
и (abs(Вес[i] - Вес[j]) <= ДопВес) => (3) 
 
N теста
i
Flag
(1)
j
(2)
(3)
Шина 1
Шина 2
1
1
"Нет"
+
2
3
4
5
+
+
+
-(кц)
-
-
-
   
2
"Да"
+
3
+
-(кц)
+
2
3
3
 
-(кц)
         
 2
1
 
"Нет"
+
2
3
4
+
+
-(кц)
-
-
   
2
 
+
3
4
+
+
-
   
3
 
-(кц)
         
 
Блок-схема (фрагмент)
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.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz