1. Pascal / Говнокод #9071

    +137

    1. 1
    2. 2
    3. 3
    // ...
    if not Length(username) in [6..24] then
      raise Exception.Create('Длина ника должна находиться в пределах от 6 до 24 символов');

    ну прям как N ∈[6; 24]

    brainworm, 10 Января 2012

    Комментарии (9)
  2. Pascal / Говнокод #9068

    +105

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    program tetris;
    uses
      crt;
    var
      ss,nn,x,y,pus,a,b,c,d,lin,rlin:integer;
      st:array[1..12] of array[1..22] of integer;
    
    procedure k(x,y:integer);
    {ђЁб㥬 Єў а¤а вЁЄ}
    begin
     gotoxy(x*2+27,25-y);
     if ss=0 then write('  ');
     if ss=1 then write('[]');
     if ss=2 then write(chr(177),chr(177));
     if (ss=3) and (st[x,y]>0) then pus:=1;
     if ss=4 then st[x,y]:=1;
     gotoxy(1,1);write(' ');
    end;
    
    procedure fig(x,y,n,s:integer);
    {ђЁб㥬 дЁЈгаг}
    begin
     if s=3 then pus:=0;
     ss:=s; k(x,y);
     if n=1 then begin k(x+1,y);k(x,y-1);k(x+1,y-1) end;
     if n=2 then begin k(x-1,y);k(x+1,y);k(x+2,y) end;
     if n=3 then begin k(x,y+1);k(x,y-1);k(x,y-2) end;
     if n=4 then begin k(x+1,y);k(x-1,y);k(x-1,y+1) end;
     if n=5 then begin k(x,y+1);k(x+1,y+1);k(x,y-1) end;
     if n=6 then begin k(x-1,y);k(x+1,y);k(x+1,y-1) end;
     if n=7 then begin k(x,y+1);k(x,y-1);k(x-1,y-1) end;
     if n=8 then begin k(x-1,y);k(x+1,y);k(x+1,y+1) end;
     if n=9 then begin k(x,y+1);k(x,y-1);k(x+1,y-1) end;
     if n=10 then begin k(x+1,y);k(x-1,y);k(x-1,y-1) end;
     if n=11 then begin k(x,y+1);k(x,y-1);k(x-1,y+1) end;
     if n=12 then begin k(x-1,y);k(x,y-1);k(x+1,y-1) end;
     if n=13 then begin k(x,y+1);k(x-1,y);k(x-1,y-1) end;
     if n=14 then begin k(x+1,y);k(x-1,y-1);k(x,y-1) end;
     if n=15 then begin k(x-1,y);k(x,y-1);k(x-1,y+1) end;
     if n=16 then begin k(x+1,y);k(x-1,y);k(x,y+1) end;
     if n=17 then begin k(x+1,y);k(x,y+1);k(x,y-1) end;
     if n=18 then begin k(x,y-1);k(x-1,y);k(x+1,y) end;
     if n=19 then begin k(x-1,y);k(x,y+1);k(x,y-1) end
    end;
    
    procedure pov;
    {Џ®ў®а®в дЁЈгал}
    begin
     nn:=nn-1;
     if nn=15 then nn:=19;
     if nn=13 then nn:=15;
     if nn=11 then nn:=13;
     if nn=7 then nn:=11;
     if nn=3 then nn:=7;
     if nn=1 then nn:=3;
     if nn=0 then nn:=1;
    end;
    
    procedure clrst;
    {ЋзЁбвЄ  бв Є ­ }
    begin
     for x:=1 to 12 do
      for y:=1 to 22 do
       if (x=1) or (x=12) or (y=1) then st[x,y]:=2 else st[x,y]:=0;
    end;
    
    procedure risvesst;
    {ђЁб®ў вм ўҐбм бв Є ­}
    begin
     for x:=1 to 12 do  for y:=1 to 22 do
       begin
        ss:=st[x,y];
        k(x,y)
       end;
    end;
    
    procedure dvig;
    {„ўЁ¦Ґ­ЁҐ}
    var
     i:integer;key:char;
    begin
     for i:=1 to 10 do
      begin
      delay(d);
      key:=' ';
      if keypressed then key:=readkey;
      if key='i' then
       begin
       fig(x-1,y,nn,3);
       if pus=0 then begin fig(x,y,nn,0); x:=x-1; fig(x,y,nn,1); end;
       end;

    http://sources.ru/pascal/gamestxt/tet.htm

    dos_, 10 Января 2012

    Комментарии (10)
  3. Pascal / Говнокод #9065

    +95

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // со времен Delphi 7.
    procedure TfrmMain.AppDeactivate(Sender: TObject);
    begin
      OpenClipboard(0);
      if (IsClipboardFormatAvailable(CF_TEXT)) then SetClipboardData(CF_LOCALE, 0);
      CloseClipboard();
    end;

    Полагаю, большинство в курсе, что при копировании русского текста из приложения, написанного на дельфи, в другое приложение иногда копируются кракозябры.
    Это происходит, когда при копировании НЕ выбрана русская раскладка клавиатуры.

    Удалось вылечить так.

    ctm, 10 Января 2012

    Комментарии (37)
  4. Pascal / Говнокод #9063

    +96

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    WM_KEYDOWN: begin
            if GetAsyncKeyState(VK_CONTROL) <> 0 then case W of
              integer('X') : SendMessage(H, WM_CUT,   0, 0);
              integer('C') : SendMessage(H, WM_COPY,  0, 0);
              integer('V') : SendMessage(H, WM_PASTE, 0, 0);
              integer('Z') : SendMessage(H, WM_UNDO , 0, 0);
              integer('Y') : ReDo(H);
              integer('A') : SelectAll(H);
              VK_INSERT    : SendMessage(H, WM_COPY,  0, 0);
              VK_PRIOR     : MoveCaretLine   (H, -1000000);  
              VK_NEXT      : MoveCaretLine   (H,  1000000);
              VK_DELETE    : SendMessage(H, WM_CLEAR, 0, 0);
          //  end else if GetAsyncKeyState(VK_ALT) then case W of
          //    VK_BACK      : SendMessage(H, WM_UNDO , 0, 0);
            end else if GetAsyncKeyState(VK_SHIFT) <> 0 then case W of
              VK_DELETE    : SendMessage(H, WM_CUT  , 0, 0);
              VK_INSERT    : SendMessage(H, WM_PASTE, 0, 0);
            end else case W of
              VK_SHIFT     : SDown(H);
              VK_LEFT      : MoveCaretSymbol (H, -1);
              VK_RIGHT     : MoveCaretSymbol (H,  1);
              VK_UP        : MoveCaretLine   (H, -1);
              VK_DOWN      : MoveCaretLine   (H,  1);
              VK_PRIOR     : MoveCaretLine   (H, -MaxLinesInScreenByH(H));
              VK_NEXT      : MoveCaretLine   (H,  MaxLinesInScreenByH(H));
              VK_DELETE    : DeleteSymbol(H, False);
            end;
            DrawText(H);
            Exit;
          end;

    Пишу свой винапи-класс типа Edit.
    Так сделаны горячие клавиши.

    TarasB, 10 Января 2012

    Комментарии (25)
  5. Pascal / Говнокод #9061

    +87

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    procedure GenerateMines; // Процедура генерации мин
    label
    again;
    var
    t,m:Integer; // Переменные для цикла
    i,j:Byte; // Координаты на поле
    bufer:String; // Вспомогательная переменная цикла. Хранит текущие сгенерированные координаты мины для записи в массив
    begin
    Randomize;
    for t:= 1 To mines Do
    begin
    again:
      i:=Round(Random*9+1);
      j:=Round(Random*9+1);
      bufer:=IntToStr(i) + ',' + IntToStr(j); // Создание строковой записи коордитаты мины
      for m:= 1 To 100 Do // Цикл для проверки, есть ли сгенерированная координата в массиве
      begin
        if bufer = mines_a[m] then goto again; // Если сгенерированная координата в массиве есть, то программа генерирует новые координаты
      end;
      mines_a[t]:=bufer; // Запись новой координаты в массив
      field[i,j]:=9; // Добавление мины на поле в сгенерированные координаты
    end;
    end;

    Процедура генерации мин в сапёре. Говно или не?

    SmseR, 10 Января 2012

    Комментарии (43)
  6. Pascal / Говнокод #8906

    +89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    unit DllUnit; interface
    
    uses windows, sysutils;
    
    Procedure GuPrcA(var p:PAnsiChar;const l:integer); StdCall;
    Procedure GuPrcW(var p:PWideChar;const l:integer); StdCall;
    
    Exports GuPrcA,GuPrcW;
    
    implementation
    
    procedure GuMes(s:string);
    begin
    MessageBox(0,pchar(s),'From dll',mb_iconinformation);
    end;
    
    Procedure GuPrcW(var p:PWideChar;const l:integer); // wide
    var s:widestring;
    begin
    if (p=nil)or(l<1) then begin p:=nil;exit;end;
    SetLength(s,trunc(l/sizeof(widechar)));Move(p^,Pointer(s)^,l);
    gumes('l: '+inttostr(l)+', nl: '+inttostr(length(s))+#10+'-'+s+'-');
    s:=widestring(Uppercase(s));Move(Pointer(s)^,p^,l);
    end;
    
    Procedure GuPrcA(var p:Pansichar;const l:integer); // ansi
    var s:ansistring;
    begin
    if (p=nil)or(l<1) then begin p:=nil;exit;end;
    SetLength(s,l);Move(p^,Pointer(s)^,l);
    gumes('l: '+inttostr(l)+', nl: '+inttostr(length(s))+#10+'-'+s+'-');
    s:=ansistring(AnsiUppercase(s));Move(Pointer(s)^,p^,l);
    end;
    
    Initialization
    
    ReportMemoryLeaksOnShutdown:=true;
    
    end.
    
    (* выше - DLL, ниже импорт из неё *)
    ...
    implementation
    
    {$R *.dfm}
    
    Procedure GuPrcA(var p:PansiChar;const l:cardinal); StdCall; external 'mydll.dll' name 'GuPrcA';
    Procedure GuPrcW(var p:PwideChar;const l:cardinal); StdCall; external 'mydll.dll' name 'GuPrcW';
    
    procedure TForm1.Button6Click(Sender: TObject);
    var p:pwidechar;c:cardinal;s:widestring;
    begin
    s:=widestring(memo1.Text);
    c:=length(s)*sizeof(widechar);
    p:=allocmem(c);
    Move(Pointer(s)^,p^,c);
    GuPrcW(p,c);
    s:='';setlength(s,trunc(c/sizeof(widechar)));
    Move(p^,Pointer(s)^,c);
    Freemem(p,c);
    memo1.Text:='='+s+'= l:'+inttostr(c);
    end;
    
    procedure TForm1.Button7Click(Sender: TObject);
    var p:pansichar;c:cardinal;s:ansistring;
    begin
    s:=ansistring(memo1.text);
    c:=length(s);
    p:=allocmem(c);
    Move(Pointer(s)^,p^,c);
    GuPrcA(p,c);
    s:='';setlength(s,c);
    Move(p^,Pointer(s)^,c);
    Freemem(p,c);
    memo1.Text:='='+s+'= l:'+inttostr(c);
    end;
    
    Initialization
    
    ReportMemoryLeaksOnShutdown:=true;
    
    end.

    На стековерфловочке завелся некий GuSoft (sic!), который регулярно постит свои высеры через гоогле транслате. Сегодня вот таким шедевром разродился, хочет бесплатных консультаций чтобы в этой херне ему поискали ошибки и «оптимизировали».

    bugmenot, 05 Января 2012

    Комментарии (11)
  7. Pascal / Говнокод #8903

    +98

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    if RadioGroup1.ItemIndex=0   then cpr:=cpr+1;
    if RadioGroup1.ItemIndex=1   then cth:=cth+1;
    if RadioGroup2.ItemIndex=0   then cch:=cch+1;
    if RadioGroup2.ItemIndex=1  then czs:=czs+1;
    if RadioGroup3.ItemIndex=0   then chd:=chd+1;
    if RadioGroup3.ItemIndex=1  then cpr:=cpr+1;
    if RadioGroup4.ItemIndex=0   then  cth:=cth+1;
    if RadioGroup4.ItemIndex=1  then cch:=cch+1;
    if RadioGroup5.ItemIndex=0   then czs:=czs+1;
    if RadioGroup5.ItemIndex=1  then chd:=chd+1;
    if RadioGroup6.ItemIndex=0   then cpr:=cpr+1;
    if RadioGroup6.ItemIndex=1  then cch:=cch+1;
    if RadioGroup7.ItemIndex=0   then chd:=chd+1;
    if RadioGroup7.ItemIndex=1  then cth:=cth+1;
    ....// Это всё в 60 строк
    if (cpr>cth) and (cpr>cch) and (cpr>czs) and (cpr>chd) then cpr1:=+1
    else
    if (cth>cpr) and (cth>cch) and (cth>czs) and (cth>chd) then cth1:=+1
    else
    if (cch>cpr) and (cch>cth) and (cch>czs) and (cch>chd) then cch1:=+1
    else
    if (czs>cpr) and (czs>cch) and (czs>cth) and (czs>chd) then czs1:=+1
    else
    if (chd>cpr) and (chd>cch) and (chd>czs) and (chd>cth) then chd1:=+1;
    
    if cpr>chd or czs or cth or cch     then
    begin
    ShowMessage('человек-природа – все профессии, связанные с растениеводством, животноводством и лесным хозяйством;')   ;
    Datamodule4.ADOTable1.Edit;
    Datamodule4.ADOTable1.FieldValues['test2']:=('человек-природа – все профессии, связанные с растениеводством, животноводством и лесным хозяйством;');
    Datamodule4.ADOTable1.Post;
    end
    else
    if chd>cpr or cth or cch or czs   then   begin
    ShowMessage('человек-техника – все технические профессии;')   ;
    Datamodule4.ADOTable1.Edit;
    Datamodule4.ADOTable1.FieldValues['test2']:=('человек-техника – все технические профессии;');
    Datamodule4.ADOTable1.Post;
    ...... И далее результаты в общем их 5
    отдельная кнопка для вывода остальных 10 вопросов х)
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Radiogroup11.Visible:=true;
    Radiogroup12.Visible:=true;
    Radiogroup13.Visible:=true;
    Radiogroup14.Visible:=true;
    Radiogroup15.Visible:=true;
    Radiogroup16.Visible:=true;
    Radiogroup17.Visible:=true;
    Radiogroup18.Visible:=true;
    Radiogroup19.Visible:=true;
    Radiogroup20.Visible:=true;
    Button2.Visible:=True;
    end;

    Программа тестирования на профориентацию
    хД сколько он radiogroup создал)

    Ryuko, 05 Января 2012

    Комментарии (8)
  8. Pascal / Говнокод #8847

    +101

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    //деление задачи на потоки
      uTemp := 0;
      while uTemp < uHTemp do
      begin
        case uTemp of
          0 :uTipArr[uHTemp - 1].p2 := StrToInt(Edit1.Text);
          //делим интегер :)
          1 :uTipArr[1].p1 := uTipArr[uHTemp - 1].p2 shr Trunc(log2(StrToFloat(Edit1.Text)));
          else //если не первая и не вторая
            uTipArr[uTemp].p1 := uTipArr[1].p1 * uTemp;
        end;
        Inc(uTemp);
      end;

    Ufo28, 16 Декабря 2011

    Комментарии (11)
  9. Pascal / Говнокод #8744

    +93

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    procedure _FinalizeArray(p: Pointer; typeInfo: Pointer; elemCount: Cardinal);
    asm
            CMP     ECX, 0                        { no array -> nop }
            JE      @@zerolength
    
            PUSH    EAX
            PUSH    EBX
            PUSH    ESI
            PUSH    EDI
            MOV     EBX,EAX
            MOV     ESI,EDX
            MOV     EDI,ECX
    
            XOR     EDX,EDX
            MOV     AL,[ESI]
            MOV     DL,[ESI+1]
    
            CMP     AL,tkLString
            JE      @@LString
    
            CMP     AL,tkWString
            JE      @@WString
    
            CMP     AL,tkVariant
            JE      @@Variant
    
            CMP     AL,tkArray
            JE      @@Array
    
            CMP     AL,tkRecord
            JE      @@Record
    
            CMP     AL,tkInterface
            JE      @@Interface
    
            CMP     AL,tkDynArray
            JE      @@DynArray
    
            JMP     @@error
    
    @@LString:
            CMP     ECX,1
            MOV     EAX,EBX
            JG      @@LStringArray
            CALL    _LStrClr
            JMP     @@exit
    @@LStringArray:
            MOV     EDX,ECX
            CALL    _LStrArrayClr
            JMP     @@exit
    
    @@WString:
            CMP     ECX,1
            MOV     EAX,EBX
            JG      @@WStringArray
            CALL    _WStrClr
            JMP     @@exit
    @@WStringArray:
            MOV     EDX,ECX
            CALL    _WStrArrayClr
            JMP     @@exit
    @@Variant:
            MOV     EAX,EBX
            ADD     EBX,16
            CALL    _VarClr
            DEC     EDI
            JG      @@Variant
            JMP     @@exit
    @@Array:
            PUSH    EBP
            MOV     EBP,EDX
    @@ArrayLoop:
            MOV     EDX,[ESI+EBP+2+8]
            MOV     EAX,EBX
            ADD     EBX,[ESI+EBP+2]
            MOV     ECX,[ESI+EBP+2+4]
            MOV     EDX,[EDX]
            CALL    _FinalizeArray
            DEC     EDI
            JG      @@ArrayLoop
            POP     EBP
            JMP     @@exit
    
    @@Record:
            PUSH    EBP
            MOV     EBP,EDX
    @@RecordLoop:
            { inv: EDI = number of array elements to finalize }
    
            MOV     EAX,EBX
            ADD     EBX,[ESI+EBP+2]

    Это так в дельфах автофинализация строк, длиннострок, вариантов, массивов, записей, интерфейсов, динмассивов реализована.
    Вместо того, чтобы напрямую вызвать деструктор, там в рантайме (ПИЗДЕЦ, В РАНТАЙМЕ БЛЯТЬ!!!) проверяется тип поля, требующего финализацию и через три таких жопы наконец-то вызывается деструктор. И это, блять, я ещё создал свой TInterfacedObject, потому что иначе бы деструктор вызывался не через три жопы, а через четыре, и одна из них - системный вызов.
    Да, это при включённой оптимизации всё, если чё.

    TarasB, 06 Декабря 2011

    Комментарии (116)
  10. Pascal / Говнокод #8718

    +112

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    {...}
    type
    a=(
    january,
    february,
    march,
    {--------------}
    april,
    may,
    june,
    {--------------}
    jule,
    august,
    september,
    {--------------}
    october,
    november,
    december
                 );
    b=(
    seаson1,
    seаson2,
    seаson3,
    seаson4
               );
    c=(
    winter,
    spring,
    summer,
    autumn
              );
    {...}
    function d(e:a):b;
             begin
                  case e of
                           january,
                           february,
                           march
                                     :d:=seаson1;
                           april,
                           may,
                           june
                                     :d:=seаson2;
                           jule,
                           august,
                           september
                                     :d:=seаson3;
                           october,
                           november,
                           december
                                     :d:=seаson4
                  end
             end;
    function f(g:a):c;
             begin
                  case g of
                           december,
                           january,
                           february
                                      :f:=winter;
                           march,
                           may,
                           april
                                      :f:=spring;
                           june,
                           jule,
                           august
                                      :f:=summer;
                           september,
                           october,
                           november
                                      :f:=autumn
                  end
             end;
    begin
    {...}
    end.

    Сделал на этой неделе в первом часу ночи.

    dos_, 04 Декабря 2011

    Комментарии (30)