Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 16.07.2021
Сообщений: 1

Cформировать массив из сумм тех строк матрицы, которые начинаются с k идущих подряд положительных чисел

17.07.2021, 13:26. Показов 1001. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна помощь с задачей

Задание звучит так

Дана матрица A. Cформировать одномерный массив, элементами которого являются суммы тех строк, которые начинаются с k идущих подряд положительных чисел.

Это код, написанный мной, он работает только если вводимое число равно 1.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
type
 
var
  a:array[1..5, 1..5] of integer;
  x:array[1..100] of integer;
  i, j, k, l, l2, j2:integer;
begin
  l:=1;
  for i:=1 to 5 do
    for j:=1 to 5 do 
      a[i,j]:=random(100)-50;
  for i:=1 to 5 do begin
    for j:=1 to 5 do 
      write(a[i,j]:4);
    writeln;
  end;
  write('k=');
  read(k);
  for i:=1 to 5 do begin
    for j:=1 to k do begin
      if a[i,j]>0 then begin
      for j2:=1 to 5 do begin
      x[l]:=x[l]+a[i,j2];
      end;
      l:=l+1;
      end
      else
        break;
    end;
  end;
  writeln;
  for l2:=1 to l-1 do
    write(x[l2]:4);
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2021, 13:26
Ответы с готовыми решениями:

Сформировать массив из сумм тех строк, которые начинаются с k идущих подряд положительных чисел
Дана квадратная целочисленная матрица порядка n. Сформировать результирующий одномерный массив, элементами которого являются строчные суммы...

Получить одномерный массив из сумм тех строк, что начинаются с k идущих подряд положительных чисел
Дана квадратная целочисленная матрица порядка n. Сформировать результирующий одномерный массив, элементами которого являются строчные суммы...

Вычислить суммы элементов тех строк матрицы, которые начинаются с k идущих подряд положительных чисел
Необходимо разработать программу, которая из квадратной целочисленной матрицы формирует вектор, элементами которого являются суммы...

9
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
17.07.2021, 14:27
Во-первых, он вообще не запускается!

Во-вторых, чем по вашему отличается массив от матрицы?
Это понятия из разных областей: матрица — это математическое понятие, а массив — это его программный эквивалент.
И, кстати, вам сказано: „Дана матрица А“.
Это не значит, что она как-то там заполнена случайными числами. Она дана!

В-третьих, если у вас двумерный массив имеет размерность 5х5, то зачем одномерный массив имеет размерность 100?
В нём по определению не может быть больше 5 значений.
Но, по результатам работы вашей программы это так!
Значит где-то в алгоритме ошиблись.

А ошиблись вы „поспешив“.
Не нужно сразу начинать подсчёт суммы. Нужно сначала посчитать количество положительных от начала строки.
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
17.07.2021, 22:50
Не такое уж простое оказалось задание. Проверяйте.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
program Project1;
const
  size = 5;
var
  a: array[1..size, 1..size] of integer;
  x: array[1..size] of integer;
  i, j, k, kx, ix: integer;
 
begin
 
  randomize;
  for i:=1 to size do
    for j:=1 to size do
      a[i,j]:=random(100)-30;  {Заполнение двумерного массива случайными числами}
  for i:=1 to size do
    begin
      for j:=1 to size do
        write(a[i,j]:4);       {Вывод двумерного массива в консоль}
      writeln;
    end;
 
  write('k=');
  readln(k);                {Ввод в программу числа k}
  ix:= 0;
  for i:=1 to size do
    begin
      kx:= 0;
      flag:= true;
      for j:=1 to size do
        begin
          if (a[i,j] <= 0) and (kx < k) then   {Условие для проверки элементов массива на отрицательное значение}
            begin
              kx:= 0;
              break;
            end
          else
            if (a[i,j] > 0) then
              inc(kx);
 
        end;
      writeln(i,' row. Consecutive positive numbers: ',kx);
      if (kx = k) then
        begin
          inc(ix);
          x[ix]:= 0;                 {Предварительное обнуление элемента одномерного массива}
          for j:=1 to size do
            x[ix]:= x[ix] + a[i,j];  {Суммирование значений элементов строки}
        end;
 
    end;
 
 
  writeln;
  for i:= 1 to ix do
    write(x[i]:4);
  readln;
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
18.07.2021, 10:44
ValentinNemo, это только у вас „не простое“ решение.
Да ещё и с багами:
  Что будет, если пользователь введёт k > 5 ?
  Что будет, если не найдётся ни одной строки, соответствующих условию?
Ну и в задании сказано про положительные, а у вас какое-то двойное условие… Зачем? Достаточно же одной проверки…

Всё гораздо проще:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const
  n = 5;
  
var
  a : array [1..n, 1..n] of Integer;
  x : array [1..n] of Integer;
  row, col, k, rows, count : Integer;
begin
  { заполнение }
  Randomize;
  for row := 1 to n do
    for col := 1 to n do
      a[row, col] := Random(100) - 30;
      
  { вывод }
  for row := 1 to n do
    begin
      for col := 1 to n do
        Write(a[row, col]:4);
      WriteLn;
    end;
    
  Write('k = '); ReadLn(k);
  if (k < 1) or (k > n) then begin WriteLn('Не могёт такого быть!'); Halt; end;
  
  rows := 0;
  for row := 1 to n do
    begin
      
      { количество положительных с 1-ой по k-ую колонку данной строки }
      count := 0;
      for col := 1 to k do
        if a[row, col] > 0 then
          inc(count);
      
      { подходящая строка }
      if count = k then
        begin
          inc(rows);
          x[rows] := 0;
          for col := 1 to n do
            inc(x[rows], a[row, col]);
        end;
    end;
    
  { Вывод результата }
  if rows = 0 then
    Write('Нет подходящих строк.')
  else
    for row := 1 to rows do
      Write(x[row]:4);
end.
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
18.07.2021, 12:39
JuriiMW, а вы условие задачи читали?

"Cформировать одномерный массив, элементами которого являются суммы тех строк, которые начинаются с k идущих подряд (подчеркнуто мной) положительных чисел."
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
18.07.2021, 13:57
Ну?
Так и получается. Если count=k, то эта строка подходящая.
В чём проблема?
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
18.07.2021, 14:40
JuriiMW, все понял в чем хитрость.... считаем цикл с 1 по k и все работает как надо. До сего момента решения не видел, поэтом извращался как мог.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
18.07.2021, 14:42
ValentinNemo, последнее предложение: https://www.cyberforum.ru/post15623939.html
0
Модератор
10440 / 5729 / 3405
Регистрация: 17.08.2012
Сообщений: 17,438
18.07.2021, 20:57
JuriiMW, в задании есть разночтение. Не сказано, что после k положительных чисел должно идти не положительное число. Может быть, правильно будет так:
Pascal
37
      if count >= k then
Кроме того, не обязательно, чтобы k было не больше количества элементов в строке матрицы. В случае, если k больше количества элементов в строке матрицы, должен получиться массив нулевой длины.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
19.07.2021, 04:15
Cyborg Drone, я тупо считаю k элементов с начала строки.

Добавлено через 1 минуту
P.S. А вообще, ТС просил помощи, а не решить за него.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.07.2021, 04:15
Помогаю со студенческими работами здесь

Посчитать суммы тех строк матрицы, которые начианются с K подряд идущих положительных чисел
Добрые программисты помогите пожалуйста... Дана квадратная целочисленная матрица порядка n. Сформировать результирующий одномерный...

Сформировать результирующий одномерный массив, элементами которого являются строчные суммы тех строк, которые начинаются с k идущих подряд...
4)Дана квадратная целочисленная матрица порядка n. Сформировать результирующий одномерный массив, элементами которого являются строчные...

Найдите номер первой из строк матрицы, которые начинаются с К положительных чисел подряд
Помогите, пожалуйста Дана целочисленная матрица A(NM). Найдите номер первой из ее строк, которые начинаются с К положительных чисел...

Найдите номер первой из строк матрицы, которые начинаются с К положительных чисел подряд
//Дана целочисленная матрица À(N, N). // Найдите номер первой из ее строк, // которые начинаются с К положительных чисел подряд. ...

Сформировать результирующий массив В, элементами которого являются суммы элементов только тех строк матрицы А, которые начинаются с К положительных чи
Дана целочисленная матрица А(Н,Н). Сформировать результирующий массив В, элементами которого являются суммы элементов только тех строк...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru