электронной таблице выделен диапазон из 10 ячеек, расположенный в столбцах G и H. Правый нижний угол диапазона находится в ячейке H15. Запишите адрес диапазона без пробелов.
const n = 5; m = 5; var a: array[1..n, 1..m] of integer; i, j, tmp, s_s: integer; magic: boolean; begin magic := true; for i := 1 to n do begin for j := 1 to m do begin a[i, j] := random(50); write(a[i, j]:4); if(i = 1) then s_s := s_s + a[i, j]; if(j mod m = 0) then writeln; end; end;
for i := 2 to n do begin tmp := 0; for j := 1 to m do begin tmp := tmp + a[i, j]; end; if(tmp <> s_s) then begin magic := false; break; end; end;
for i := 1 to n do begin tmp := 0; for j := 1 to m do begin tmp := tmp + a[j, i]; end; if(tmp <> s_s) then begin magic := false; break; end; end; if(magic) then writeln('Матрица является магическим квадратом') else writeln('Матрица не является магическим квадратом'); end.
Если не математическим, а программным образом, то примерно так
A2(), А3(), А4(),А5() это массивы, в которых сохраним эти числа
ц2=0;
ц3=0;
ц4=0;
ц5=0; // это их индексы
Для ц=100 до 999 Цикл
Если Остаток(ц+1,2)=0 Тогда
ц2=ц2+1;
А2(ц2)=ц;
КонецЕсли;
Если Остаток(ц+2,3)=0 Тогда
ц3=ц3+1;
А3(ц3)=ц;
КонецЕсли;
Если Остаток(ц+3,4)=0 Тогда
ц4=ц4+1;
А4(ц4)=ц;
КонецЕсли;
Если Остаток(ц+4,5)=0 Тогда
ц5=ц5+1;
А5(ц5)=ц;
КонецЕсли;
КонецЦикла;
// Теперь их напечатаем
Сообщить("При увеличении на 1 делятся на 2");
Для ц=1 по ц2 Цикл
Сообщить(А2(ц));
КонецЦикла;
Сообщить("При увеличении на 2 делятся на 3");
Для ц=1 по ц3 Цикл
Сообщить(А3(ц));
КонецЦикла;
Сообщить("При увеличении на 3 делятся на 4");
Для ц=1 по ц4 Цикл
Сообщить(А4(ц));
КонецЦикла;
Сообщить("При увеличении на 3 делятся на 4");
Для ц=1 по ц4 Цикл
Сообщить(А4(ц));
КонецЦикла;
Сообщить("При увеличении на 4 делятся на 5");
Для ц=1 по ц5 Цикл
Сообщить(А5(ц));
КонецЦикла;
Ну вот, где-то так.
Но если математически, то нужно по-другому, и информатика здесь совершенно ни при чём, скорее теория чисел.
Да, в условии не сказано, что ОДНОВРЕМЕННО, поэтому я решал задачу "не одновременно"
Если одновременно, то ещё проще, всего одно условие со сложным условием и можно без массивов.
Ну и ещё: использована функция Остаток(), она есть в любом языке. Если нет(??!), то легко пишется вручную.
const n = 5;
m = 5;
var
a: array[1..n, 1..m] of integer;
i, j, tmp, s_s: integer;
magic: boolean;
begin
magic := true;
for i := 1 to n do begin
for j := 1 to m do begin
a[i, j] := random(50);
write(a[i, j]:4);
if(i = 1) then s_s := s_s + a[i, j];
if(j mod m = 0) then writeln;
end;
end;
for i := 2 to n do begin
tmp := 0;
for j := 1 to m do begin
tmp := tmp + a[i, j];
end;
if(tmp <> s_s) then begin
magic := false;
break;
end;
end;
for i := 1 to n do begin
tmp := 0;
for j := 1 to m do begin
tmp := tmp + a[j, i];
end;
if(tmp <> s_s) then begin
magic := false;
break;
end;
end;
if(magic) then writeln('Матрица является магическим квадратом') else
writeln('Матрица не является магическим квадратом');
end.