1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Задание такое: Написать программу для определения, кто из четырех студентов сдал экзамен, если известно: а) если первый сдал, то и второй сдал; б) если второй сдал, то третий сдал или первый не сдал; в) если четвертый не сдал, то первый сдал, а третий не сдал; г) если четвертый сдал, то и первый сдал. По-моему, в условии ошибка... Из в и г следует, что первый сдал в любом случае, а, следовательно, сдал и второй, откуда в свою очередь следует, что сдал и третий (т.к. первый сдал), а т.к. третий сдал, то четвертый не мог не сдать (т.е. тоже сдал)...
Задание такое: Написать программу для определения, кто из четырех студентов сдал экзамен
Из интересу написал вот такой код:
Код
program Stud;
{$APPTYPE CONSOLE}
uses SysUtils;
const MAX_STUDENTS = 4;
type TStudents = array[1..MAX_STUDENTS] of boolean;
function AssertRules(const students: TStudents): boolean;
//a) если первый сдал, то и второй сдал; function AssertA: boolean; begin if students[1] then Result := students[2] else Result := true end;
//б) если второй сдал, то третий сдал или первый не сдал function AssertB: boolean; begin if students[2] then Result := students[3] or not students[1] else Result := true end;
//в) если четвертый не сдал, то первый сдал, а третий не сдал function AssertC: boolean; begin if not students[4] then Result := students[1] and not students[3] else Result := true end;
//г) если четвертый сдал, то и первый сдал function AssertD: boolean; begin if students[4] then Result := students[1] else Result := true end;
begin Result := AssertA and AssertB and AssertC and AssertD end;
procedure PrintStudents(const students: TStudents); const RESULT: array[false..true] of string = ('failed', 'passed'); var i: integer; begin WriteLn('students:'); for i:=Low(students) to High(students) do begin WriteLn(' student ', i, ': ', RESULT[students[i]]); end; WriteLn; end;
procedure FindResult(); var students: TStudents;
procedure _FindResult(cur: integer); var i: integer; begin if cur > High(students) then begin if AssertRules(students) then PrintStudents(students); end else begin students[cur] := false; _FindResult(cur + 1);