Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils;
- const MARKS_C = 10;
- type TStudent = class
- private
- lastName : string;
- marks : array[0..MARKS_C] of byte;
- marksCount : byte;
- public
- constructor Create(newName : string);
- function getLastName : string;
- procedure setLastName(newName : string);
- function getMarksCount : byte;
- function addMark(newMark : byte) : boolean;
- function setMark(markIndex, newMark : byte) : boolean;
- function getMark(markIndex : byte) : byte;
- function averageMark : real;
- function getData : string;
- end;
- implementation
- constructor TStudent.Create(newName : string);
- begin
- lastName := newName;
- marksCount := 0;
- end;
- function TStudent.getLastName():string;
- begin
- result := lastName;
- end;
- procedure TStudent.setLastName(newName : string);
- begin
- lastName := newName;
- end;
- function TStudent.getMarksCount : byte;
- begin
- result := marksCount;
- end;
- function TStudent.addMark(newMark : byte) : boolean;
- begin
- if ((newMark in [2..5]) and (marksCount < MARKS_C)) then
- begin
- marks[marksCount + 1] := newMark;
- inc(marksCount);
- result := true;
- end else
- result := false;
- end;
- function TStudent.setMark(markIndex, newMark : byte) : boolean;
- begin
- if ((newMark in [2..5]) and (markIndex in [1..MARKS_C])) then
- begin
- if (marks[markIndex] = 0) then inc(marksCount);
- marks[markIndex] := newMark;
- result := true;
- end else result := false;
- end;
- function TStudent.getMark(markIndex : byte) : byte;
- begin
- if (markIndex in [1..10]) then
- if (marks[markIndex] <> 0) then
- result := marks[markIndex];
- end;
- function TStudent.averageMark() : real;
- var
- marksSum : integer;
- i : byte;
- begin
- marksSum := 0;
- for i := 1 to marksCount do
- begin
- marksSum += marks[i];
- end;
- result := (marksSum / marksCount);
- end;
- function TStudent.getData : string;
- var
- i : byte;
- data : string;
- begin
- data := lastName;
- for i := 1 to marksCount do data += ' ' + intToStr(marks[i]);
- result := data;
- end;
- var
- student01, student02 : TStudent;
- answer, id, mark, markIndex, newMark: byte;
- lName, newName : string;
- begin
- answer := 0;
- repeat
- writeln('1. Add a two students');
- writeln('2. Add marks');
- writeln('3. Change the marks');
- writeln('4. Get mark');
- writeln('5. Average number of student');
- writeln('6. All data');
- writeln('7. Exit');
- readln(answer);
- case answer of
- 1:
- begin
- write('Enter the last name of the first student: ');
- readln(lName);
- student01.Create(lName);
- write('Enter the last name of the second student: ');
- readln(newName);
- student02.Create(newName);
- writeln(student01.getLastName());
- end;
- 2:
- begin
- //readln;
- //write(student01.getLastName);
- //readln();
- write('1. ', student01.getLastName(), ' or 2. ', student02.getLastName(), '? 1/2: ');
- readln(id);
- write('Which mark should be added?[2..5]: ');
- readln(mark);
- case id of
- 1:
- begin
- student01.addMark(mark);
- end;
- 2:
- begin
- student02.addMark(mark);
- end;
- end;
- end;
- 3:
- begin
- write('1. ', student01.getLastName, ' or 2. ', student02.getLastName, '? 1/2: ');
- readln(id);
- case id of
- 1:
- begin
- writeln(student01.getData);
- end;
- 2:
- begin
- writeln(student02.getData);
- end;
- end;
- write('Which mark should be changed by index?[1..10]: ');
- readln(markIndex);
- write('Which mark should be changed?[2..5]: ');
- readln(newMark);
- case id of
- 1:
- begin
- student01.setMark(markIndex, newMark);
- end;
- 2:
- begin
- student02.setMark(markIndex, newMark);
- end;
- end;
- end;
- 4:
- begin
- write('1. ', student01.getLastName, ' or 2. ', student02.getLastName, '? 1/2: ');
- readln(id);
- case id of
- 1:
- begin
- writeln(student01.getData);
- end;
- 2:
- begin
- writeln(student02.getData);
- end;
- end;
- write('Which mark you want by index?[1..10]: ');
- readln(markIndex);
- case id of
- 1:
- begin
- writeln(student01.getMark(markIndex));
- end;
- 2:
- begin
- writeln(student02.getMark(markIndex));
- end;
- end;
- end;
- 5:
- begin
- write('1. ', student01.getLastName, ' or 2. ', student02.getLastName, '? 1/2: ');
- readln(id);
- case id of
- 1:
- begin
- writeln(student01.averageMark());
- end;
- 2:
- begin
- writeln(student02.averageMark());
- end;
- end;
- end;
- 6:
- begin
- writeln(student01.getData());
- writeln(student02.getData());
- end;
- end;
- until answer = 7;
- //if student01.addMark(4) then writeln('Correct.') else writeln('Error.');
- //if student02.addMark(5) then writeln('Correct.') else writeln('Error.');
- //student02.setLastName('Khafizov');
- //if student02.setMark(1, 3) then writeln('Correct.') else writeln('Error.');
- //writeln('Count of marks of student ', student01.getLastName, ' : ', student01.getMarksCount);
- //if student02.addMark(5) then writeln('Correct.') else writeln('Error.');
- //if (student02.getMark(2) <> 0) then writeln(student02.getMark(2)) else writeln('Error.');
- //writeln('Average mark of student ', student02.getLastName, ' : ', student02.averageMark : 2);
- //writeln(student01.getData);
- //writeln(student02.getData);
- //
- // readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment