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

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

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

> Матрица
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

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


Помогите с задачкой
Вводится массив чисел MxM.Найти максимальные элементы по солбцам и выевсти на экран их значения и местоположение.

Пример:
Вводим массив размером 4x4

3 4 6 4
6 2 5 3
5 6 2 7
9 1 8 5

Ответ:
Столбец 1
max 9 в строке 4
Столбец 2
max 6 в строке 3
Столбец 3
max 8 в строке 4
Столбец 4
max 7 в строке 3

Вот коешто написал.Но этот код находит только максимальное значение из всего массива.

Код

var
   A:array[1..100,1..100] of integer;
   n,i,j:integer;
begin
  writeln('vv razmer massiva');
  readln(n);
  for i:=1 to n do
    writeln('vvodite',n,'chisel');
    for i:=1 to n do begin
      for j:=1 to n do begin
        Write('...');
        Readln(a[i,j]);
      end;
    end;
function max(A:array of array of integer):pair;
i,j:byte; maxi,maxj:byte; result:pair;
begin
  maxi:=1;
  maxj:=1;
  for i:=2 to N do
  for j:=2 to N do
    if A[i,j]>A[maxi,maxj] then begin maxi:=i; maxj:=j; end;
  result.i:=maxi;
  result.j:=maxj;
  max:=result;
  writeln(result)
end;
end.


Как находить максимальный элемент по каждому столбцу?И как опеределить местоположение элемента?

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


Гость






fly, эта программа у тебя в TP откомпилируется, на при запуске ты получишь Stack Overflow... Смотри:

function max(A:MyMas):integer;
- здесь ты пытаешься передать массив размером 100*100*2 байта (каждый Integer) = 20000 байт... Размер стека по умолчанию - 16К... Получаешь переполнение... Так что либо уменьшай размерности массива, либо передавай массив не по значению (как ты его передаешь сейчас), а по ссылке:

function max(var A:MyMas):integer;
Вот так все содержимое массива в стек не копируется, вместо этого в функцию передается указатель на массив (4 байта), с которым она и работает...

Кроме этого, есть еще как минимум одна ошибка - я уже говорил неоднократно, но эта ошибка возвращается вновь и вновь: никогда не описывай счетчики циклов где-то снаружи, как глобальные переменные... Описание счетчиков цикла должно быть КАК МОЖНО ближе к месту использования этого счетчика... Если это функция - то локально, в функции, если вложенная функция - то именно во вложенной, а не в материнской функции... Этим ты сильно облегчишь себе работу при отладке...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
fly   Матрица   6.05.2007 3:02
volvo   Этот код в Турбо-Паскале даже не откомпилируется..…   6.05.2007 3:25
Tan   Вопрос, который вытекает из коммента volvo : fly, …   6.05.2007 3:31
volvo   А это без разницы... Нарушена структура программы …   6.05.2007 3:37
Tan   Из этой фразы я сделал вывод, что автор запустил …   6.05.2007 3:44
fly   Да,вы правы,прога даже не компилится.Ступил я немн…   6.05.2007 20:39
Tan   Типа pair изначально не существует (если ты его не…   6.05.2007 20:52
fly   Типа pair изначально не существует (если ты его н…   6.05.2007 21:19
volvo   Потому что конструировать тип ВНУТРИ описания заго…   6.05.2007 21:03
Tan   Для начала тебе надо понять, какое результирующую …   6.05.2007 21:28
fly   Я так понял шапка программы будет выглядеть следую…   6.05.2007 22:05
Tan   смотри пост вольво, создай свой тип MyMas = array …   6.05.2007 22:12
fly   var MyMas:array[1..100,1..100] of integer; …   6.05.2007 23:27
Tan   Потому что ты не выполнил указание, надо создать с…   6.05.2007 23:30
volvo   #86 - не из-за этого... Из-за того, что нет слова …   6.05.2007 23:37
fly   Можешь объяснить для чего ты добавил вот эту строк…   6.05.2007 23:37
Tan   Просто объявил массив со своим типом. [b]Добавлен…   6.05.2007 23:40
fly   Ясно. С шапкой разобрались...Програмим дальше... Я…   6.05.2007 23:59
volvo   fly, эта программа у тебя в TP откомпилируется, на…   7.05.2007 0:25
fly   Ты имеешь ввиду счётчики циклов maxi,maxj" ? …   7.05.2007 16:01
volvo   Я говорил не про maxi и maxj, а про i и j... У теб…   7.05.2007 16:23
fly   от что у меня получилось.Ошибки есть? Type MyM…   7.05.2007 16:59
fly   С задачей разобрался) Спасибо всем за помощь) Особ…   7.05.2007 21:01


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

 





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