Давно, под влиянием книг Перельмана, Гарднера, Азимова и прочих, а также журналов вроде "Наука и жизнь" и "Квант", планировал на будущее писать собственные научно-популярные книги обо всем. Но к счастью вовремя понял, что бумажная литература в XXI веке - жанр не то чтобы вымирающий, но откровенно ретроградный, и в итоге переквалифицировался в блогеры. Многие посты из тех, что можно найти по тегу "занимательные бредни" (и не только) - это несостоявшиеся статьи/главы. Да, в ЖЖ есть свои "научпоперы" вроде sly2m'а с его физико-математической серией "На пальцах", и мои работы - полнейшая неихуровня ©, зато охват тем у меня поширше будет. Настолько, что даже сам не знаю, про что будет следующий пост.
Сейчас же, отсылаясь к первой главе гарднеровских "Математических досугов", хочу написать про латинские квадраты, конечные аффинные и проективные плоскости и обобщенно-круговые турниры. Что это за звери такие, как они связаны друг с другом и зачем это всё.
Поделитесь своими знаниями, ответьте на вопрос:
1. В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 5; 1; 6; 7; 8; 8; 7; 7; 6; 9 соответственно, т. е. A[0] = 5; A[1] = 1 и т. д. Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже на разных языках программирования. аскаль Алгоритмический язык c := 0; for i := 1 to 9 do if A[i - 1] >= A[i] then begin t := A[i]; A[i] := A[i - 1]; A[i - 1] := t end else c := c + 1; c := 0 нц для i от 1 до 9 если A[i - 1] >= A[i] то t := A[i] A[i] := A[i - 1] A[i - 1] := t иначе c := c + 1 все кц 2. Значения элементов двухмерного массива A[1..100, 1..100] задаются с следующего фрагмента программы: Бейсик Паскаль FOR i= 1 TO 100 FOR k=1 TO 100 IF i > k THEN A(i, k) = i ELSE A(i, k) = -k NEXT k NEXT i for i:=1 to 100 do for k:=1 to 100 do if i > k then A[i, k] := i else A[i, k] := -k; Чему равна сумма элементов массива после выполнения этого фрагмента программы? 3. В программе используется одномерный целочисленный массив A с индексами от 1 до 10. Значения элементов равны 7; 3; 4; 8; 6; 9; 5; 2; 0; 1 соответственно, т. е. A[1] = 7; A[2] = 3 и т. д. Определите значение переменной j после выполнения следующего фрагмента программы, записанного ниже на разных языках программирования. Бейсик Паскаль j = 0 FOR k = 2 TO 10 IF A(k) <= A(1) THEN A(1) = A(k) j = j + k END IF NEXT k j := 0; for k := 2 to 10 do begin if A[k] <= A[1] then begin A[1] := A[k]; j := j + k end end; 4. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы, обрабатывающей данный массив: Паскаль Алгоритмический язык s:=0; n:=10; for i:=0 to n-3 do begin s:=s+A[i]-A[i+2] end; s:=0 n:=10 нц для i от 0 до n-3 s:=s+A[i]-A[i+2] кц 5. В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 8, 4, 3, 0, 7, 2, 1, 5, 9, 6 соответственно, т.е. A[0] = 8, A[1] = 4 и т. д. Определите значение переменной s после выполнения следующего фрагмента программы (записанного ниже на разных языках программирования Алгоритмический язык Паскаль s := 0 нц для j от 0 до 9 если A[j] <= 4 то s := j все кц s := 0; for j := 0 to 9 do if A[j] <= 4 then s := j;
MAX_SIZE = 10;
var
a: array[1..MAX_SIZE] of integer;
i, size: integer;
procedure delete_odd_elements();
var i, j: integer;
begin
i := 1;
repeat
if odd(a[i]) then
begin
dec(size);
for j := i to size do
a[j] := a[j + 1]
end
else inc(i);
until i > size;
end;
begin
writeln('Исходный массив: ');
size := MAX_SIZE;
for i := 1 to size do
begin
a[i] := random(100);
write(a[i] : 3);
end;
delete_odd_elements;
writeln;
writeln('Полученный массив: ');
for i := 1 to size do
write(a[i] : 3);
end.