![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Unknown |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Задание такое:
Написать программу для определения, кто из четырех студентов сдал экзамен, если известно: а) если первый сдал, то и второй сдал; б) если второй сдал, то третий сдал или первый не сдал; в) если четвертый не сдал, то первый сдал, а третий не сдал; г) если четвертый сдал, то и первый сдал. По-моему, в условии ошибка... Из в и г следует, что первый сдал в любом случае, а, следовательно, сдал и второй, откуда в свою очередь следует, что сдал и третий (т.к. первый сдал), а т.к. третий сдал, то четвертый не мог не сдать (т.е. тоже сдал)... -------------------- go ask Alice
|
![]() ![]() |
hardcase |
![]() ![]()
Сообщение
#2
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Задание такое: Написать программу для определения, кто из четырех студентов сдал экзамен Из интересу написал вот такой код: Код 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); students[cur] := true; _FindResult(cur + 1); end; end; begin _FindResult(Low(students)); end; begin FindResult(); ReadLn; end. Программа генерирует все комбинации студентов и проверяет 4 правила для каждой. Если правила срабатывают, то комбинация допустимая и печатается. output программы: сдали все ![]() з.Ы. в первом варианте кода была ошибка ![]() Сообщение отредактировано: hardcase - 11.02.2007 17:13 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 15:36 |