asmodeus94

odeszliDoszli

Dec 21st, 2012
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.79 KB | None | 0 0
  1.              {#################################################
  2.               # Program służący do sprawdzenia aktualnego     #
  3.               # składu, zmianach w składzie oraz wypisaniu    #
  4.               # kto odszedł, a kto doszedł do klanu oraz      #
  5.               # przedstawienie tego w postaci liczb.          #
  6.               # Do poprawnego działania potrzebne są dwa      #
  7.               # pliki: wcz.txt i poz.txt.                     #
  8.               #                                               #  
  9.               # Czynności:                                    #  
  10.               # 1) Do pliku poz.txt wklejamy listę graczy     #
  11.               # 2) Odpalamy program spr.exe                   #
  12.               # 3) Wybieramy 1. opcję                         #
  13.               # 4) Wybieramy 2. opcję                         #
  14.               # 5) Wybieramy 3. opcję                         #
  15.               # 6) Za każdym razem, gdy znów będziemy chcieli #
  16.               # wykonać zestawienie, wykonujemy kolejno       #
  17.               # punkty od 1) - 5)                             #
  18.               #                                               #  
  19.               # program tworzy 2 pliki:                       #  
  20.               # - zes.txt - aktualne zestawienie (bez składu) #  
  21.               # - arch.txt - dane ze wszystkich robionych     #
  22.               # plików zes.txt+dopisany skład na samym        #            
  23.               # początku.                                     #  
  24.               # autor: asmodeus94                             #
  25.               #################################################}
  26. program odeszliDoszli;
  27. uses crt,dos;
  28. type
  29. byli = record
  30. nick,nickPam : string;
  31. byl : byte;
  32. end;
  33. var
  34. t,t1,tK : text;
  35. s1,s2 : array [1..100] of byli;
  36. const dl = 3;
  37. var
  38. menuT : array [1..dl] of string;
  39. tekstP : string;
  40. wyborLicz,i,j,w,f,wys,wys1,odeszli,nowi : byte;
  41. dT,d,m,y,
  42. h,mm,s,mS : word;
  43. przyrost : integer;
  44. function wysrodkuj(x : string) : byte;
  45. begin
  46. wysrodkuj:=(80-length(x)) div 2;
  47. end;
  48. procedure wyczyscTekst(d : string;y : byte);
  49. var c : byte;
  50. begin
  51. for c:=1 to length(d) do begin
  52.     gotoxy(wysrodkuj(d)+c-1,y);write(' ');
  53. end;
  54. end;
  55. procedure wstawTekst(tekst : string;y:byte);
  56. begin
  57. gotoxy(wysrodkuj(tekst),y);write(tekst);gotoxy(1,1);delay(2000);
  58. wyczyscTekst(tekst,y);
  59. end;
  60. procedure zestawienie;
  61. begin
  62. getDate(y,m,d,dT);getTime(h,mm,s,mS);
  63. if fSearch('arch.txt','')='' then begin assign(t1,'arch.txt');rewrite(t1);close(t1);end;
  64. assign(t,'wcz.txt');
  65. reset(t);
  66. i:=0;
  67. REPEAT
  68. i:=i+1;
  69. readln(t,s1[i].nickPam);
  70. s1[i].nick:=lowercase(s1[i].nickPam);
  71. UNTIL eof(t);
  72. close(t);
  73. assign(t1,'arch.txt');reset(t1);
  74. assign(tK,'sch.txt');rewrite(tK);
  75. REPEAT
  76. readln(t1,tekstP);
  77. writeln(tK,tekstP);
  78. UNTIL eof(t1);
  79. close(tK);
  80. close(t1);
  81. assign(t1,'arch.txt');
  82. rewrite(t1);
  83. assign(t,'poz.txt');
  84. reset(t);
  85. writeln(t1,'Stan wraz ze zmianami: ',d,'.');
  86. if m div 10=0 then write(t1,'0',m,'.') ELSE write(t1,m,'.');
  87. write(t1,y,'r. (',h,':');
  88. if mm div 10=0 then write(t1,'0',mm,':') ELSE write(t1,mm,':');
  89. if s div 10=0 then writeln(t1,'0',s,')') ELSE writeln(t1,s,')');
  90. writeln(t1,'Skład obecny:');
  91. w:=i;
  92. i:=0;
  93. REPEAT
  94. i:=i+1;
  95. readln(t,s2[i].nickPam);
  96. s2[i].nick:=lowercase(s2[i].nickPam);
  97. writeln(t1,s2[i].nickPam);
  98. UNTIL eof(t);
  99. close(t1);
  100. close(t);
  101. f:=i;
  102. for i:=1 to w do begin
  103.     for j:=1 to f do begin
  104.         if s1[i].nick=s2[j].nick then begin
  105.            s1[i].byl:=1;
  106.            s2[j].byl:=1;break;
  107.         end;
  108.     end;
  109. end;
  110. odeszli:=0;
  111. assign(t1,'arch.txt');
  112. append(t1);
  113. assign(t,'zes.txt');
  114. rewrite(t);
  115. writeln(t,'Zmiany na: ',d,'.');
  116. if m div 10=0 then write(t,'0',m,'.') ELSE write(t,m,'.');
  117. write(t,y,'r. (',h,':');
  118. if mm div 10=0 then write(t,'0',mm,':') ELSE write(t,mm,':');
  119. if s div 10=0 then writeln(t,'0',s,')') ELSE writeln(t,s,')');
  120. for i:=1 to w do begin
  121.     if s1[i].byl<>1 then begin odeszli:=1;break;end;
  122. end;
  123. if odeszli=1 then begin
  124. wys:=0;
  125. writeln(t,'Odeszli: ');writeln(t1,'Odeszli: ');
  126.    for i:=1 to w do begin
  127.          if s1[i].byl<>1 then begin
  128.          wys:=wys+1;write(t,wys);write(t,'. ');write(t1,wys);write(t1,'. ');
  129.          writeln(t,s1[i].nickPam);writeln(t1,s1[i].nickPam);
  130.          end;
  131.    end;
  132. end ELSE begin writeln(t,'Nikt nie odszedł');writeln(t1,'Nikt nie odszedł');end;
  133. nowi:=0;
  134. for i:=1 to w do begin
  135.     if (s2[i].byl<>1)AND(s2[i].nick<>'') then begin nowi:=1;break;end;
  136. end;
  137. if nowi=1 then begin
  138. wys1:=0;
  139. writeln(t,'Nowi: ');writeln(t1,'Nowi: ');
  140.    for i:=1 to w do begin
  141.        if (s2[i].byl<>1)AND(s2[i].nick<>'') then begin
  142.        wys1:=wys1+1;write(t,wys1);write(t,'. ');write(t1,wys1);write(t1,'. ');
  143.        writeln(t,s2[i].nickPam);writeln(t1,s2[i].nickPam);
  144.        end;
  145.    end;
  146. end ELSE begin writeln(t,'Nikt nie doszedł');writeln(t1,'Nikt nie doszedł');end;
  147. if (odeszli=1)OR(nowi=1) then begin
  148.    writeln(t,'-------------------');writeln(t1,'-------------------');
  149.    writeln(t,'Było graczy: ',w);writeln(t1,'Było graczy: ',w);
  150.    writeln(t,'Odeszło graczy: ',wys);writeln(t1,'Odeszło graczy: ',wys);
  151.    writeln(t,'Doszło: ',wys1);writeln(t1,'Doszło: ',wys1);
  152.    przyrost:=wys1-wys;
  153.    writeln(t,'Przyrost: ',wys1-wys);writeln(t1,'Przyrost: ',przyrost);
  154. end;
  155.  
  156. w:=0;
  157. for i:=1 to 100 do begin
  158.     if s2[i].nick<>'' then begin w:=w+1;end ELSE break;
  159. end;
  160. writeln(t,'Aktualny stan klanu: ',w,' graczy');writeln(t1,'Aktualny stan klanu: ',w,' graczy');
  161. close(t);
  162. writeln(t1,'*******************');
  163. assign(tK,'sch.txt');reset(tK);
  164. REPEAT
  165. readln(tK,tekstP);
  166. writeln(t1,tekstP);
  167. UNTIL eof(tK);
  168. close(tK);
  169. close(t1);
  170. assign(tK,'sch.txt');
  171. erase(tK);
  172. wstawTekst('Zestawienie zostalo wykonane!',15);
  173. end;
  174. procedure nadpisz;
  175. var linia : string;
  176. begin
  177. assign(t,'wcz.txt');
  178. rewrite(t);
  179. assign(t1,'poz.txt');
  180. reset(t1);
  181. REPEAT
  182. readln(t1,linia);
  183. writeln(t,linia);
  184. UNTIL eof(t1);
  185. rewrite(t1);
  186. close(t1);
  187. close(t);
  188. wstawTekst('Plik wcz.txt nadpisano!',15);
  189. end;
  190. procedure tabMenu;
  191. begin
  192. menuT[1]:='Zrob zestawienie';
  193. menuT[2]:='Nadpisz wcz.txt danymi z poz.txt';
  194. menuT[3]:='Wylacz';
  195. end;
  196. procedure wysM;
  197. var c : byte;
  198. begin
  199. tekstP:='MENU';
  200. gotoxy((80-length(tekstP)) div 2,10);textbackground(blue);write(tekstP);textbackground(0);
  201. for c:=1 to dl do begin
  202. gotoxy((80-length(menuT[c])) div 2,10+c);
  203.     if c=wyborLicz then textcolor(red) ELSE textcolor(7);
  204.     write(menuT[c]);
  205. end;
  206. textcolor(7);gotoxy(1,1);
  207. end;
  208. procedure menu;
  209. var znak : char;
  210. begin
  211. REPEAT
  212. wysM;
  213. znak:=readkey;
  214.    case znak of
  215.    'w','W':begin wyborLicz:=wyborLicz-1; end;
  216.    's','S':begin wyborLicz:=wyborLicz+1; end;
  217.    end;
  218.    if wyborLicz=0 then wyborLicz:=dl;
  219.    if wyborLicz=dl+1 then wyborLicz:=1;
  220. UNTIL znak=#13;
  221. end;
  222. begin clrscr;
  223. tabMenu;wyborLicz:=1;
  224. REPEAT
  225. menu;
  226. case wyborLicz of
  227. 1:begin zestawienie;end;
  228. 2:begin nadpisz;end;
  229. end;
  230. UNTIL wyborLicz=3;
  231. end.
Advertisement
Add Comment
Please, Sign In to add comment