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

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

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

 
 Ответить  Открыть новую тему 
> Процедуры и функции
сообщение
Сообщение #1


Гость






Помогите, пожалуйста, решить задачу : Определить функцию, определяющую максимальный элемент массива и использовать ее для определения максимального элемента матрицы.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


Цитата
Помогите, пожалуйста, решить задачу
А в чем проблема? Как найти макс элемент-смотри в FAQ'е
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






В смысле, как связать максимальный элемент массива и матрицы.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Сперва надо разобраться, что такое массив, и что такое матрица.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Допустим, что массив - структура данных array, а матрица - двумерный массив со значениями i и j.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Т.е. массив может иметь роизвольную размерность, а матрица - только 2?
Или имеются в виду только лдномерные массивы (разница в том, как передавать параметры в функцию)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






andriano как всегда - в своем репертуаре dry.gif

Автору: все просто:

type
vector = array[0 .. n - 1] of integer;
matrix = array[0 .. m - 1] of vector;

function find_max(const arr: array of integer; const size: integer): integer;
var i, max: integer;
begin
max := arr[0];
for i := 1 to pred(size) do
if max < arr[i] then max := arr[i];
find_max := max;
end;

Вызвать-то сам сумеешь?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

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

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


Цитата
В смысле, как связать максимальный элемент массива и матрицы.

Смотри, одномерный массив выглядит, например, так:
array[1..n] of integer

а двумерный, то бишь матрица, так
array[1 .. n, 1 .. n] of integer

что аналогично:
array[1 .. n] of array[1 .. n] of integer

т.е. матрица, грубо говоря, массив массивов..
Значит ты можешь написать ф-ию, которая находим максимум в одномерном массиве, а потом использовать ее по отдельности на каждой строке матрицы и из результатов выбрать максимальный..
Загляни сюда: Минимум среди максимумов матрицы, там реализовано тоже, только для поиска минимального значения среди максимальных значений каждой строки матрицы, тебе же нужен максимум из максимумов..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата(andriano @ 16.12.2007 18:04) *

Т.е. массив может иметь роизвольную размерность, а матрица - только 2?
Или имеются в виду только лдномерные массивы (разница в том, как передавать параметры в функцию)?

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Айра @ 16.12.2007 18:21) *
Значит ты можешь написать ф-ию, которая находим максимум в одномерном массиве, а потом использовать ее по отдельности на каждой строке матрицы и из результатов выбрать максимальный..
Это можно сделать и в один вызов. Примерно так:
type
IntArray = array[0..0]of integer;
const
m = 15;
n = 25;
var
matrix : array[0..n-1,0..m-1]of integer;

function find_max(var arr: array of integer; const size: integer): integer;
begin
...
end;

begin
...
find_max(IntArray(matrix[0,0]), m*n);


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


Профи
****

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

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


Цитата
Это можно сделать и в один вызов. Примерно так:

А можешь привести полный вариант, а то я чет не понимаю? rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Оля, это ж обычный TypeCast - приведение двумерной матрицы к одномерному массиву:

const
n = 5;
m = 4;
type
vector = array[1 .. m] of integer;
matrix = array[1 .. n] of vector;

IntArr = array[1 .. 1] of integer;

function find_max(const arr: array of integer; const size: integer): integer;
var i, max: integer;
begin
max := arr[0];
for i := 1 to pred(size) do
if max < arr[i] then max := arr[i];
find_max := max;
end;


var
a: matrix;
i, j: integer;

begin
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(find_max(IntArr(a[1, 1]), m*n));
end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

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

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


Цитата
это ж обычный TypeCast

smile.gif volvo, я ж еще только учусь)) (у нас в универе даже практики по строкам еще не было blink.gif ) а с такой записью:
IntArr = array[1 .. 1] of integer;
я сталкнулась впервые, и было непонятно, как работать с ней дальше.. Спасибо за полный код, буду разбираться)))

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


Гость






Цитата(volvo @ 17.12.2007 0:45) *

Оля, это ж обычный TypeCast - приведение двумерной матрицы к одномерному массиву:

const
n = 5;
m = 4;
type
vector = array[1 .. m] of integer;
matrix = array[1 .. n] of vector;

IntArr = array[1 .. 1] of integer;

function find_max(const arr: array of integer; const size: integer): integer;
var i, max: integer;
begin
max := arr[0];
for i := 1 to pred(size) do
if max < arr[i] then max := arr[i];
find_max := max;
end;
var
a: matrix;
i, j: integer;

begin
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(find_max(IntArr(a[1, 1]), m*n));
end.



Я это решение проверил в Паскале, вроде всё работает. Так это и есть правильное решение? java script:emoticon(':cool:', 'smid_4')
Примечание: гость 'Гость' = гость 'DISQUE'.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Айра @ 17.12.2007 3:06) *

smile.gif volvo, я ж еще только учусь)) (у нас в универе даже практики по строкам еще не было blink.gif ) а с такой записью:
IntArr = array[1 .. 1] of integer;
я сталкнулась впервые, и было непонятно, как работать с ней дальше.. Спасибо за полный код, буду разбираться)))

Смотри в доках по "опредеяемые пользователем типы данных" или "user defined".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Всё-таки это и есть решение?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Профи
****

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

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


Цитата(DISQUE @ 18.12.2007 21:30) *

Всё-таки это и есть решение?

Что ты как маленький ? Решение это или нет зависит только от того сможешь ли ты объяснить его при необходимости преподавателю. Если работает правильно, то это уже решение. Не может быть одной однозначно правильной реализации задачи, правильных решений может быть бесконечно много.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Цитата(Malice @ 18.12.2007 21:37) *

Что ты как маленький ? Решение это или нет зависит только от того сможешь ли ты объяснить его при необходимости преподавателю. Если работает правильно, то это уже решение. Не может быть одной однозначно правильной реализации задачи, правильных решений может быть бесконечно много.

Я ничего такого не сделал. Просто хотел уточнить.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Огромное спасибо всем! Всё работает! good.gif
 К началу страницы 
+ Ответить 

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

 





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