Akaleaf

bbbbbbbb

Feb 6th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.23 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8. Classes, SysUtils;
  9.  
  10. const MARKS_C = 10;
  11. type TStudent = class
  12. private
  13. lastName : string;
  14. marks : array[1..MARKS_C] of byte;
  15. marksCount : byte;
  16. public
  17. constructor Create(lName : string);
  18. function getLastName : string;
  19. procedure setLastName(lName : string);
  20. function getMarksCount : byte;
  21. function addMark(newMark : byte) : boolean;
  22. function setMark(markIndex, newMark : byte) : boolean;
  23. function getMark(markIndex : byte) : byte;
  24. function averageMark : real;
  25. function getData : string;
  26. end;
  27.  
  28.  
  29. implementation
  30.  
  31. constructor TStudent.Create(lName : string);
  32. begin
  33. lastName := lName;
  34. marksCount := 0;
  35. end;
  36.  
  37. function TStudent.getLastName() : string;
  38. begin
  39. result := lastName;
  40. end;
  41.  
  42. procedure TStudent.setLastName(lName : string);
  43. begin
  44. lastName := lName;
  45. end;
  46.  
  47. function TStudent.getMarksCount : byte;
  48. begin
  49. result := marksCount;
  50. end;
  51.  
  52. function TStudent.addMark(newMark : byte) : boolean;
  53. begin
  54. if ((newMark in [2..5]) and (marksCount < MARKS_C)) then
  55. begin
  56. marks[marksCount + 1] := newMark;
  57. inc(marksCount);
  58. result := true;
  59. end else
  60. result := false;
  61. end;
  62.  
  63. function TStudent.setMark(markIndex, newMark : byte) : boolean;
  64. begin
  65. if ((newMark in [2..5]) and (markIndex in [1..MARKS_C])) then
  66. begin
  67. if (marks[markIndex] = 0) then inc(marksCount);
  68. marks[markIndex] := newMark;
  69. result := true;
  70. end else result := false;
  71. end;
  72.  
  73. function TStudent.getMark(markIndex : byte) : byte;
  74. begin
  75. if (markIndex in [1..10]) then
  76. if (marks[markIndex] <> 0) then
  77. result := marks[markIndex];
  78. end;
  79.  
  80. function TStudent.averageMark() : real;
  81. var
  82. marksSum : integer;
  83. i : byte;
  84. begin
  85. marksSum := 0;
  86. for i := 1 to marksCount do
  87. begin
  88. marksSum += marks[i];
  89. end;
  90. result := (marksSum / marksCount);
  91. end;
  92.  
  93. function TStudent.getData : string;
  94. var
  95. i : byte;
  96. data : string;
  97. begin
  98. data := lastName;
  99. for i := 1 to marksCount do data += ' ' + intToStr(marks[i]);
  100. result := data;
  101. end;
  102.  
  103. var
  104. student01, student02 : TStudent;
  105. answer, id, mark, markIndex, newMark: byte;
  106. lName : string;
  107.  
  108. begin
  109. answer := 0;
  110. repeat
  111. writeln('1. Add a two students');
  112. writeln('2. Add marks');
  113. writeln('3. Change the marks');
  114. writeln('4. Get mark');
  115. writeln('5. Average number of student');
  116. writeln('6. All data');
  117. writeln('7. Exit');
  118. readln(answer);
  119. case answer of
  120. 1:
  121. begin
  122. write('Enter the last name of the first student: ');
  123. readln(lName);
  124. student01.Create(lName);
  125. write('Enter the last name of the second student: ');
  126. readln(lName);
  127. student02.Create(lName);
  128. writeln(student01.getLastName());
  129. end;
  130. 2:
  131. begin
  132. //readln;
  133. //write(student01.getLastName);
  134. //readln();
  135. write('1. ', student01.getLastName(), ' or 2. ', student02.getLastName(), '? 1/2: ');
  136. readln(id);
  137. write('Which mark should be added?[2..5]: ');
  138. readln(mark);
  139. case id of
  140. 1:
  141. begin
  142. student01.addMark(mark);
  143. end;
  144. 2:
  145. begin
  146. student02.addMark(mark);
  147. end;
  148. end;
  149. end;
  150. 3:
  151. begin
  152. write('1. ', student01.getLastName, ' or 2. ', student02.getLastName, '? 1/2: ');
  153. readln(id);
  154. case id of
  155. 1:
  156. begin
  157. writeln(student01.getData);
  158. end;
  159. 2:
  160. begin
  161. writeln(student02.getData);
  162. end;
  163. end;
  164. write('Which mark should be changed by index?[1..10]: ');
  165. readln(markIndex);
  166. write('Which mark should be changed?[2..5]: ');
  167. readln(newMark);
  168. case id of
  169. 1:
  170. begin
  171. student01.setMark(markIndex, newMark);
  172. end;
  173. 2:
  174. begin
  175. student02.setMark(markIndex, newMark);
  176. end;
  177. end;
  178. end;
  179. 4:
  180. begin
  181. write('1. ', student01.getLastName, ' or 2. ', student02.getLastName, '? 1/2: ');
  182. readln(id);
  183. case id of
  184. 1:
  185. begin
  186. writeln(student01.getData);
  187. end;
  188. 2:
  189. begin
  190. writeln(student02.getData);
  191. end;
  192. end;
  193. write('Which mark you want by index?[1..10]: ');
  194. readln(markIndex);
  195. case id of
  196. 1:
  197. begin
  198. writeln(student01.getMark(markIndex));
  199. end;
  200. 2:
  201. begin
  202. writeln(student02.getMark(markIndex));
  203. end;
  204. end;
  205. end;
  206. 5:
  207. begin
  208. write('1. ', student01.getLastName, ' or 2. ', student02.getLastName, '? 1/2: ');
  209. readln(id);
  210. case id of
  211. 1:
  212. begin
  213. writeln(student01.averageMark());
  214. end;
  215. 2:
  216. begin
  217. writeln(student02.averageMark());
  218. end;
  219. end;
  220. end;
  221. 6:
  222. begin
  223. writeln(student01.getData());
  224. writeln(student02.getData());
  225. end;
  226. end;
  227. until answer = 7;
  228.  
  229. //if student01.addMark(4) then writeln('Correct.') else writeln('Error.');
  230. //if student02.addMark(5) then writeln('Correct.') else writeln('Error.');
  231. //student02.setLastName('Khafizov');
  232. //if student02.setMark(1, 3) then writeln('Correct.') else writeln('Error.');
  233. //writeln('Count of marks of student ', student01.getLastName, ' : ', student01.getMarksCount);
  234. //if student02.addMark(5) then writeln('Correct.') else writeln('Error.');
  235. //if (student02.getMark(2) <> 0) then writeln(student02.getMark(2)) else writeln('Error.');
  236. //writeln('Average mark of student ', student02.getLastName, ' : ', student02.averageMark : 2);
  237. //writeln(student01.getData);
  238. //writeln(student02.getData);
  239. //
  240. // readln;
  241. end.
Add Comment
Please, Sign In to add comment