![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Batia |
![]()
Сообщение
#1
|
Гость ![]() |
Задача такая:
**На основе матрицы A(4 строки, 5 столбцов) сформировать одномерный массив B из 5 элэментов. Каждий элемент Bk этого массива получает значение, равное полусумме ззначений наибольшего и наименьшего элементов в k-м столбце матрицы A. Для вычисления полусуммы значений наибольшего и наименьшего элементов в произвольном столбцематрицы использовать процедуру.** Никак не могу ее решить, а препод. что-либо объяснять отказывается. Помогите, если сможете. |
APAL |
![]()
Сообщение
#2
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
А что уже пытался сделать? выкладывай...
-------------------- |
Batia |
![]()
Сообщение
#3
|
Гость ![]() |
:
program Project2; А вот по поводу процедуры почти никаких идей! Сообщение отредактировано: Altair - 27.11.2005 17:32 |
APAL |
![]()
Сообщение
#4
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Цитата type m=array[1..100,1..100] of integer; mas=array[1..100] of integer; var A:m; Что то я не понял: по условию матрица 4x5, а в приведенном примере массив 100x100 Цитата uses SysUtils; А что используется из этого модуля? Цитата procedure vvod(m,n:integer;var x:m);{ввел} var i,j: integer; begin writeln('введите матрицу'); Здесь главное чтобы сам не напутал с именем переменной и именем типа... Цитата А вот по поводу процедуры почти никаких идей! Даю идею: читаем условие - "Для вычисления полусуммы значений наибольшего и наименьшего элементов в произвольном столбцематрицы использовать процедуру". Отсюда следует, что можно создать процедуру в которую будет передаваться массив и индекс столбца (можно и без передачи массива, а работать только с индексом, обращаясь к самому исходному массиву, но на этом теряется универсальность процедуры, т.е. ее так просто не перенесешь в другую программу), а возвращать будет уже результат полусуммы. Заголовок может например выглядить так:
-------------------- |
Batia |
![]()
Сообщение
#5
|
Гость ![]() |
За идею конечно спасибо, но вопросов, к сожалению, меньше не стало.
Например: ii -это индекс? mout - это массив? Да и вообще, в это этой истории много всего непонятного: что такое полусумма, еще можно понять, наибольший и наиаменьший элементы должны находиться как-то так: min:=A[1,1]; max:=A[1,1]; for i=1 to n do for j=1 to m do if A[i,j]<min then min:=A[i,j]; {о необходимости begin-ов и end-ов, с сожалению, ничего не знаю} if A[i,j]>max then max:=A[i,j]; Но больше всего меня смущает фраза: " Каждый Bk-ый элемент... получает значение..... k-м столбце матрицы A" Что это означает в переводе на русский? И еще один вопрос, за чем находить и передовать индекс, если полусумма это простое число. Надеюсь, что в моих рассуднениях можно проследить логику, и они не очень далеки от правды. |
APAL |
![]()
Сообщение
#6
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Цитата ii -это индекс? mout - это массив? Да, ii - это индекс столбца mOut - смотри "Real", т.е. вещественное число, т.е. это и будет возвращаться процедурой как полусумма. Цитата что такое полусумма, еще можно понять, наибольший и наиаменьший элементы должны находиться как-то так: min:=A[1,1]; max:=A[1,1]; for i=1 to n do for j=1 to m do if A[i,j]<min then min:=A[i,j]; {о необходимости begin-ов и end-ов, с сожалению, ничего не знаю} if A[i,j]>max then max:=A[i,j]; Не совсем так, полусумму нужно найти среди мин. и макс. элементов в определенной столбце (ii - индекс, который и передает в процедуру этот самый номер столбца), а у тебя ищется по всему массиву.
Цитата Но больше всего меня смущает фраза: " Каждый Bk-ый элемент... получает значение..... k-м столбце матрицы A" Что это означает в переводе на русский? см. выше приведенный код, может станет понятнее. Цитата И еще один вопрос, за чем находить и передовать индекс, если полусумма это простое число. Мы передаем индекс (номер столбца) в процедуру, для того, чтобы она знала с каким именно столбцом ей работать. -------------------- |
Batia |
![]()
Сообщение
#7
|
Гость ![]() |
Теперь нужно сформировать массив, процедура возвращает нам число {полусумму}, зачит надо вызвать ее 5 раз и записать значения в B:
PolSum(A;??;mOut); B[1]:=mOut; PolSum(A;??;mOut); B[2]:=mOut;... Проделав эту операцию 5 раз, массив должен сформироваться, и его надо вывести процедурой, которую я уже приводил. Так ли это, можно ли сделать это проще, и какой индекс столбца нужно писать при обращении, в данном случае. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата можно ли сделать это проще For i := 1 to 5 do begin P.S. Если использовать функцию PolSum вместо процедуры, будет еще проще... |
APAL |
![]()
Сообщение
#9
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
To: volvo
У него в условии написано "процедуру", а с функцией конечно покрасивше было бы. -------------------- |
Batia |
![]()
Сообщение
#10
|
Гость ![]() |
Попытался собрать все воедино, но возникает много ошибок, не знаю как их исправить, помогите пожалуйста.
program Project2; Сообщение отредактировано: volvo - 1.12.2005 16:47 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Batia, все (ну, почти все) нормально сделано... Есть 2 основные ошибки:
1) не описываешь переменные, которые используются Procedure PolSum(m : tM;ii : Byte;Var mOut : Real); и эти переменные - глобально: type 2) Количество и порядок следования параметров в описании процедуры и при ее вызове НЕ должны меняться... А у тебя - меняются... Основная часть должна быть такой: ... |
Batia |
![]()
Сообщение
#12
|
|||
Гость ![]() |
Все исправил, ошибок нет, но после токо как введешь матрицу, происходит выход из программы:
program Project4;
|
|||
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Ну, телепатов тут нет, какие значения ты вводил нам неизвестно. На моих - нормально отработало (только вот Read в процедуре ввода мешает... Замени его на ReadLn и вводи число за числом, после каждого - Enter, иначе ты просто не увидишь результата...)
|
![]() ![]() |
![]() |
Текстовая версия | 8.08.2025 7:29 |