Это сделает логическое выражение (a mod 2)+(b mod 2) = 1 ОБЪЯСНЕНИЕ: Оператор mod возвращает остаток от целочисленного деления операндов. a mod 2 будет равно нулю, если a четное или единице, если а нечетное. То же верно и для b mod 2. Рассмотрим поведение суммы (a mod 2)+(b mod 2) при различных комбинациях a и b 1. Оба нечетных. Сумма равна 1+1, т.е. 2 2. Одно четное, другое нечетное. Сумма равна 1+ 0 (или 0+1), т.е. 1 3. Оба четных. Сумма равна 0+0, т.е. 0. Следовательно, сумма равна единице тогда и только тогда, когда одно из чисел четное, а другое нечетное. Оставшаяся часть выражения превращает его в логическое, проверяя условие 1=1. Предлагаемое логическое выражение может быть использовано как в качестве правой части оператора присваивания, так и в качестве логичесвого выражения в операторах if-then-else или циклов while, repeat.
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var i,x,y,z, dwa,tri,shetire,pati:Integer; begin Writeln('student Fediya='); Readln(i); Writeln('student Sungat='); readln(x); Writeln('student Alex='); readln(y); Writeln('student Halif='); Readln(z); case i of 2: Inc(dwa); 3: Inc(tri); 4: Inc(shetire); 5: Inc(pati); end; begin case x of 2: Inc(dwa); 3: Inc(tri); 4: Inc(shetire); 5: Inc(pati); end; end; begin case y of 2: Inc(dwa); 3: Inc(tri); 4: Inc(shetire); 5: Inc(pati); end; end; begin case z of 2: Inc(dwa); 3: Inc(tri); 4: Inc(shetire); 5: Inc(pati); end; end; WriteLn(#13#10'dwa: ', dwa, #13#10'tri: ', tri, #13#10'shetire: ', shetire, #13#10'pati: ', pati); ReadLn; { TODO -oUser -cConsole Main : Insert code here }end.
const M = 10; var a : array [1..M] of integer; i,max, odd : integer; begin odd := 0; {Заполнение массива} for i := 1 to M do begin write('Input a[',i,']:' ); readln(a[i]); end; {Вывод массива на экран} for i := 1 to M do write(a[i]:2,' '); writeln; {Поиск максимального в массиве} max := a[1]; for i := 2 to M do if (a[i] > max) then max := a[i]; writeln('Максимальный элемент массива: ',max); {Поиск всех нечетных чисел в массиве и замена их на 1} for i := 1 to M do if (a[i] mod 2 = 1) then begin a[i] := 1; odd := 666; end; {Вывод сообщения об отсутствии нечетных чисел} if (odd = 0) then writeln('В массиве нечетных чисел нет'); {Вывод преобразованного массива} for i := 1 to M do write(a[i]:2,' '); writeln; readln; end.
В фигурных скобках - комментарии, из программы можно удалять безболезненно. M - количество элементов в массиве. Контрольные примеры для массива из 10 элементов: 1) Массив "1 2 3 4 5 6 7 8 9 10" будет преобразован в "1 2 1 4 1 6 1 8 1 10", максимальный элемент (до преобразования) 10 2) Массив " 2 2 2 2 2 2 2 2 2 2" будет преобразован в " 2 2 2 2 2 2 2 2 2 2", на экран будет выведено сообщение "в массиве нечетных чисел нет", максимальный элемент 2
(a mod 2)+(b mod 2) = 1
ОБЪЯСНЕНИЕ:
Оператор mod возвращает остаток от целочисленного деления операндов.
a mod 2 будет равно нулю, если a четное или единице, если а нечетное. То же верно и для b mod 2. Рассмотрим поведение суммы (a mod 2)+(b mod 2) при различных комбинациях a и b
1. Оба нечетных. Сумма равна 1+1, т.е. 2
2. Одно четное, другое нечетное. Сумма равна 1+ 0 (или 0+1), т.е. 1
3. Оба четных. Сумма равна 0+0, т.е. 0.
Следовательно, сумма равна единице тогда и только тогда, когда одно из чисел четное, а другое нечетное.
Оставшаяся часть выражения превращает его в логическое, проверяя условие 1=1.
Предлагаемое логическое выражение может быть использовано как в качестве правой части оператора присваивания, так и в качестве логичесвого выражения в операторах if-then-else или циклов while, repeat.