Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.39 KB | None | 0 0
  1. Program HelloWorld; //название программы
  2.  
  3. Var
  4.    a,b,c:string;    //объявляем три переменные для входных данных
  5.  
  6. Function minnum(a,b:integer):integer;  //заголовок функции, возвращаю-
  7. //щей минимальное из двух чисел, формальные параметры и тип  возвраща-
  8. //емого значения
  9.  
  10. Var
  11.    min:integer;     //объявляем локальную переменную для минимального числа
  12. Begin               //начало тела функции
  13.   If(a<b) then      //если a<b
  14.     min:=a          //а - меньшее
  15.   else              //иначе
  16.     min:=b;         //b - меньшее
  17.   minnum := min;    //возвращаемое значение теперь минимальное число
  18. end;                //конец тела функции
  19.  
  20. Function minstr(a,b:string):integer;   //заголовок функции, возвращаю-
  21. //щей лексикографически минимальную из двух строк, формальные параметры
  22. //и тип возвращаемого значения
  23. //если возвращаемое значение равно 1 - первая строка лексикографически
  24. //меньшая, иначе (равно 2) вторая строка лексикографически меньшая
  25.  
  26. Var
  27.    min,l,i:integer; //объявляем локальные переменные минимальной длины
  28.                     //от двух строк, а также счетчика для цикла
  29. Begin               //начало тела функции
  30.   min:=0;           //пока неизвестно, какая строка лексикографически
  31.                     //меньшая, поэтому переменная min равна нулю
  32.   l := minnum(Length(a),Length(b)); //l - минимальная длина из двух строк
  33.   For i:=1 to l do                  //сравниваем до l
  34.     Begin
  35.       If a[i]<b[i] then             //если i-тый символ строки a
  36.                                     //меньше i-того символа строки b
  37.         min:=1;                     //минимальная строка - первая
  38.       If a[i]>b[i] then             //если i-тый символ строки a
  39.                                     //больше i-того символа строки a
  40.         min:=2;                     //минимальная строка - вторая
  41.     end;
  42.   if min=0 then                     //если подстроки a(0,l) и b(0,l)
  43.                                     //равны
  44.     If l=Length(a) then             //если первая строка имеет меньшую длину
  45.       min:=1                        //она минимальна
  46.     else
  47.       min:=2;                       //иначе минимальна вторая
  48.   minstr:=min;                      //возвращаемое значение - номер
  49.                                     //минимальной строки
  50. end;
  51.  
  52. Begin
  53.   WriteLn('Input 3 lines');
  54.  
  55.   //ввод трех строк
  56.  
  57.   Readln(a);
  58.   readln(b);
  59.   readln(c);
  60.  
  61.   If (minstr(a,b)=1) and (minstr(a,c)=1) then //если а - минимум из трех
  62.     Begin
  63.       If minstr(b,c)=1 then                   //если b - минимум из остатка
  64.         WriteLn(a,' ',b,' ',c)
  65.       else
  66.         WriteLn(a,' ',c,' ',b);               //иначе с - минимум из остатка
  67.     end;
  68.   If (minstr(b,a)=1) and (minstr(b,c)=1) then //если b - минимум из трех
  69.     Begin
  70.       If minstr(a,c)=1 then                   //если a - минимум из остатка
  71.         WriteLn(b,' ',a,' ',c)
  72.       else
  73.         WriteLn(b,' ',c,' ',a);               //иначе с - минимум из остатка
  74.     end;
  75.   If (minstr(c,a)=1) and (minstr(c,b)=1) then //если c - минимум из трех
  76.     Begin
  77.       If minstr(a,b)=1 then
  78.         WriteLn(c,' ',a,' ',b)                //если a - минимум из остатка
  79.       else
  80.         WriteLn(c,' ',b,' ',a);               //если b - минимум из остатка
  81.     end;
  82. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement