Я переделал ее...вот такая получилась.....помогите пожалуйста с блок схемой Program Matrix;
Uses Crt;
Const
cMaxSize = 10;
Type
TIndexRange = 1..cMaxSize;
TVector = array [TIndexRange] of Integer;
TMatrix = array [TIndexRange, TIndexRange] of Integer;
Var
f : text;
f1 : text;
mat : TMatrix;
vec : TVector;
m : TIndexRange;
n : TIndexrange;
s : string;
{********************************************************************}
{Функция перевода числа в строку (для использования в выражениях) }
Function Num2Str (n : Integer; w : integer) : string;
var
s : string;
begin
Str (n : w, s);
Num2Str := s;
end;
{****************************************************************}
{Процедура считывания матрицы и вектора из файла
Входные параметры : нет
Выходные параметры : матрица, вектор, кол-во строк и столбцов }
Procedure ReadData (var mat : TMatrix; var vec : TVector; var m : TIndexRange; var n : TIndexRange);
var
s : string;
i : TIndexRange;
j : TIndexRange;
begin
writeln('Выполнить над прямоугольной матрицей B размером m*n последовательность действий: ');
writeln('а) заменить заданным вектором столбцы матрицы B, содержащие хотя бы один нулевой элемент; ');
writeln('б) в полученной матрице вычислить суммы элементов строк, номера которых задаются целочисленным вектором. ');
writeln(f1, 'Выполнить над прямоугольной матрицей B размером m*n последовательность действий: ');
writeln(f1, 'а) заменить заданным вектором столбцы матрицы B, содержащие хотя бы один нулевой элемент; ');
writeln(f1, 'б) в полученной матрице вычислить суммы элементов строк, номера которых задаются целочисленным вектором. ');
read (f, m); { Считываем первое число - количество столбцов }
read (f, n); { Считываем второе число - количество строк }
writeln('Количество столбцов: ', m);
writeln(f1, 'Количество столбцов:', m);
writeln('Количесвто строк: ',n);
writeln(f1,'Количесвто строк:', n);
{ Считываем матрицу }
writeln(' Начальная матрица');
writeln(f1, 'Начальная матрица');
for j := 1 to n do
begin
for i := 1 to m do
begin
read (f, mat [j, i]);
write (f1, mat [j, i] : 3);
write (mat [j, i] : 3);
end;
writeln;
end;
if not eoln (f) then readln (f, s);
{ Считываем вектор }
write('Вектор равен: ');
write(f1,'Вектор равен: ');
for i := 1 to n do
begin
read (f, vec [i]);
write (vec [i]:3);
write (f1,vec[i]:3);
end;
writeln;
Close (f);
end;
{*****************************************************************************}
{Процедура изменения матрицы согласно заданию: замена столбцов с нулевыми элементами на заданный вектор }
Procedure ChangeMatrix (var mat : TMatrix; vec : TVector; m : TIndexRange; n : TIndexRange);
var
i : TIndexRange;
j : TIndexRange;
{
Процедура замены столбца на вектор
}
procedure ChangeColumn (m : TIndexRange);
var
i : TIndexRange;
begin
for i := 1 to n do mat [i, m] := vec [i];
end;
begin
for i := 1 to m do
for j := 1 to n do
{ достаточно найти первый 0 в столбце }
if mat [j, i] = 0 then begin
ChangeColumn (i);
break;
end;
end;
{************************************************************}
{Процедура суммирования элементов строк, указанных в векторе }
Procedure SumMatrixRow (mat : TMatrix; vec : TVector; m : TIndexRange; n : TIndexRange);
var
i : TIndexRange;
j : TIndexRange;
b : Boolean; { признак обработки хотя бы одной строки }
{*****************************************}
{Функция вычисления суммы элементов строки матрицы }
function SumRow (n : TIndexRange) : Integer;
var
i : TIndexRange;
s : Integer;
begin
s := mat [n, 1];
for i := 2 to m do s := s + mat [n, i];
SumRow := s;
end;
{********************************************************}
{ Процедура вывода строки на экран и в файл }
procedure Print (s : string; ln_flag : Boolean);
begin
if ln_flag then begin
writeln (s);
writeln (f1, s);
end
else begin
write (s);
write (f1, s);
end;
end;
begin
Append (f1);
Print ('Измененная матрица:', true);
for j := 1 to n do
begin
for i := 1 to m do
Print (Num2Str (mat [j, i], 3) + ' ', false);
Print ('', true);
end;
b := false;
Print ('Сумма элементов строк матрицы, заданных вектором:', true);
for i := 1 to n do
if (vec [i] > 0) and (vec [i] <= n) then begin
Print ('Строка ' + Num2Str (vec [i], 2) + ' --> ' + Num2Str (SumRow (vec [i]), 6), true);
b := true;
end;
if not b then Print ('Значения вектора не соответствуют номерам строк матрицы!', true);
end;
Begin
ClrScr;
Assign (f, 'in2.txt'); Reset (f);
assign (f1, 'out.txt'); rewrite(f1);
ReadData (mat, vec, m, n);
ChangeMatrix (mat, vec, m, n);
SumMatrixRow (mat, vec, m, n);
{Close (f);}
close(f1);
Readkey;
end.