![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
футбик |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
помогите разобраться пожалуйста
необходимо разделить элементы каждой строки матрицы на максимальный элемент этой строки Оформить как подпрограммы: 1. ввод двумерного массива 2. алгоритм обработки массива 3. Вывод двумерного массива на экран Все процедуры должны иметь параметры. type matrix=array[1..7,1..7] of real; |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата //обработка массива не идет Идет, только из вызывающей программы этого не видно: содержимое массива передается в Go по значению, и меняется его локальная копия, а надо передавать по ссылке (var-параметр)... И вызывать надо
Go(a);Ты же это сделал в процедуре output, значит, знаешь об этом... (кстати, в output можно var заменить на const, тебе же не надо менять значения массива при выводе?) |
футбик |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
при выводе массив менять не надо, а
Procedure goвсеровно работает не правильно, точнее вообще ни как, массив на входе и на выходе одинаковый. Это правильно?: Procedure go ( var a:matrix); эта процедура должна разделять элементы каждой строки матрицы на максимальный элемент этой строки. спасибо |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Хм... Скажи спасибо, что программа не вылетает вообще. Смотри, что ты делаешь:
Procedure go (var a:matrix); А теперь - что надо делать: Procedure Go(var a: matrix); Как результат - избавляешься от лишнего массива в процедуре. |
футбик |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
я прошу прощения, но получается не совсем как хочется
![]() Procedure go (var a:matrix); выводит входной массив, подскажите пожалуйста |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата получается не совсем как хочется Вот... А теперь - начинается самое интересное ![]() Ты знаешь, что выведет вот эта программа: var n: integer; ? Даже не думай, что 10... Локальная переменная (N, описанная в процедуре) "заслоняет" собой глобальную, и все обращения к N внутри процедуры однозначно трактуются компилятором, как работа с ЛОКАЛЬНОЙ переменной... А содержимое ее совсем не равно содержимому глобальной N, описанной в первой строке программы... У тебя то же самое... Убери из списка переменных, описанных в процедуре Go, эти самые N и M, и все заработает... И (на будущее) отлаживай программы в режиме "контроля границ" (Options -> Compiler -> установить галку на Range Checking), тогда ты бы сразу увидел, что у тебя происходит вылет за границу массива, и стало бы понятно, куда копать... |
футбик |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
заработала
![]() |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 10:15 |