Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17

В матрице М(4,6) найти координаты единственного нулевого элемента

03.03.2019, 19:32. Показов 2090. Ответов 17

Студворк — интернет-сервис помощи студентам
В матрице М(4,6) найти координаты единственного нулевого элемента m(i,j). Если для нулевого элемента i<j, то сделать нулевыми четные строки. Иначе - четные столбцы. Обеспечить выдачу на экран исходной матрицы, координат нулевого элемента и результатной матрицы.
Одну программу используя процедуры и функции без параметров. И одну используя функцию с глобальными переменными (параметров должно быть больше 3-х)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2019, 19:32
Ответы с готовыми решениями:

определить координаты единственного нулевого элемента
В матрице МТ(6;6) определить координаты единственного нулевого элемента. Если он располагается в верхней половине матрицы, то сделать...

В матрице М(4,6) найти координаты единственного нулевого элемента
Помоги с последней задачей, не получается.. Спасибо огромное еще раз!) В матрице М(4,6) найти координаты единственного нулевого...

В матрице M (6, 6) определить координаты единственного нулевого элемента
В матрице M(6,6) определить координаты единственного нулевого элемента.Если он располагается в верхней половине матрицы,то сделать нулевыми...

17
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
03.03.2019, 22:11
Цитата Сообщение от a1exandriia Посмотреть сообщение
используя процедуры и функции без параметров
М-м-м.... а это как?
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
03.03.2019, 23:50
ValentinNemo, очень просто. Объявляешь глобальные переменные до подпрограмм, и они будут видны во всех подпрограммах. Формальные параметры в этом случае, в общем-то, и не требуются.

А вот последнее предложение несколько противоречиво... Что это за функция такая с глобальными переменными? Сделать формальные параметры функции глобальными переменными ну никак не получится. Если имеются ввиду именно глобальные переменные, то получаются подпрограммы без параметров, но это было по тексту выше. Или я что-то не так понимаю. Может быть, имеются ввиду всё же формальные параметры?

А не знаю.

a1exandriia, уточните задание.
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
05.03.2019, 16:14
Cyborg Drone, Спасибо я понял.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
06.03.2019, 20:43  [ТС]
Cyborg Drone, Для начала нужно сделать с функциями и процедурами с использованием параметров
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
06.03.2019, 23:00
Лучший ответ Сообщение было отмечено a1exandriia как решение

Решение

Функции как-то не понадобились.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
const
  p = 4;
  q = 6;
 
type
  matrix = array[1..p, 1..q] of integer;
 
procedure inp(out x: matrix);
var i, j: integer;
begin
  writeln('Введите матрицу, содержащую нулевой элемент:');
  writeln('24 числа через пробел или <Enter>, например, 4 строки по 6 чисел');
  for i := 1 to p do
    for j := 1 to q do read(x[i, j]);
  readln
end;
 
procedure print(s: string; const x: matrix);
var i, j: integer;
begin
  writeln(s);
  for i := 1 to p do
    begin
      for j := 1 to q do write(x[i, j]:10);
      writeln
    end
end;
 
procedure find_zero(const x: matrix; var iz, jz: integer);
var i, j: integer;
begin
  iz := 0;
  jz := 0;
  for i := 1 to p do
    begin
      for j := 1 to q do
        if x[i, j] = 0 then
          begin
            iz := i;
            jz := j;
            break
          end;
      if iz > 0 then break
    end
end;
 
procedure zero(var x: matrix; iz, jz: integer);
var i, j: integer;
begin
  for i := 1 to p do
    for j := 1 to q do
      if (iz < jz) and not odd(i) or (iz >= jz) and not odd(j)
        then x[i, j] := 0
end;
 
var
  m: matrix;
  izero, jzero: integer;
 
begin
  inp(m);
  print('Исходная матрица', m);
  find_zero(m, izero, jzero);
  if izero > 0 then
    begin
      writeln('Координаты нулевого элемента: ', izero, ', ', jzero);
      zero(m, izero, jzero);
      print('Преобразованная матрица:', m)
    end
  else writeln('Матрица не содержит нулевого элемента');
  readln
end.
1
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
06.03.2019, 23:28  [ТС]
Cyborg Drone, пишет 8 строчке что Встречено ‘х’, а ожидалось ‘:’
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
06.03.2019, 23:39
У меня всё работает. Паскаль какой? Может быть, он не понимает ключа out? Замените out на var.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
06.03.2019, 23:43  [ТС]
Cyborg Drone, заменил, теперь пишет, что в 72 строке Неожиданный символ ’ ‘
PascalABC
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
07.03.2019, 01:52
У меня работает и в простом ABC, и в ABC.NET. Может быть, что-то не так скопировали?
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
07.03.2019, 09:26  [ТС]
Cyborg Drone, Она запускается, но после ввода цифр показывает полностью нулевую исходную матрицу

Добавлено через 4 минуты
Cyborg Drone, Все работает. Спасибо
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
07.03.2019, 16:45
Можно убрать readln в строках 15 и 71. Для Pascal ABC они не нужны.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
13.03.2019, 23:40  [ТС]
Cyborg Drone, А как сделать, чтобы через procedure пользователя спрашивали- ввести цифры в матрицу по строчкам или по столбцам?
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
14.03.2019, 04:02
Что за идиотское требование? Ну, раз надо, значит, надо. Замените процедуру inp на
Pascal
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure inp(var x: matrix);
var i, j, p: integer;
begin
  write('Как вводить матрицу: по строкам (0) или по столбцам (1)? ');
  readln(p);
  writeln('Введите матрицу, содержащую нулевой элемент:');
  writeln('24 числа через пробел или <Enter>, например, 4 строки по 6 чисел');
  if p = 0 then
    for i := 1 to p do
      for j := 1 to q do read(x[i, j])
  else
    for j := 1 to q do
      for i := 1 to p do read(x[i, j]);
  readln
end;
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
24.03.2019, 22:43  [ТС]
Cyborg Drone, Последний вопрос- нужно чтобы размерность матрицы вводил пользователь
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
25.03.2019, 19:55
А на каком паскале всё-таки нужна программа? Лучше всего это сделать черед динамический массив, но в ABC этих массивов нет.

Добавлено через 5 минут
Ох, о чём это я... Это же общий раздел паскаля....

Добавлено через 22 минуты
Для диалектов паскаля, в которых есть динамические массивы:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
type
  matrix = array of array of integer;
 
procedure inp(out x: matrix; var xx, yy: integer);
var i, j: integer;
begin
  repeat
    write('Введите размер матрицы по вертикали: ');
    readln(yy)
  until yy > 0;
  repeat
    write('Введите размер матрицы пo горизонтали: ');
    readln(xx)
  until xx > 0;
  setlength(x, yy, xx);
  writeln('Введите матрицу, содержащую нулевой элемент:');
  writeln(xx * yy, ' чисел через пробел или <Enter>, например, ', yy, ' строк по ', xx, ' чисел');
  dec(yy);
  dec(xx);
  for i := 0 to yy do
    for j := 0 to xx do read(x[i, j]);
  readln
end;
 
procedure print(s: string; const x: matrix);
var i, j: integer;
begin
  writeln(s);
  for i := 0 to high(x) do
    begin
      for j := 0 to high(x[i]) do write(x[i, j]:10);
      writeln
    end
end;
 
procedure find_zero(const x: matrix; var iz, jz: integer);
var i, j: integer;
begin
  iz := 0;
  jz := 0;
  for i := 0 to high(x) do
    begin
      for j := 0 to high(x[i]) do
        if x[i, j] = 0 then
          begin
            iz := i;
            jz := j;
            break
          end;
      if iz > 0 then break
    end
end;
 
procedure zero(var x: matrix; iz, jz: integer);
var i, j: integer;
begin
  for i := 0 to high(x) do
    for j := 0 to high(x[i]) do
      if (iz < jz) and not odd(i) or (iz >= jz) and not odd(j)
        then x[i, j] := 0
end;
 
var
  m: matrix;
  izero, jzero, p, q: integer;
 
begin
  inp(m, p, q);
  print('Исходная матрица', m);
  find_zero(m, izero, jzero);
  if izero > 0 then
    begin
      writeln('Координаты нулевого элемента: ', izero, ', ', jzero);
      zero(m, izero, jzero);
      print('Преобразованная матрица:', m)
    end
  else writeln('Матрица не содержит нулевого элемента');
  readln
end.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 17
25.03.2019, 23:17  [ТС]
Cyborg Drone, ABC.net

Добавлено через 33 минуты
setlength(x, yy, xx); в этой строчке пишет, что может быть только два параметра
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
26.03.2019, 00:29
Понятно. На самом деле, в PABC.NET это пишется безо всяких процедур. Строчек пять будет, я думаю, но Вы их не сможете понять.

Моя программа, переделанная под PABC.NET, но без применения методов для работы с последовательностями, лямбда-выражений и прочих элементов, характерных для PABC.NET:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
type
  matrix = array [,] of integer;
 
procedure inp(var x: matrix; var yy, xx: integer);
begin
  repeat
    write('Введите размер матрицы по вертикали: ');
    readln(yy)
  until yy > 0;
  repeat
    write('Введите размер матрицы пo горизонтали: ');
    readln(xx)
  until xx > 0;
  setlength(x, yy, xx);
  writeln('Введите матрицу, содержащую нулевой элемент:');
  writeln(xx * yy, ' чисел через пробел или <Enter>, например, ', yy, ' строк по ', xx, ' чисел');
  dec(yy);
  dec(xx);
  for var i := 0 to yy do
    for var j := 0 to xx do read(x[i, j]);
  readln
end;
 
procedure prn(s: string; const x: matrix; p, q: integer);
begin
  writeln(s);
  for var i := 0 to p do
    begin
      for var j := 0 to q do write(x[i, j]:10);
      writeln
    end
end;
 
procedure find_zero(const x: matrix; var iz, jz: integer; p, q: integer);
begin
  iz := -1;
  jz := -1;
  for var i := 0 to p do
    begin
      for var j := 0 to q do
        if x[i, j] = 0 then
          begin
            iz := i;
            jz := j;
            break
          end;
      if iz >= 0 then break
    end
end;
 
procedure zero(var x: matrix; iz, jz: integer; p, q: integer);
begin
  for var i := 0 to p do
    for var j := 0 to q do
      if (iz < jz) and not odd(i) or (iz >= jz) and not odd(j)
        then x[i, j] := 0
end;
 
var
  m: matrix;
  izero, jzero, p, q: integer;
 
begin
  inp(m, p, q);
  prn('Исходная матрица', m, p, q);
  find_zero(m, izero, jzero, p, q);
  if izero >= 0 then
    begin
      writeln('Координаты нулевого элемента: ', izero + 1, ', ', jzero + 1);
      zero(m, izero, jzero, p, q);
      print('Преобразованная матрица:', m)
    end
  else writeln('Матрица не содержит нулевого элемента')
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2019, 00:29
Помогаю со студенческими работами здесь

В матрице M(6,6) определить координаты единственого нулевого элемента
Помогите решить задачу В матрице M(6,6) определить координаты единственого нулевого элемента.Если он располагается в верхней половине...

Поменять местами подмассивы, расположенные слева и справа от единственного нулевого элемента
В массиве целых чисел А есть один нулевой элемент. Поменять местами подмассивы, расположенные слева и справа от нулевого элемента. Кто...

В матрице найти количество строк не содержащих ни одного нулевого элемента
Вообще задание такое: дана целочисленная прямоугольная матрица и нужно найти 1)кол-во строк не содержащих ни одного нулевого элемента...

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

Найти произведение всех элементов массива, начиная с нулевого. Если нулевого элемента нет - вывести (-1)
В одномерном массиве, состоящем из n элементов найти: произведение всех элементов, начиная с нулевого. Если нулевого элемента нет –...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru