Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Легко ли найти нужную информацию на сайте?

Очень просто
Нахожу почти сразу
Приходится тщательно покопаться
Почти невозможно
Не нашел (лень разбираться)


Результаты
Другие опросы

Всего голосов: 591
Комментарии: 0


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Практикум — Глава 5. Алгоритмы, реализуемые с помощью вложенных циклов типа ПОКА
[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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.
 
QBasic
CLS : INPUT "Количество шин : " , Number
DIM Diam(Number), Weight(Number) 
PRINT "Параметры шин :"
FOR i = 1 TO Number
  PRINT i; "-ая шина: " ; : INPUT "Диаметр - " , Diam(i)
  PRINT TAB(14);
  INPUT " Вес - ", Weight(i)
NEXT i : PRINT 
INPUT "Допуск по диаметру : " , D
INPUT "Допуск по весу : " , W 
PRINT : PRINT TAB(11); "Пapаметры шин"
PRINT "N шины Диаметр Вес"
FOR i = 1 TO Number
  PRINT TAB(3) ; i , Diam(i) , Weight(i)
NEXT i : PRINT 
i = 1 : Flag = 0
WHILE (i <= Number-1) AND (Flag = 0)
  j = i + 1
  WHILE (j <= Number) AND (Flag = 0)
    IF (ABS(Diam(i)-Diam(j))<=D) AND (ABS(Weight(i)-Weight(j))<=W) THEN
         Flag = 1 : First = i : Second = j
       ELSE j = j + 1
    END IF
  WEND
  i = i + 1
WEND 
PRINT : PRINT "О т в е т :"
IF Flag = 1 THEN
      PRINT "По параметрам подходят друг другу ";
      PRINT First; "-ая и "; Second; "-ая шины."
  ELSE PRINT "Шин, подходящих друг другу, нет."
END IF
END

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


Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать