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

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

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

> Задача про матрицу
сообщение
Сообщение #1


Новичок
*

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

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


Вот как звучит задача:

Ввести числовую прямоугольную матрицу размером M×N (M и N заданы). Определить элементы, которые, являясь максимальными в столбцах, больше всех своих соседей слева в строке и меньше всех своих соседей справа в строке, указав значения найденных элементов и их индексы, или же сообщить, что таких элементов нет. Крайние столбцы не рассматривать.

Начала делать, но что то не работает толком...помогите пожалуйста


Program Matrix;
const stroka='';
stolb=''; {Ввод констант}
var a:array [1..100,1..100] of integer;
im,jm,i,j,max,n,m,max1:integer;

procedure maxinstolb;{Процедура нахождения максимального элемента в каждом столбце}
begin
for j:=2 to (m-1) do begin
max:=a[1,j];
im:=1; jm:=j;
for i:=1 to n do
if a[i,j]>max then begin
max:=a[i,j];
im:=i;
jm:=j;
end;
end;
end;

procedure maxelement; ;{Процедура проверки условия: максимальный элемент больше всех соседей слева и меньше всех соседей справа }
begin
i:=im;
for j:=1 to (jm-1) do begin
if a[i,j]<max then max1:=max;
end;
for j:=(jm+1) to m do begin
if a[i,j]>max1 then writeln(max,' [',im,';',jm,']')
else writeln('Ne suschestvuet');
end;
end;

begin
writeln(stroka,'Vvedite kol-vo strok matrici');
readln(n);
writeln(stolb,'Vvedite kol-vo stolbcov matrici');
readln(m);
writeln;
writeln('Vvedite ',m*n,' elementa massiva:');
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);

writeln('Ishodnaya matrica');
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;

writeln('Max element boshe vseh sosedey sleva, no menshe vseh sosedey sprava');
maxinstolb;
maxelement;
end.


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


Гость






Цитата
Если кратко, то главные замечания: вы запутались с индексами (у меня столбцы на первом месте, а не на втором)
Кто-кто запутался с индексами? Может, ты сам?

Цитата
     writeln('Vvedite kol-vo strok matrici');
readln(n);
writeln('Vvedite kol-vo stolbcov matrici');
readln(m);
writeln;
writeln('Vvedite ',m*n,' elementa massiva:');
for i:=1 to n do
for j:=1 to m do
read(A[j,i]);
И как после этого будет представлена вот такая, например, матрица:
1 2 5 6
1 2 3 4
? Что вводим? Число строк = 2, так? Так... N = 2, запишем. Столбцов - 4, значит, M = 4, тоже запишем.. А теперь:

Цитата
for i := 1 to 2 do
for j := 1 to 4 do
read(a[j, i]);
- данные читаются в таком порядке:
i = 1; j = 1 .. 4 => A[1, 1], A[2, 1], A[3, 1], A[4, 1]
i = 2; j = 1 .. 4 => A[1, 2], A[2, 2], A[3, 2], A[4, 2]
Сорри, но по определению, у матрицы в Паскале ПЕРВЫМ индексом указывается номер строки, а вторым - номер столбца (это не зависит от твоего желания, так устроен язык программирования, и с этим придется мириться, это - НЕ Фортран, это - Паскаль, а за нарушение этого правила без ОЧЕНЬ веских причин у нас программиста просто увольняют без предупреждений, поскольку прежде всего код должен быть понятен интуитивно), то есть ввел ты матрицу не так, как я написал выше, а вот так:
1 1
2 2
5 3
6 4
. Ну, и что это должно означать? Кто запутался? И какой результат я должен получить после всего этого "преобразования"? А как я должен объяснять логику работы программы, если она ПЕРЕВЕРНУТА с ног на голову?
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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