IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> строки&столбцы в матрице(?), найти самый большой элемент/ найти строку и столб, на пересечении кото
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: nadja

Репутация: -  0  +


Привет!Жду помощи профессионалов в этом довольно сложном для меня вопросе.
Условия задачи:Составить программу, которая в двумерном массиве находит самое большое значение и элементы строки и столбца, на пересечении которых он стоит, делает нулевыми.
Вот код. В нем я нашла мах элемент, и запомнила номер столбца и строчки где он находится(с последующим выводом на экран).
Program max_str;
Uses crt;
Const
m=5;
n=6;
var i,j:byte;
a: array [1..m, 1..n] of integer;
max,u,t: integer;
begin
clrscr;
randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
writeln (' массив:');
max:=a[1,1];

for i:=1 to m do
begin
for j:=1 to n do
begin
if a[i,j]>max then begin
max:=a[i,j];
u:=i;
t:=j;
end;
end;
end;
write (max:4,' ',u ,' ' ,t,' ' );
readln;
end.




Как видите я НЕ смогла понять как обнулить все элементы на пересечении. Подскажите,пожалуйста, как это сделать.Надеюсь ошибок в сообщении не допустила.Жду помощи!

Вот как это должно выглядеть(вдруг я условие задачи изложила не понятно).==========>

Сообщение отредактировано: nadja yak -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
В нем я нашла мах элемент, и запомнила номер столбца и строчки где он находится
Если элемент с индексами [1, 1] будет максимальным, то номер столбца/строки будет найден неверно. Присвой u, t значение 1 перед циклом, а не 0, который присваивается автоматически.

А по поводу как обнулить - очень просто:
for i := 1 to m do a[i, t] := 0;
for j := 1 to n do a[u, j] := 0;


Цитата
Вот как это должно выглядеть
Почему только перед макс. элементом (выше и левее)? А что с остальными в той же строке/столбце, но ниже/правее? У тебя точно задание звучит именно так, как ты его привела?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: nadja

Репутация: -  0  +


Тточно!! я сама не так поняла задачу! Спасибо огромное!

Добавлено через 7 мин.
что то у меня не получается(
хотя я сделала как Вы сказали. что выводить после цикла for что получилась новая матрица после исходной?
у меня всё это идет таблицей но почему то не правильной((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






program max_str;
const
m = 5;
n = 6;

var
i, j : byte;
a : array [1..m, 1..n] of integer;
u, t : integer;

begin
randomize;
writeln('before:');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;

u := 1; t := 1;
for i:=1 to m do
begin
for j:=1 to n do
if a[i, j] > a[u, t] then
begin
u := i; t := j;
end;
end;

{ Нашли строку и столбец, где находится максимум. Выводим... }
writeln;
writeln ('max : ', a[u, t]:4, u:4, t:4);

{ Меняем содержимое строки и столбца на нули }
for i := 1 to m do a[i, t] := 0;
for j := 1 to n do a[u, j] := 0;

{ Выводим итоговый результат: }
writeln ('after:');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;

readln;
end.


before:
76 11 24 56 28 77
77 28 42 56 85 43
29 56 15 8 95 68
20 84 63 8 27 84
20 89 94 0 8 26

max : 95 3 5
after:
76 11 24 56 0 77
77 28 42 56 0 43
0 0 0 0 0 0
20 84 63 8 0 84
20 89 94 0 0 26

Вроде выводит, как положено.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: nadja

Репутация: -  0  +


ой!!volvo! вы не раз уже спасаете!
Я наверно бы никогда не догадалась поставить такое условие if a[i, j] > a[u, t] then


Добавлено через 17 мин.
volvo!
а как сделать чтоб число мах НЕ затиралось тоже нулем??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Вот так попробуй изменить циклы:
   for i := 1 to m do if i <> u then a[i, t] := 0;
for j := 1 to n do if j <> t then a[u, j] := 0;
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 22:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name