Вопрос задан 10.08.2018 в 02:25. Предмет Информатика. Спрашивает Адамовский Никита.

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

Если такой строки нет - выдать соответствующее сообщение.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Клапко Богдан.
// PascalABC.NET 3.3, сборка 1549 от 17.10.2017
// Внимание! Если программа не работает, обновите версию!

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
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи на языке программирования Паскаль можно использовать следующий алгоритм:

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, если такая строка существует. После этого выводится полученная матрица без удаленной строки. Если строка не найдена, выводится соответствующее сообщение.

0 0

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

Последние заданные вопросы в категории Информатика

Задать вопрос