Пронумеруем мнения. 1.1. Валерий будет третьим. 1.2. Василий будет первым. 2.1. Сергей будет вторым. 2.2. Валерий будет третьим. 3.1. Андрей будет первым. 3.2. Сергей будет третьим.
Допустим, 1.1 истинно, тогда 1.2 ложно. Если 1.1 истинно, то истинно и 2.2, тогда 2.1 ложно. Если 1.1. истинно, то 3.2. ложно, тогда 3.1. истинно. Получаем распределение мест: Валерий третий (1.1.), Андрей первый (3.1.), Сергей не второй, следовательно, второй Василий (методом исключения). Противоречий нет.
Проверим альтернативный вариант. Допустим, 1.1. ложно, тогда 1.2. истинно. Если 1.1. ложно, то и 2.2. ложно, тогда 2.1. истинно. Если 2.1. истинно, то 3.2 ложно, тогда 3.1 истинно. Но истинные 1.2. и 3.1. противоречат друг-другу, следовательно наше допущение неверно и 1.1. ложным быть не может.
Окончательно: Андрей первый, Василий второй, Валерий третий, Сергей четвертый (во всяком случае, не вошел в первую тройку).
var x: array[1..n] of integer; i: integer; flag: boolean;
begin Randomize; Write('Элементы массива: '); for i := 1 to n do begin x[i] := Random(10000); Write(x[i]:5) end; i := 1; flag := false; while (i <= n) and (not flag) do begin flag := (x[i] >= 99) and (x[i] <= 1000); if (not flag) then i := i + 1 end; Writeln; if flag then Writeln('Найден элемент: ', x[i]) else Writeln('Искомого числа нет') end.
var x: array[1..n] of integer; i: integer; flag: boolean;
begin Randomize; Write('Элементы массива: '); for i := 1 to n do begin x[i] := Random(101) - 50; Write(x[i]:4) end; i := n; flag := false; while (i > 0) and (not flag) do begin flag := (x[i] >= -10) and (x[i] <= 20) and (x[i] mod 3 = 0); if (not flag) then i := i - 1 end; Writeln; if flag then Writeln('Найден элемент: ', x[i]) else Writeln('Искомого числа нет') end.
begin Write('Введите натуральное число-> '); Readln(n); Str(n, s); Val(s[1], k, er); if (k mod 2 = 0) then Writeln('Первая цифра числа четная') else Writeln('Первая цифра числа нечетная') end.
Тестовое решение: Введите натуральное число-> 36434523 Первая цифра числа нечетная
function NOD(a, b: integer): integer; begin while a <> b do if a > b then a := a - b else b := b - a; NOD := a end;
var a, b, c: integer;
begin Write('Введите через пробел три целых числа: '); Readln(a, b, c); Writeln('НОД(a,b)+НОД(b,c)=', NOD(a, b) + NOD(b, c)) end.
Тестовое решение: Введите через пробел три целых числа: 2048 512 4262 НОД(a,b)+НОД(b,c)=514
1.1. Валерий будет третьим. 1.2. Василий будет первым.
2.1. Сергей будет вторым. 2.2. Валерий будет третьим.
3.1. Андрей будет первым. 3.2. Сергей будет третьим.
Допустим, 1.1 истинно, тогда 1.2 ложно.
Если 1.1 истинно, то истинно и 2.2, тогда 2.1 ложно.
Если 1.1. истинно, то 3.2. ложно, тогда 3.1. истинно.
Получаем распределение мест: Валерий третий (1.1.), Андрей первый (3.1.), Сергей не второй, следовательно, второй Василий (методом исключения).
Противоречий нет.
Проверим альтернативный вариант.
Допустим, 1.1. ложно, тогда 1.2. истинно.
Если 1.1. ложно, то и 2.2. ложно, тогда 2.1. истинно.
Если 2.1. истинно, то 3.2 ложно, тогда 3.1 истинно.
Но истинные 1.2. и 3.1. противоречат друг-другу, следовательно наше допущение неверно и 1.1. ложным быть не может.
Окончательно: Андрей первый, Василий второй, Валерий третий, Сергей четвертый (во всяком случае, не вошел в первую тройку).