Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //https://vk.com/evgenykravchenko0
- ___ ___ ___
- / /\ ___ / /\ / /\
- / /:/_ /__/\ / /:/_ / /:/_
- / /:/ /\ \ \:\ / /:/ /\ / /:/ /\
- / /:/ /:/_ \ \:\ / /:/_/::\ / /:/ /:/_
- /__/:/ /:/ /\ ___ \__\:\ /__/:/__\/\:\ /__/:/ /:/ /\
- \ \:\/:/ /:/ /__/\ | |:| \ \:\ /~~/:/ \ \:\/:/ /:/
- \ \::/ /:/ \ \:\| |:| \ \:\ /:/ \ \::/ /:/
- \ \:\/:/ \ \:\__|:| \ \:\/:/ \ \:\/:/
- \ \::/ \__\::::/ \ \::/ \ \::/
- \__\/ ~~~~ \__\/ \__\/
- ___
- /__/\ ___ ___
- \ \:\ / /\ / /\
- \ \:\ / /:/ / /:/
- _____\__\:\ /__/::\ /__/::\
- /__/::::::::\ \__\/\:\__ \__\/\:\__
- \ \:\~~\~~\/ \ \:\/\ \ \:\/\
- \ \:\ ~~~ \__\::/ \__\::/
- \ \:\ /__/:/ /__/:/
- \ \:\ \__\/ \__\/
- \__\/
- var
- a: array[1..20,1..20] of real;
- b: array[1..20] of real; // вспомогательный одномерный массив (суммы положительных элементов строк)
- n , m, i, j, s, k: integer;
- tmp : real;
- begin
- tmp := 0; //изначально избавляемся от мусора
- // приглашение на ввод и ввод размеров матрицы
- write('Введите размеры матрицы ');
- readln(n, m);
- random;//рандом
- {инициализация и вывод исходной матрицы
- b[i] = 0 изначально.(b[i] будет подсчитывать сумму для каждой строки. i увеличивается с каждым проходом строки
- записывая результат в соответствующий элемент b[1],b[2] итд массива этого.
- }
- for i := 1 to n do
- begin
- b[i] := 0; //изначальная сумма для каждой строки = 0
- for j := 1 to m do
- begin
- a[i, j] := random(10); // в каждый элемент двумерного массива
- //записываем рандомное число от 0 до 9(всегда начинается с 0)
- write(a[i, j]:4:0);//выводим элементы массива,тем самым формируя типа матрицу
- //вывод происходит построчно
- if a[i, j] > 0 then //просто проверка больше ли элемент
- b[i] := b[i] + a[i, j]; // записываем в сумму текущий элемент
- end;
- write(' сумма = ', b[i]:4:0); // выводим сумму для каждой строки
- writeln;
- end;
- writeln;
- // сортировка массива и матрицы
- for i := 2 to n do
- for j := n downto i do
- //downto - переменная счетчика будет уменьшаться с каждым разом на 1
- if b[j-1] < b[j] then // если предпоследняя сумма больше текущей суммы(последней)
- begin
- {
- меняем местами суммы(применяем переменную tmp)
- Напримеp:
- b[j-1] = 15 а b[j] = 20;
- в tmp пихаем 15 ,потом в b[j-1] пихаем 20,
- а в b[j] пихаем 15.Теперь b[j] = 15,b[j-1] =20
- tmp нам просто помогает менять местами
- }
- tmp := b[j - 1];
- b[j - 1] := b[j];
- b[j] := tmp;
- for k := 1 to m do
- begin
- {
- здесь тоже самое, что и выше описал,только меняем местами элементы
- в самой матрице(производим перестановку)
- }
- tmp := a[ j - 1 , k];
- a[j - 1, k] := a[j, k];
- a[j, k] := tmp;
- end;
- end;
- // вывод на экран упорядоченной матрицы
- for i := 1 to n do
- begin
- for j := 1 to m do
- write(a[i, j]:4:0);
- writeln(' сумма = ', b[i]:4:0);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement