Задачи по Pascal. Вычислить сумму элементов, расположенных над главной диагональю. Полученной суммой заменить минимальный элемент всей матрицы.

Задачи по Pascal

Условие задачи : В заданной квадратной матрице A(K,K) (K <= 10) вычислить сумму элементов, расположенных над главной диагональю. Полученной суммой заменить минимальный элемент всей матрицы. Сумму и матрицу распечатать.

Сложность : средняя .

Решение задачи :

Код программы у меня получился немного большим, но на мой взгляд понятным. Сейчас все подробно расскажу. В условии задачи не каких сверхъестественных слов нет.

Для начала продумаем наше решение :

Мы заполним нам массив случайными числами, затем в следующем цикле мы выведем наш массив и найдем минимальный элемент, дальше мы найдем сумму элементов, расположенных над главной диагональю.

Ну а потом заменим минимальный элемент ( хотя их может быть несколько ) суммой.

Для решения задачи нам понадобятся следующие переменные :

  1. Переменная mass — для нашего массива
  2. Переменная summa — для суммы элементов, расположенных над главной диагональю
  3. Переменная min — для минимального элемента массива
  4. Переменные i и j — для циклов и индексов элементов

Начнем мы с каркаса нашей программы :

uses crt;

const
    K = 3 ;
type
    massiv = array [1..K, 1..K] of integer;
var
    mass : massiv;
    summa , min , i , j : integer;

begin

clrscr;
randomize;

summa := 0;
end.

Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ) дальше объявили все переменные, присвоили переменной summa ноль, чтобы не было ошибок, включили генератор случайных чисел , подробнее (тут), ну и задали размер массива (K = 3).

Теперь давайте заполним нам массив случайными числами :

for i:=1 to K do
    for j:=1 to K do
        mass[i,j] := random(10);

Теперь мы будем искать минимальный элемент, но чтобы это сделать нужно иметь начальное значение минимального элемента, которое у нас будет равняться первому элементу нашего массива, ну так всегда делается.

Теперь мы будем каждое значение массива сравнивать с этим минимальным элементов, и если какое-то из них окажется меньше, то уже оно станет минимальным и так пока цикл не кончится и также сразу же выведем весь массив :

min := mass[1,1];

for i:=1 to K do
    begin
        for j:=1 to K do
            begin
                write(mass[i,j], ' | ');
                if (mass[i,j] &lt; min) then
                    min := mass[i,j];
            end;
        writeln;
    end;

Вот теперь у нас минимальный элемент, дальше надо найти сумму элементов, расположенных над главной диагональю. Это какие спросите вы ?

Вот главная диагональ это черная черта от 1-го до последнего элемента матрицы и нам надо найти сумму чисел выше этой диагонали :

for i := 1 to K do
    for j := i + 1 to K do
       summa := summa + mass[i,j];

Если не понятна суть этого кода просто на листочке нарисуйте и подставьте и вы всё поймете.

Ну теперь можно вывести сумму и минимальный элемент :

Writeln; // для красоты
Writeln('Минимальный элемент матрицы: ', min);
Writeln('Сумма равна ', summa);

Теперь нам осталось заменить все минимальные элементы (если их несколько) , если нет то один суммой, мы еще раз пустим цикл и заменим все числа которые равны числу min и сразу выведем матрицу :

Writeln('Матрица :');

for i:=1 to K do
    begin
        for j:=1 to K do
            begin
                if (mass[i,j] = min) then
                    mass[i,j] := summa;
                write(mass[i,j]:2, ' | ');
            end;
        writeln;
    end;

Всё решение задачи Pascal:

uses crt; // модель для работы с экраном

const
    K = 3 ; //  задаем размер нашего массива
type
    massiv = array [1..K, 1..K] of integer; // создаем тип для массива
var
    mass : massiv; // объявляем 
    summa , min , i , j : integer; // переменные

begin
clrscr; // очищаем экран
randomize; // включаем генератор случайных чисел
summa := 0; // обнуляем сумму

for i:=1 to K do // пускаем 
    for j:=1 to K do // цикл
        mass[i,j] := random(10); // и заполняем массив случайными числами

min := mass[1,1]; // минимальному элементу присваиваем зн-е 1-го элемента массива

for i:=1 to K do // пускаем
    begin
        for j:=1 to K do // цикл
            begin
                write(mass[i,j], ' | '); // выводим массив
                if (mass[i,j] < min) then
                    min := mass[i,j]; // ищем минимальным элемент
            end;
        writeln; // переносим курсор на новую строку, чтобы получилась матрица
    end;

for i := 1 to K do // пускаем 
    for j := i + 1 to K do // цикл
       summa := summa + mass[i,j]; // ищем сумму

Writeln;
Writeln('Минимальный элемент матрицы: ', min);
Writeln('Сумма равна ', summa);
Writeln('Матрица :');

for i:=1 to K do // пускаем 
    begin
        for j:=1 to K do // цикл 
            begin
                if (mass[i,j] = min) then 
                    mass[i,j] := summa; // заменяем минимальные элементы на сумму
                write(mass[i,j]:2, ' | '); // выводим новый массив
            end;
        writeln;
    end;

readln; // чтобы программа не закрывалась
end.

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий