|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.09.2010, 14:45 | #1 |
Регистрация: 25.09.2010
Сообщений: 5
|
Pascal/ Найти сумму максимальных элементов 3ех массивов.
Ввод массивов реализовать с помощью процедуры, нахождение максимального элемента массива с помощью функции.
program Project2; {$APPTYPE CONSOLE} uses SysUtils; type mas=array[1..10] of Byte; var A,B,C:mas; y:Integer; i,m,n,k:Byte; procedure vvod(l:Byte;D:mas); var i:byte; begin Writeln('vv dlinu massiva'); Readln(l); Writeln('vv massiv'); for i:=1 to l do readln(D[i]); end; function max(l:Byte;D:mas):Byte; var i:Byte; mx:Byte; begin mx:=D[1]; for i:=2 to l do if D[i]>mx then mx:=D[i]; max:=mx; Writeln('mx=',mx); end; begin //vvod(m,A); Writeln('vv dlinu massiva'); Readln(m); Writeln('vv massiv'); for i:=1 to m do readln(A[i]); vvod(n,B); vvod(k,C); y:=max(m,A)+max(n,B)+max(k,C); Writeln('y=',y); Readln; end. При ручном вводе массива нормально находится его максимальный элемент, а при вводе через процедуру нет. Помогите, пожалуйста, найти, в чем я ошибся. |
25.09.2010, 15:20 | #2 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
В процедуре ввода массива объяви массив как параметр-переменную, т.е. Var D:mas
Перемешивай дело с бездельем и не сойдешь с ума...
|
25.09.2010, 15:39 | #3 |
Регистрация: 25.09.2010
Сообщений: 5
|
А как именно?
Если пробую так: procedure vvod(l:Byte;D:mas); var D:mas; i:byte; то получается повторное объявление, а если так: procedure vvod(l:Byte); var D:mas; i:byte; то выдает ошибку при обращении к процедуре. |
25.09.2010, 15:51 | #4 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
Вот это
Код:
Код:
Перемешивай дело с бездельем и не сойдешь с ума...
|
25.09.2010, 15:53 | #5 |
Регистрация: 25.09.2010
Сообщений: 5
|
Теперь работает, спасибо.
|
26.09.2010, 13:27 | #6 |
Регистрация: 25.09.2010
Сообщений: 5
|
В продолжение к этой задаче: теперь нужно поместить функцию и процедуру в модуль, а вызывать их из главной программы. По идее должно быть как-то так:
UNIT vvod; INTERFACE type mas=array[1..10] of Byte; procedure vv(var l:Byte;var D:mas); function max(l:Byte;D:mas):Byte; IMPLEMENTATION procedure vv; var i:byte; begin Writeln('vipolnenie proceduri'); Writeln('vv dlinu massiva'); Readln(l); Writeln('vv massiv'); for i:=1 to l do readln(D[i]); end; function max; var i:Byte; mx:Byte; begin Writeln('vipolnenie funkcii'); for i:=1 to l do write(' ',D[i]); mx:=D[1]; for i:=1 to l do if D[i]>mx then mx:=D[i]; max:=mx; Writeln(' mx=',mx); end; BEGIN END. Но, очевидно, я опять делаю что-то не так и при обращении в главной программе: program Project2; {$APPTYPE CONSOLE} uses vvod; type mas=array[1..10] of Byte; var A,B,C:mas; y:Integer; m,n,k:Byte; begin vv(m,A); vv(n,B); vv(k,C); y:=max(m,A)+max(n,B)+max(k,C); Writeln('y=',y); Readln; end. выдает ошибки. Если кто-то может, помогите, пожалуйста, разобраться. |
26.09.2010, 14:37 | #7 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 225
|
какие ошибки расскажи
модуль нормально компилируется?
За помощь: Нажмите на весы слева от сообщения!
|
26.09.2010, 14:43 | #8 |
Регистрация: 25.09.2010
Сообщений: 5
|
Модуль компилируется нормально. При обращении к процедуре ввода выдает: "Types of actual and formal var parameters must be identical", а при обращении к функции нахождения макс элемента: "Incompatible types 'vvod.mas' and 'Project2.mas'".
|
26.09.2010, 17:30 | #9 |
Пользователь
Регистрация: 24.09.2010
Сообщений: 46
|
У вас происходит несоответсвие типов между модулем и главной прогой. Видимо, где-то не правильно указаны типы параметров(в модуле или в главной проге) или передача параметров не верно работает, поэтому один тип не состыкуется с другим.
"...Before you accuse me take a look at yourself..."
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Pascal] найти сумму элементов лежащих ниже побочной диагонали | Рамик | Помощь студентам | 12 | 28.03.2011 22:53 |
Pascal - Найти сумму всех ее отрицательных элементов и заменить ею все диагональные элементы этой матрицы | NewBi | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 24.04.2010 09:15 |
Паскаль-Найти сумму максимальных элементов строк матрицы | tanyhaftv | Помощь студентам | 9 | 24.03.2010 16:03 |
В матрице упорядочить строки по возрастанию максимальных элементов. Помогите найти ошибку. | amerhant | Помощь студентам | 3 | 16.01.2010 19:39 |
Сумма максимальных элементов матриц в Pascal | Бармалей | Помощь студентам | 19 | 19.11.2009 15:59 |