
Паскаль! Помогите пожалуйста! Удалить первую из строк матрицы в которой сумма элементов кратна 3.
Если такой строки нет - выдать соответствующее сообщение.

Ответы на вопрос

// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var (i,k):=(0,-1);
foreach var r in a.Rows do
if r.Sum mod 3=0 then begin
k:=i; break
end
else i+=1;
if k>=0 then begin
Writeln('*** Матрица - результат [',n-1,',',m,'] ***');
for var r:=k to a.RowCount-2 do
a.SetRow(r,a.Row(r+1));
SetLength(a,n-1,m);
a.Println
end
else Writeln('Нет строк с суммой жлементов, кратной трем')
end.
Пример
Количество строк в матрице: 7
Количество столбцов в матрице: 8
*** Исходная матрица [7,8] ***
-22 75 97 33 10 -58 -50 -11
-5 24 18 -19 -2 77 -55 -74
50 38 -94 88 -80 -76 70 -20
-53 48 -36 -92 70 -76 -14 -36
-57 30 -76 62 -75 -21 3 93
57 -7 74 -39 87 -74 65 42
94 -68 45 -61 -65 -49 -83 -46
--------------------------------
*** Матрица - результат [6,8] ***
-22 75 97 33 10 -58 -50 -11
50 38 -94 88 -80 -76 70 -20
-53 48 -36 -92 70 -76 -14 -36
-57 30 -76 62 -75 -21 3 93
57 -7 74 -39 87 -74 65 42
94 -68 45 -61 -65 -49 -83 -46



Для решения данной задачи на языке программирования Паскаль можно использовать следующий алгоритм:
1. Объявить и инициализировать матрицу нужного размера. 2. Создать переменную-флаг, которая будет указывать на наличие строки, сумма элементов которой кратна 3. Изначально установить ее значение в false. 3. Пройти по каждой строке матрицы с помощью цикла. 4. Внутри цикла вычислить сумму элементов текущей строки и проверить, является ли она кратной 3. Если да, то удалить строку из матрицы и установить значение переменной-флага в true. 5. После завершения цикла проверить значение переменной-флага. Если оно все еще false, то вывести соответствующее сообщение.
Приведу пример кода на языке Паскаль, реализующий данный алгоритм:
```pascal program DeleteRow;
const N = 3; // размер матрицы
type Matrix = array[1..N, 1..N] of integer;
procedure DeleteFirstRowWithSumDivisibleBy3(var matrix: Matrix); var i, j, sum: integer; flag: boolean; begin flag := false; // инициализация переменной-флага
// цикл по строкам матрицы for i := 1 to N do begin sum := 0; // обнуляем сумму перед каждой новой строкой
// вычисление суммы элементов текущей строки for j := 1 to N do sum := sum + matrix[i, j];
// проверка, является ли сумма кратной 3 if sum mod 3 = 0 then begin // удаление строки из матрицы for j := i to N - 1 do matrix[j] := matrix[j + 1]; N := N - 1; // уменьшение размера матрицы flag := true; // установка значения переменной-флага break; // выход из цикла после удаления первой строки end; end;
// вывод соответствующего сообщения, если нужная строка не найдена if not flag then writeln('Нет строки, сумма элементов которой кратна 3'); end;
var matrix: Matrix; i, j: integer; begin // инициализация матрицы for i := 1 to N do for j := 1 to N do readln(matrix[i, j]);
DeleteFirstRowWithSumDivisibleBy3(matrix); // вызов процедуры удаления строки
// вывод матрицы после удаления строки for i := 1 to N do begin for j := 1 to N do write(matrix[i, j], ' '); writeln; end; end. ```
В данном примере вводится матрица размером 3x3, затем вызывается процедура `DeleteFirstRowWithSumDivisibleBy3`, которая удаляет первую строку, сумма элементов которой кратна 3, если такая строка существует. После этого выводится полученная матрица без удаленной строки. Если строка не найдена, выводится соответствующее сообщение.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili