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

Задача по матрице

03.04.2009, 20:41. Показов 1500. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди помогите решить пожалуйста задачу на Delphi.

Задача: Заменить нулями эл-ты матрицы, стоящие на пересечении строк и столбцов, в которых имеется хотя бы по одному нулю.

Пример:
1. Дана матрица:

1 2 0
0 5 6
7 8 9

В матрице в первой строке и в первом столбце есть по одному нулю и разумеется во второй строке и в 3 столбце есть нули.

Заменим нулями эл-ты матрицы, стоящие на пересечении этих строк и столбцов, т.е. "1" и "6" заменяем на нули.

Должно получится:

0 2 0
0 5 0
7 8 9
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2009, 20:41
Ответы с готовыми решениями:

Задача на нахождение суммы элементов столбцов в матрице по условию
Условие: Если столбец к прямоугольной матрицы имеет минимальную сумму элементов, определить сумму элементов столбцов до к-ого столбца,...

Задача на матрицы. Посчитать отрезки времени, за которые будут пройдены участки, если в матрице заданы скорость и длина участка
Дана матрица А с 2 строками и 10 столбцами, которая содержит данные о движении поезда на отдельных участках дистанции: 1-й элемент каждого...

Задача на Двухмерный массив . ! В исходной матрице заменить элементы главной диагонали на единицу
Дан массив из 64 последовательных элементов {a1, a2,…, a64}. Для вычисления элементов массива используется формула ai = a0 + i*h,...

13
 Аватар для yanyk1n
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
03.04.2009, 20:54
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
program sort;
uses crt;
const col=4;row=4;
type mm=array[1..50,1..50]of integer;
var i,j:integer;
    m:mm;
 
function ZeroInCol(m:mm; n:integer):boolean;
var i:integer;
    f:boolean;
 
begin
 f:=false;
 for i:=1 to row do
 if m[i,n]=0 then
 begin
  f:=true;
  break;
 end;
 ZeroInCol:=f;
end;
 
function ZeroInRow(m:mm; n:integer):boolean;
var i:integer;
    f:boolean;
 
begin
 f:=false;
 for i:=1 to col do
 if m[n,i]=0 then
 begin
  f:=true;
  break;
 end;
 ZeroInRow:=f;
end;
 
begin
 clrscr;
 randomize;
 
 for i:=1 to row do
 for j:=1 to col do
 m[i,j]:=random(10);
 
 
 writeln('Massiv do:');
 for i:=1 to row do
 begin
  writeln;
  for j:=1 to col do write(m[i,j]:2,' ');
 end;
 writeln;
 for i:=1 to row do
 for j:=1 to col do if ZeroInCol(m,j) and ZeroInRow(m,i) then m[i,j]:=0;
 
 writeln('Massiv posle:');
 for i:=1 to row do
 begin
  writeln;
  for j:=1 to col do write(m[i,j]:2,' ');
 end;
 readln;
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.04.2009, 21:09
const col=4;row=4;
type mm=array[1..50,1..50]of integer;
Какой смысл писать 1..50?
Раз есть константы, надо писать
const col=4;row=4;//зачем 2 константы одного размера?
type mm=array[1..row,1..col]of integer;
0
0 / 0 / 0
Регистрация: 03.04.2009
Сообщений: 4
03.04.2009, 21:12  [ТС]
Что то несовсем понятно. Спаскалем нелажу я. На делфи можешь написать?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.04.2009, 21:13
На делфи можешь написать?
И думаешь код на Делфи будет сильно отличаться?
0
 Аватар для yanyk1n
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
03.04.2009, 21:15
Цитата Сообщение от Puporev Посмотреть сообщение
type mm=array[1..row,1..col]of integer
С этим я прав, не спорю, просто делал программу на основе уже сделанной и забыл немного...)
А насчёт констат не ошибся. Вдруг надо матрицу с разными размерами? И для удобства сделал две константы, чтобы удобнее было отредактировать)
0
0 / 0 / 0
Регистрация: 03.04.2009
Сообщений: 4
03.04.2009, 21:22  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
И думаешь код на Делфи будет сильно отличаться?
Ну дак напиши плиз.., если он не так уж сильно и отличается.
0
 Аватар для yanyk1n
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
03.04.2009, 21:26
просто в делфи создаёшь консольное приложение, а дальше как в паскале
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
03.04.2009, 22:59
Цитата Сообщение от k1ry4 Посмотреть сообщение
Вдруг надо матрицу с разными размерами?
Для этого надо использовать динамическое распределение памяти, а не ставить степень матрицы в 50.
0
0 / 0 / 0
Регистрация: 03.04.2009
Сообщений: 4
03.04.2009, 23:44  [ТС]
А полегче варианта решения нету? Что-то совсем код очень тяжелый Мне половина непонятна А мне это все преподу обьеснять надо
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
03.04.2009, 23:58
Цитата Сообщение от dima853 Посмотреть сообщение
А полегче варианта решения нету?
Есть пооптимальней, я бы вот в этой строке:
Pascal
1
2
for i:=1 to row do
 for j:=1 to col do if ZeroInCol(m,j) and ZeroInRow(m,i) then m[i,j]:=0;
Написал бы Вот так
Pascal
1
2
3
4
5
  for i:=1 to row do
    for j:=1 to col do 
      if ZeroInRow(m,i) then 
        if  ZeroInCol(m,j) then
           m[i,j]:=0;
Мой способ будет работать немного быстрее, он не будет всегда пробегать по строке и по столбцу.
А на самом деле решение нормальное, самое такое "В лоб" как говорится...
И если Вам dima853 что-то не подходит, и Вы что-то не понимаете, так Вы и спрашивайте конкретнее, что Вам не нравится и что Вы не понимаете?
Программа простая, а это означает - что её можно понять всего лишь сесть и пошагово пройтись вместе с Pascal'em и листочком бумаги, может быть Вам и не хочется её понимать ?
0
 Аватар для yanyk1n
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
04.04.2009, 07:20
И ещё - лучше в таком случае сначала выучить pascal, а уж затем переходить к длефи. Поверьте - я так и делал
0
57 / 57 / 36
Регистрация: 17.03.2009
Сообщений: 105
04.04.2009, 16:10
Более простое решение:
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
Program Zadacha;
uses crt;
const
 row = 4;
 col = 4;
 
var
 a:array[1..row,1..col] of integer;
 i,j,i1,j1:integer;
 
begin
 clrscr;
 randomize;
 writeln('Ishodnaya matrica:');
 for i:=1 to row do begin
    for j:=1 to col do begin
       a[i,j]:=random(10);
       write(a[i,j]:3);
    end;
    writeln;
 end;
 i1:=0; j1:=0;
 for i:=1 to row do begin
    for j:=1 to col do begin
       if a[i,j] = 0 then begin
     if i1>0 then begin
        a[i1,j]:=0;
        a[i,j1]:=0;
     end;
     i1:=i;
     j1:=j;
       end;
    end;
 end;
 writeln;
 writeln('Izmenenaya matrica:');
 for i:=1 to row do begin
    for j:=1 to col do begin
       write(a[i,j]:3);
    end;
    writeln;
 end;
 readkey;
end.
Данная программа заполняет 0 пересечение с предыдущим 0-ым элементом, а не со всеми 0-ми элементами.
Например:
если исходная
0 1 1
1 0 1
1 1 0
то получится
0 0 1
0 0 0
1 0 0
а не
0 0 0
0 0 0
0 0 0
0
 Аватар для yanyk1n
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
04.04.2009, 16:45
Доделанная программа, которая будет строить новый массив из старого(тогда из-за новых нулей возникли лишние нули в массиве) )

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
program sort;
uses crt;
const col=4;row=4;
type mm=array[1..row,1..col]of integer;
var i,j:integer;
    m,nn:mm;
 
function ZeroInCol(m:mm; n:integer):boolean; {проверяет есть ли в столбце нуль}
var i:integer;
    f:boolean;
 
begin
 f:=false;
 for i:=1 to row do
 if m[i,n]=0 then
 begin
  f:=true;
  break;
 end;
 ZeroInCol:=f;
end;
 
function ZeroInRow(m:mm; n:integer):boolean; {проверяет есть ли в строке нуль}
var i:integer;
    f:boolean;
 
begin
 f:=false;
 for i:=1 to col do
 if m[n,i]=0 then
 begin
  f:=true;
  break;
 end;
 ZeroInRow:=f;
end;
 
begin
 clrscr;
 randomize;
 
 for i:=1 to row do
 for j:=1 to col do
 m[i,j]:=random(10); {заполнение массива случайными числами от 0 до 9}
 
 
 writeln('Massiv do:');
 for i:=1 to row do
 begin
  writeln;
  for j:=1 to col do write(m[i,j]:2,' ');
 end;
 writeln;
 for i:=1 to row do {проверяем элемент, если столбец и строка содержат нуль то элемент нового массива будет равен нулю, иначе - остаётся}
 for j:=1 to col do if ZeroInCol(m,j) and ZeroInRow(m,i) then nn[i,j]:=0 else nn[i,j]:=m[i,j]; 
 
 writeln('Massiv posle:');
 for i:=1 to row do
 begin
  writeln;
  for j:=1 to col do write(nn[i,j]:2,' ');
 end;
 readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2009, 16:45
Помогаю со студенческими работами здесь

В матрице найти в каждой строке наибольший элемент, а потом среди них найти наименьший (задача минимакса)
помогите пожалуйста срочно надо , В матрице найти в каждой строке наибольший элемент, а потом среди них найти наименьший (задача минимакса).

У меня задача,в матрице,заменить первый отрицательный элемент максимальным элементом. Проходить по матрице слева направо,сверху вниз
У меня задача,в матрице,заменить первый отрицательный элемент максимальным элементом. Проходить по матрице слева направо,сверху вниз. Я...

Задача по матрице
Найти сумму элементов, стоящих ниже главной диагонали матрицы А(5,5). Как реализовать эту задачу в Лиспе? Помогите пожалуйста.

Задача по матрице
Срочно!!!Очень! Или выпихнут мну нафиг!!! Условие: Квадратная матрица размером NxN заполнена целыми числами из промежутка . Назовем...

Задача по матрице
Протестировать разработанную программу методом эквивалентного разбиения. Размерность матриц определяется пользователем. Максимальное число...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru