Написать создайте целочисленный массив из 10 элементов с генератора случайных чисел с элементами от 0 до 9 и выведите его на экран. подсчитайте и выведите на экран сумму четных элементов.
Program Project1; var a:array[0..9] of integer; i,sum:integer;beginrandomize;sum:=0; for i:=0 to 9 do begin a[i]:=random(10); Write(a[i],' '); if a[i] mod 2 = 0 then sum:=sum+a[i]; end; Writeln('Sum: ',sum); readln(i);end.
Пояснение: Существует 16 двоичных слов длины 4 Т.к. среди них есть слова, содержащие 1 или 3 единицы, то в нашем коде нужно использовать кодовые слова с длиной больше, чем 4 Слов длины 5 достаточно Искомые кодовые слова можно получать, например, добавляя к каждому из 16 возможных двоичных слов справа "бит четности", равный 0, если 4-значное двоичное слово содержит четное количество единиц, и равный 1 в противном случае Например, двоичное слово 0000 преобразуется в 00000, а двоичное слово 1011 – в 10111
Если использовать коды длины N, то должно существовать не менее 16 различных строчек из символов 0 и 1, таких, что в каждой такой строчке будет чётное число единиц (это очевидно, конечно: если таких строчек будет меньше 16, то кодов попросту не хватит).
3 не подходит: даже без ограничений на количество единиц число строчек 2^3 = 8, что меньше 16.
4 тоже не подходит: без ограничений на количество единиц число строчек 2^4 = 16, но как минимум одна не подходит (например, 0001 - не удовлетворяет требованиям). Хороших строчек остается не больше 15, что меньше 16. (На самом деле, хороших строчек длины 4 всего 8).
Пробуем 5. Если придумаем как закодировать 16 символов - победа. А закодировать можно вот как: первые 4 символа - двоичная запись номера символа (нумеруем начиная с нуля, например 5-й символ - 0101), а последний символ - 0, если число единиц среди первых четырёх символов чётно и 1 - если нечётно. Тогда в любом случае получится чётное количество единиц.
var a:array[0..9] of integer; i,sum:integer;beginrandomize;sum:=0; for i:=0 to 9 do begin a[i]:=random(10); Write(a[i],' '); if a[i] mod 2 = 0 then sum:=sum+a[i]; end; Writeln('Sum: ',sum); readln(i);end.