Сформировать главную диагональ матрицы из максимальных элементов, перемещая строки и столбцы - Turbo Pascal
Формулировка задачи:
зарегистрироваться в файл двумерный A массив размером n*n. работу программы нужна начат с чтения матрицы из файла и Параллельно изображат на графическом экране.
матрицу нужно изменять по следующему принципу,передвигая строку и столбец поместить Наибольший элемент матрицы на верхний левый угол' в nклетке (1,1) .
тем же самым способом нужно поступить с матрицои , которая является производным от предыдущей, не принимая во внимание первую строку и столбец.
Наибольший элемент второй матрицы должен появится в клетке (2,2).так продолжая сформировать главную диагональ матрицы
Решение задачи: «Сформировать главную диагональ матрицы из максимальных элементов, перемещая строки и столбцы»
textual
Листинг программы
- const maxn=100; W=5;
- var
- a: array [1..maxn,1..maxn] of Integer;
- i, j, k, n, mi, mj, t: Integer;
- f: Text;
- begin
- Assign(f,'m.txt'); Reset(f);
- ReadLn(f,n);
- for i:=1 to n do for j:=1 to n do Read(f,a[i,j]);
- Close(f);
- WriteLn('A =');
- for i:=1 to n do begin for j:=1 to n do Write(' ',a[i,j]:W); WriteLn; end;
- for k:=1 to n-1 do begin
- mi:=k; mj:=k;
- for i:=k to n do for j:=k to n do if a[mi,mj]<a[i,j] then begin mi:=i; mj:=j; end;
- if k<>mi then for j:=1 to n do begin t:=a[k,j]; a[k,j]:=a[mi,j]; a[mi,j]:=t; end;
- if k<>mj then for i:=1 to n do begin t:=a[i,k]; a[i,k]:=a[i,mj]; a[i,mj]:=t; end;
- end;
- WriteLn('A''=');
- for i:=1 to n do begin for j:=1 to n do Write(' ',a[i,j]:W); WriteLn; end;
- end.
Объяснение кода листинга программы
- Объявляются переменные maxn, W и a. Переменная maxn инициализируется значением 100, а переменная W инициализируется значением 5. Переменная a объявляется как массив целых чисел размером от 1 до maxn на 1 до maxn.
- Задается имя файла f и он открывается для чтения.
- Считывается значение переменной n из файла.
- Для каждой строки в файле считываются значения элементов массива a[i,j].
- Закрывается файл f.
- Выводится строка
A =
. - Для каждой строки в массиве a выводятся значения элементов с пробелами между ними.
- Запускается цикл, который перемещает строки и столбцы в матрице a. Цикл выполняется n-1 раз (где n - значение переменной n).
- Внутри цикла сравниваются элементы матрицы a[i,j] и a[k,j]. Если a[i,j] меньше a[k,j], то значения i и j обновляются, чтобы указывать на текущую максимальную строку и столбец.
- Если k не равно mi, то выполняется еще один цикл, который перемещает строки в матрице a.
- Если k не равно mj, то выполняется еще один цикл, который перемещает столбцы в матрице a.
- Выводится строка
A'' =
. - Для каждой строки в массиве a выводятся значения элементов с пробелами между ними.
- Выводится значение переменной n.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д