Var f: text; i, j, n, n1: integer; matrix: array[,] of real; begin assign(f, 'informat8.txt'); reset(f); //найдём количество строк в матрице while not eof(f) do begin readln(f); inc(n); end; writeln('исходная матрица размерности ', n, 'x', n); //инициализируем массив (размерность узнали выше) matrix := new real[n, n]; reset(f); // далее работаем с матрицей размерности [0..n-1] (инициализация происходит, начиная с 0) for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin read(f, matrix[i, j]); write(matrix[i, j]:8:2); end; readln(f); writeln; end; writeln; n1 := 0; for i := 0 to n - 1 do for j := 0 to n - 1 do if matrix[i, j] < 0 then inc(n1); if n1 > round(n * n / 2) then begin writeln('Отрицательных элементов больше половины'); //удваиваем элементы в чётных строках for i := 0 to n - 1 do begin if odd(i) then begin for j := 0 to n - 1 do matrix[i, j] := matrix[i, j] * 2; end; end; end else begin writeln('Отрицательных элементов меньше половины или ровно половина'); //удваиваем элементы последнего столбца for i := 0 to n - 1 do matrix[i, n - 1] := matrix[i, n - 1] * 2; end; writeln('результирующая матрица'); for i := 0 to n - 1 do begin for j := 0 to n - 1 do write(matrix[i, j]:8:2); writeln; end; end.
Не совсем понял суть вопроса, но, скорее всего, задача состоит в том, чтобы подсчитать число итераций (количество прохождений цикла), поэтому, распишу такую постановку вопроса
а) for i:=1 to 2 do
В данном цикле переменная i принимает значение 1 и проводит итерации (повторения) до тех пор, пока не дойдёт до значения 2.
- первый проход (i равно единице)
- второй проход (i равно двум)
- конец
То есть, в этой циклической конструкции код исполнился 2 раза (т.к. i увеличивалось с единицы до двух)
б) for i:=2 to 3 do
В данном цикле переменная i принимает значение 2 и проводит итерации (повторения) до тех пор, пока не дойдёт до значения 3.
- первый проход (i равно двум)
- второй проход (i равно трём)
- конец
То есть, в этой циклической конструкции код исполнился 2 раза (т.к. i увеличивалось с двух до трёх)
в) for i:=1 to 3 do
В данном цикле переменная i принимает значение 1 и проводит итерации (повторения) до тех пор, пока не дойдёт до значения 3.
- первый проход (i равно единице)
- второй проход (i равно двум)
- третий проход (i равно трём)
- конец
То есть, в этой циклической конструкции код исполнился 3 раза (т.к. i увеличивалось с единицы до трёх)
Приношу извинения за то, что на русском языке, но украинский я не знаю :)
f: text;
i, j, n, n1: integer;
matrix: array[,] of real;
begin
assign(f, 'informat8.txt');
reset(f);
//найдём количество строк в матрице
while not eof(f) do
begin
readln(f);
inc(n);
end;
writeln('исходная матрица размерности ', n, 'x', n);
//инициализируем массив (размерность узнали выше)
matrix := new real[n, n];
reset(f);
// далее работаем с матрицей размерности [0..n-1] (инициализация происходит, начиная с 0)
for i := 0 to n - 1 do
begin
for j := 0 to n - 1 do
begin
read(f, matrix[i, j]);
write(matrix[i, j]:8:2);
end;
readln(f);
writeln;
end;
writeln;
n1 := 0;
for i := 0 to n - 1 do
for j := 0 to n - 1 do
if matrix[i, j] < 0 then inc(n1);
if n1 > round(n * n / 2) then
begin
writeln('Отрицательных элементов больше половины');
//удваиваем элементы в чётных строках
for i := 0 to n - 1 do
begin
if odd(i) then begin
for j := 0 to n - 1 do
matrix[i, j] := matrix[i, j] * 2;
end;
end;
end else
begin
writeln('Отрицательных элементов меньше половины или ровно половина');
//удваиваем элементы последнего столбца
for i := 0 to n - 1 do
matrix[i, n - 1] := matrix[i, n - 1] * 2;
end;
writeln('результирующая матрица');
for i := 0 to n - 1 do begin
for j := 0 to n - 1 do
write(matrix[i, j]:8:2);
writeln;
end;
end.
Результат работы:
а) исполнился 2 раза
б) исполнился 2 раза
в) исполнился 3 раза
Объяснение:
Не совсем понял суть вопроса, но, скорее всего, задача состоит в том, чтобы подсчитать число итераций (количество прохождений цикла), поэтому, распишу такую постановку вопроса
а) for i:=1 to 2 do
В данном цикле переменная i принимает значение 1 и проводит итерации (повторения) до тех пор, пока не дойдёт до значения 2.
- первый проход (i равно единице)
- второй проход (i равно двум)
- конец
То есть, в этой циклической конструкции код исполнился 2 раза (т.к. i увеличивалось с единицы до двух)
б) for i:=2 to 3 do
В данном цикле переменная i принимает значение 2 и проводит итерации (повторения) до тех пор, пока не дойдёт до значения 3.
- первый проход (i равно двум)
- второй проход (i равно трём)
- конец
То есть, в этой циклической конструкции код исполнился 2 раза (т.к. i увеличивалось с двух до трёх)
в) for i:=1 to 3 do
В данном цикле переменная i принимает значение 1 и проводит итерации (повторения) до тех пор, пока не дойдёт до значения 3.
- первый проход (i равно единице)
- второй проход (i равно двум)
- третий проход (i равно трём)
- конец
То есть, в этой циклической конструкции код исполнился 3 раза (т.к. i увеличивалось с единицы до трёх)
Приношу извинения за то, что на русском языке, но украинский я не знаю :)
Надеюсь и правильно понял суть вопроса