Advertisement
Guest User

Лаба для милой тян

a guest
Nov 26th, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 9.36 KB | None | 0 0
  1. uses
  2.     crt;
  3.  
  4. const
  5.     x1 = 3;
  6.     y1 = 3;
  7.     x2 = 78;
  8.     y2 = 23;
  9.     err1 = 35;
  10.     err2 = 18;
  11.     backcolor = lightgray;
  12.     bordercolor = black;
  13.  
  14. procedure windowframe(x, y, m, n, backcolor, bordercolor: byte);
  15. var
  16.     i, j: byte;
  17. begin
  18.     window(x - 2, y - 2, x + m - 1, y + n - 1);
  19.     clrscr;
  20.     textbackground(bordercolor);
  21.     clrscr;
  22.     window(x - 1, y - 1, x + m - 2, y + n - 2);
  23.     textbackground(backcolor);
  24.     clrscr;
  25.     textcolor(black);
  26.     gotoxy(x - 1, y - 1);
  27.     window(x - 1, y - 1, x - 1, y - 1);
  28.     write(#201);
  29.     for i := x to x + m - 3 do
  30.     begin
  31.         window(i, y - 1, i, y - 1);
  32.         gotoxy(i, y - 1);
  33.         write(#205);
  34.     end;
  35.     for j := y to y + n - 3 do
  36.     begin
  37.         gotoxy(x - 1, j);
  38.         window(x - 1, j, x - 1, j);
  39.         write(#186);
  40.         window(x + m - 2, j, x + m - 2, j);
  41.         gotoxy(x + m - 2, j);
  42.         write(#186);
  43.     end;
  44.     for i := x to x + m - 2 do
  45.     begin
  46.         window(i, y + n - 2, i, y + n - 2);
  47.         gotoxy(i, y + n - 2);
  48.         write(#205);
  49.     end;
  50.     gotoxy(x - 1, y + n - 2);
  51.     window(x - 1, y + n - 2, x - 1, y + n - 2);
  52.     write(#200);
  53.     gotoxy(x + m - 2, y - 1);
  54.     window(x + m - 2, y - 1, x + m - 2, y - 1);
  55.     write(#187);
  56.     gotoxy(x + m - 2, y + n - 2);
  57.     window(x + m - 2, y + n - 2, x + m - 2, y + n - 2);
  58.     write(#188);
  59.     window(x, y, x + m - 3, y + n - 3);
  60.     gotoxy(1, 1);
  61. end;
  62.  
  63. procedure Errorwindow(x1, y1: integer);
  64. begin
  65.     windowframe(x1, y1, 11, 5, yellow, backcolor);
  66.     textcolor(red);
  67.     //ENDFRAME
  68.     write(' !ERROR! ');
  69.     write('Press any');
  70.     write('   key!');
  71.     readkey();
  72.     window(x1, y1, x1 + 10, y1 + 5);
  73.     textbackground(backcolor);
  74.     clrscr;
  75.     Textcolor(black);
  76. end;
  77.  
  78. type
  79.     shrtstr = string[76];
  80.  
  81. procedure DeleteSpaces(var str: shrtstr);//preobrazovanie strok ЏҐаҐ¤ str ЇЁиҐ¬ var. ‚ н⮬ б«гз Ґ
  82. //ў 室Ґ а Ў®вл Їа®жҐ¤гал бва®Є  Ўг¤Ґв ЇаҐ®Ўа §®ўлў вмбп.
  83. begin
  84.     //DeleteSpaces := ''; //„Ґбпвм Ё§ ¤ҐбпвЁ, нв® ¤Ґбпвм Ё§ ¤ҐбпвЁ! Ќг § зҐ¬ ¤ў  а §  ЇҐаҐ¬Ґ­­®© ЇаЁбў Ёў вм §­ зҐ­ЁҐ?
  85.     //DeleteSpaces := str;
  86.    
  87.     while (str[1] = ' ') do  {udalenie probelov vperedi}
  88.         delete(str, 1, 1);
  89.     while str[length(str)] = ' ' do      {udalenie probelov v konce}
  90.         delete(str, length(str), 1);
  91.     while (pos('  ', str)) <> 0 do    //udalenie dvoinih probelov
  92.         delete(str, pos('  ', str), 1); // IRINA IS AMAZING D:
  93.     {i:=1;
  94.     while (str[i]=' ')and(str[i+1]=' ')and(i<length(str)-1)do
  95.    
  96.     if (str[i]=' ')and(str[i+1]=' ') then
  97.     delete(str,i,1)
  98.     else
  99.     inc(i); }  
  100.    
  101.    
  102. end;
  103.  
  104.  
  105.  
  106. var
  107.     s: array[1..10] of shrtstr;
  108.     st, subst: shrtstr;
  109.     j, i, m, v, d, k, counter, h: integer;
  110.     ch: char;
  111.     n, q: array[1..255] of byte;
  112.     finish: boolean;
  113.  
  114. begin
  115.     repeat
  116.         finish := false;
  117.         windowframe(x1, y1, x2, y2, backcolor, black);
  118.         writeln('Type some text my dear friend.');
  119.         writeln('If you finished typing text press Enter twice');
  120.         writeln('I know that it is illogical, but i am a girl, so who cares?');
  121.         writeln('Max num of strings = 10, max length=76.');
  122.         writeln('Input:');
  123.         i := 0;
  124.        
  125.         repeat
  126.            
  127.             inc(i); //i := i + 1; ‚¬Ґбв® нв®Ј® Єг¤  а жЁ®­ «м­ҐҐ ЁбЇ®«м§®ў вм Їа®жҐ¤гаг inc(i). Ћ­  㢥«ЁзЁў Ґв §­ зҐ­ЁҐ ЇҐаҐ¬Ґ­­®© i ­  1.
  128.             Readln(s[i]);
  129.         until (s[i] = '') or (i = 10);
  130.         if i < 10 then
  131.             dec(i);
  132.         repeat
  133.             windowframe(x1, y1, x2, y2, backcolor, bordercolor);
  134.             writeln('Align width - 1. Left - 2. Right - 3. Centre - 4.');
  135.            
  136.             {$R-}{$I-}readln(v);{$R+}{$I+}
  137.             //d := Ioresult();
  138.             if (v < 1) or (v > 4) or (d <> 0) then
  139.                 Errorwindow(err1, err2);
  140.            
  141.         until (v > 0) and (v < 5) and (d = 0);
  142.         windowframe(x1, y1, x2, y2, backcolor, bordercolor);
  143.         writeln('Input');
  144.         for j := 1 to i  do
  145.             writeln(s[j]);
  146.         writeln('Output');
  147.        
  148.         for j := 1 to i  do
  149.         begin
  150.             st := s[j];
  151.             DeleteSpaces(st);
  152.             s[j] := st;
  153.             //st := ''; „Ґбпвм Ё§ ¤ҐбпвЁ, ѓ®бЇ®¤Ё, нв® ¤Ґбпвм Ё§ ¤ҐбпвЁ.
  154.            
  155.             //‘Є®«мЄ® Їа®ЎҐ«®ў ў бва®ЄҐ.
  156.             {for m := 1 to length(st) do
  157.             if st[m] = ' ' then
  158.             n[m] := m
  159.             else
  160.             n[m] := 0;              //  џ •‡ ‡Ђ—…Њ ‚‘… ‚Ћ’ ќ’Ћ!!!
  161.             for m := 1 to length(st) do
  162.             if n[m] <> 0 then
  163.             q[j] := q[j] + 1; opredelenie kol-va probelov}
  164.            
  165.         end;
  166.            // ALIGN DIS SHIT TO THE LEFT SIDE
  167.            //Ќг вгв ў®®ЎйҐ ­ЁзҐЈ® ­Ґ ­ ¤®Ў­® ¤Ґ« вм, Ё¬е®, ⥪бв б ¬ ўла ў­Ёў Ґвбп Ї® «Ґў®¬г.
  168.         //ђ §ўҐ зв® §­ ЄЁ ЇҐаҐ­®б  а ббв ўЁвм. Ќ® ¬­Ґ «Ґ­м ))00
  169.         case v of
  170.             2:
  171.                 begin
  172.                     for j := 1 to i do
  173.                         for k := 1 to 76 - length(s[j]) do
  174.                             s[j] := s[j] + ' ';
  175.                    
  176.                 end;
  177.                 //ALIGN WIDTH
  178.             1:
  179.                 begin
  180.                     for j := 1 to i do
  181.                     begin
  182.                         //k := 76 - length(s[j]); //kol-vo dopolnitelnih probelov
  183.                         //st := ''; 10/10
  184.                         st := s[j];
  185.                         counter := 0;
  186.                         for h := 1 to length(st) do
  187.                             if st[h] = ' ' then
  188.                                 inc(counter);
  189.                        
  190.                         subst := '';
  191.                        
  192.                         if counter > 0 then
  193.                         begin
  194.                             for h := 1 to (76 - length(st)) div counter do
  195.                                 subst := subst + ' ';
  196.                             m := 1;
  197.                             while m < length(st) do
  198.                             begin
  199.                                 if (st[m] = ' ') then
  200.                                 begin
  201.                                     insert(subst, st, m);
  202.                                     m := m + length(subst);
  203.                                 end;
  204.                                 inc(m);
  205.                             end;
  206.                             m := length(st);
  207.                             h := 1;
  208.                             while (m < 76) do
  209.                             begin
  210.                                 if (st[h] = ' ') and not (st[h + 1] = ' ') then
  211.                                 begin
  212.                                     inc(m);
  213.                                     insert(' ', st, h);
  214.                                 end;
  215.                                 inc(h);    
  216.                             end;
  217.                         end
  218.                         else
  219.                             for k := 1 to 76 - length(st) do
  220.                                 st := st + ' ';
  221.                         s[j] := st;
  222.                     end;
  223.                 end;
  224.             //Right
  225.             3:
  226.                 for j := 1 to i do
  227.                     for h := 1 to (76 - length(s[j])) do
  228.                         S[j] := ' ' + s[j];
  229.             //Centre
  230.             4:
  231.                
  232.                 for j := 1 to i do
  233.                 begin
  234.                     //st := '';
  235.                     st := s[j];
  236.                     for d := 1 to ((76 - length(s[j])) div 2) do
  237.                     begin
  238.                         Insert(' ', st, 1); //Ќ…‹њ‡џ ЏђЋ‘’Ћ ’ЂЉ ‚‡џ’њ € ‡ЂЃ€’њ ЌЂ ‹ЂЃ“ Џђ€Ќ–…‘‘›
  239.                         Insert(' ', st, length(st) + 1); //One doesn't simply to give a fuck about princes's lab.
  240.                     end;
  241.                     if (76 - length(st)) mod 2 = 1  then
  242.                         Insert(' ', st, 1);
  243.                     s[j] := st;
  244.                 end;
  245.        
  246.        
  247.         end;
  248.         for j := 1 to i do
  249.         begin
  250.             if j mod 2 = 0 then
  251.             begin
  252.                 textcolor(lightblue);
  253.                 textbackground(lightgray);
  254.             end
  255.                     else
  256.             begin
  257.                 textcolor(blue);
  258.                 textbackground(lightcyan);
  259.             end;
  260.             write(s[j]);
  261.            
  262.         end;
  263.         readkey;
  264.         windowframe(x1, y1, x2, y2, backcolor, bordercolor);
  265.         clrscr;
  266.         windowframe(28, 8, 30, 7, backcolor, backcolor);
  267.         write('Do you want to repeat?');
  268.         window(38, 11, 50, 11);
  269.         gotoxy(38, 11);
  270.         write('Yes/No?');
  271.         gotoxy(37, 12);
  272.         window(37, 12, 42, 12);
  273.         repeat
  274.             ch := readkey;
  275.             ch := upcase(ch);
  276.         until (ch = 'Y') or (ch = 'N') or (ch = '’') or (ch = 'Ќ') or (ch = 'в') or (ch = '­');
  277.         if (ch = 'N') or (ch = '’') or (ch = 'в') then
  278.             finish := true;
  279.     until finish;
  280. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement