Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.18 KB | None | 0 0
  1. program tixeo;
  2. {$mode objfpc}
  3. uses Sysutils,crt;
  4. var
  5. mathites,apontes1:array[1..40] of string;
  6. kodikos,apontes:array[1..40] of integer;
  7. skip,retry,istxt,first_time,is_sorted,is_fixed:boolean;
  8. ans,ans2:string;
  9. txtfl:textfile;
  10. linetxt:string;
  11. jk,f,j,i,kl,lucky,full,lkod,k:integer;
  12. Function txtload():boolean;
  13. begin
  14.  
  15. assignfile(txtfl,'mathites.txt');
  16.  
  17. Try
  18. reset(txtfl);
  19. k:=1;
  20. writeln('***********************************');
  21. while not eof(txtfl) do
  22. begin
  23. readln(txtfl,mathites[k]);
  24. writeln(mathites[k]);
  25. k:=k+1;
  26. end;
  27. writeln('**********************************');
  28. close(txtfl);
  29. writeln('Auti einai i lista twn mathitwn pou fortothike apo to mathites.txt');
  30. readln;
  31. txtload:=true;
  32. clrscr;
  33. except
  34. writeln('Error,elexte oti iparxei file me onoma mathites.txt kai einai ston idio fakelo me to executable.');
  35. writeln('*********************************************');
  36. writeln('*****Fortothike o proepilegmenos pinakas*****');
  37. writeln('*********************************************');
  38. txtload:=false;
  39. end;
  40. end;
  41. Function is_apontas(a:integer):boolean;
  42. begin
  43. is_fixed:=false;
  44. for i:=1 to length(kodikos) do
  45. begin
  46. if (a=apontes[i]) and (is_fixed=false) and (a<>0) then
  47. is_fixed:=true;
  48. is_apontas:=true;
  49. end;
  50. if (is_fixed=false) and (a<>0) then is_apontas:=false;
  51. end;
  52. Procedure clear_mathites();
  53. begin
  54. for i:=1 to length(mathites) do
  55. mathites[i]:='';
  56. end;
  57. Procedure show_kodikos();
  58. begin
  59. for jk:=1 to length(kodikos) do
  60. if (kodikos[jk]<>0) then
  61. writeln(mathites[kodikos[jk]]);
  62. end;
  63. Procedure show_apontes();
  64. begin
  65. for kl:=1 to length(apontes) do
  66. begin
  67. if apontes[kl]<>0 then
  68. begin
  69. //if (is_apontas(apontes[kl])) then
  70. writeln(mathites[apontes[kl]]);
  71. end;
  72. end;
  73. end;
  74.  
  75. Procedure init_mathites();
  76. begin
  77. clear_mathites();
  78. if (istxt=false) then
  79. begin
  80. mathites[1]:='Athos Costa';
  81. mathites[2]:='Thiseas Panagiotis Leonidou';
  82. mathites[3]:='Zenonas Michaelides';
  83. mathites[4]:='Christos Hadjisofokleous';
  84. mathites[5]:='Giannis Pergantis';
  85. mathites[6]:='Alexandros Rodosthenus';
  86. mathites[7]:='Panagiotis Papadopoulos';
  87. mathites[8]:='Panagiotis Panagiotou';
  88. mathites[9]:='Dimitris Erotokritou';
  89. mathites[10]:='Nikolas Koupatos';
  90. mathites[11]:='Panagiotis Pentaliotis';
  91. mathites[12]:='Alexandros Alexandrou';
  92. mathites[13]:='Alexei Korsakov';
  93. mathites[14]:='Stauros Epifaniou';
  94. mathites[15]:='Irini Soteriadi';
  95. mathites[16]:='Giannis Kritikos';
  96. mathites[17]:='Xristodoulos Kwnstantinidis';
  97. mathites[18]:='Orestis Stefanou';
  98. end
  99. else
  100. begin
  101. if (txtload()=false) then
  102. begin
  103. istxt:=false;
  104. init_mathites();
  105. end
  106. else
  107. writeln('Oi mathites fortothikan epitixws apo to mathites.txt');
  108. end;
  109.  
  110. end;
  111. Function get_mathites_count():integer;
  112. begin
  113. f:=0;
  114. for i:=1 to length(mathites) do
  115. if mathites[i]<>'' then f:=f+1;
  116. get_mathites_count:=f;
  117. end;
  118. Function get_used_space():integer;
  119. begin
  120. f:=0;
  121. for i:=1 to length(kodikos) do
  122. if kodikos[i]<>0 then f:=f+1;
  123. get_used_space:=f;
  124. end;
  125. Procedure first_sort();
  126. begin
  127. for i:=1 to length(kodikos) do
  128. begin
  129. if kodikos[i]<>0 then
  130. begin
  131. apontes[i]:=kodikos[i];
  132. end;
  133. end;
  134. end;
  135. Procedure update_mathites();
  136. begin
  137. for i:=1 to length(apontes1) do
  138. begin
  139. for kl:=1 to length(mathites) do
  140. begin
  141. if (apontes1[i]=mathites[kl]) then
  142. begin
  143. apontes1[i]:=mathites[kl];
  144. //mathites[kl]:='';
  145. end;
  146. end;
  147. end;
  148. end;
  149. Procedure show_list();
  150. begin
  151. for i:=1 to length(mathites) do
  152. if mathites[i]<>'' then writeln(i,' - ',mathites[i]);
  153. write('Dose ton kodiko tou mathiti:');
  154. readln(kodikos[j]);
  155. apontes[j]:=kodikos[j];
  156. j:=j+1;
  157. end;
  158. begin
  159. first_time:=true;
  160. is_sorted:=false;
  161. j:=1;
  162. write('Tha thelate na fortothun oi mathites apo to arxeio mathites.txt?(y/n)');
  163. readln(ans2);
  164. if ans2='y' then istxt:=true
  165. else istxt:=false;
  166. repeat
  167. clrscr;
  168.  
  169. //j:=j+1;
  170. if first_time=true then
  171. begin
  172. init_mathites();
  173. while (skip=false) do
  174. begin
  175. write('Kyrie Elia yparxei apontas mathitis?(y/n)(-1 gia eksodo):');
  176. readln(ans);
  177. if ans='y' then
  178. begin
  179. show_list();
  180. end
  181. else
  182. skip:=true;
  183. end;
  184. if is_sorted=false then
  185. begin
  186. is_sorted:=true;
  187. //first_sort();
  188. end;
  189. end
  190. else
  191. begin
  192. {*if is_sorted=false then
  193. begin
  194. is_sorted:=true;
  195. first_sort();
  196. end;*}
  197. update_mathites();
  198. writeln('Mathites pou idi vgikan ston pinaka:');
  199. writeln('**********************************************');
  200. show_kodikos();
  201. writeln('**********************************************');
  202. writeln();
  203. writeln('----------------------------------------------');
  204. writeln('Apontes:');
  205. show_apontes();
  206. writeln();
  207. writeln('Patiste enter gia na epilegei neos mathitis');
  208. readln();
  209. end;
  210. first_time:=false;
  211. skip:=false;
  212. randomize();
  213. full:=get_mathites_count();
  214. lkod:=length(kodikos);
  215. //if length
  216. if get_used_space()< full then
  217. begin
  218. repeat
  219. retry:=false;
  220. lucky:=random(full)+1;
  221. for i:=1 to lkod do
  222. begin
  223. if (kodikos[i]=lucky) or (mathites[lucky]='') then
  224. begin
  225. retry:=true;
  226. lucky:=random(full)+1; //+1 prp na mpei
  227. //writeln(lucky);
  228. end;
  229. end;
  230. until retry=false;
  231. if ans<>'-1' then
  232. begin
  233. writeln('---------------------------------------------');
  234. writeln('O tixeros mathitis einai:',mathites[lucky]);
  235. kodikos[j]:=lucky;
  236. writeln('---------------------------------------------');
  237. j:=j+1;
  238. end; //if ans<>'-1'
  239. end //if get_used_space()
  240. else if get_used_space() = full then
  241. begin
  242. writeln('Oloi oi mathites pou itan diathesimoi vgikan ston pinaka');
  243. ans:='-1';
  244. end;
  245. readln;
  246. until ans='-1';
  247. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement