27.05.2011, 19:25 | #1 (permalink) |
Новичок
Регистрация: 22.05.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Подскажите, чего не хватает в процедуре?
program RAbota; const N=3; type worker=record; Name: String [30]; Salary:Integer; Podrazdel: String [50]; Number: String [2]; end; var Org : array [1..N] of worker; i,Min:Integer; procedure Vvod (var S:Worker); begin writeln ('Введите ФИО'); readln (S.Name); writeln ('№ подразделения'); readln (S.Podrazdel); writeln ('Введите личный №'); readln (S.Number); writeln ('Введите размер оклада'); readln (S.Salary); end; Procedure Vivod (S:Worker); begin writeln (S.Name, ':', S.Podrazdel, ':', S. Number, ':', S.Salary); end; procedure Abc(Org:Worker); begin Min:=Org. for i:=1 to N do if S.Salary<Min then Min:=S.Salary; writeln ('Минимальная зарплата =', Min); end; begin For i:=1 to N do Vvod (Org[i]); for i:=1 to N do vivod (Org[i]); Abc (Worker[i]) end. |
27.05.2011, 19:25 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посоветую уделить немного времени прочтению схожих постов Подскажите, для чего нужен сетевой разветвитель? Подскажите, для чего это? Совместимо ли это железо и чего не хватает? Подскажите, пожалуйста, с чего начать Подскажите, для чего это схема? |
27.05.2011, 21:17 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ошибок - просто море.
1. Параметру процедуры Abc Вы зачем-то присваиваете имя глобальной переменной Org. Зачем? 2. В то же время внутри процедуры Вы пытаетесь манипулировать с переменной-записью S, для данной процедуры вовсе не определенной. 3. Изначальное значение переменной Min в виде Org. (и никакого поля!!!) - полнейшая нелепость. 4. В теле основной программы запись вида Abc (Worker[i]) - тоже нечто невразумительное. Если по замыслу обращение к процедуре Abc входит в цикл по i, то: а) процедуры vivod и Abc, составляющие тело цикла, должны быть заключены в операторные скобки begin end. Но этого не сделано. б) Применение того же глобального счетчика (i) без переопределения в теле процедуры абсолютно недопустимо. Если же обращение Abc (Worker[i]) НЕ входит в глобальный цикл, то что тогда там такое i и зачем оно? В общем так. Я бы это организовал как-нибудь в таком роде: Код:
procedure Abc; var j:Integer; begin Min:=Org[1].Salary; for j:=2 to N do with Org[j] do if Salary<Min then Min:=Salary; writeln ('Минимальная зарплата = ', Min); end; begin For i:=1 to N do Vvod (Org[i]); for i:=1 to N do vivod (Org[i]); Abc; Readln end. |
27.05.2011, 21:48 | #3 (permalink) |
Новичок
Регистрация: 22.05.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо за помощь, но вы меня не совсем так поняли) в процедуре Abc имена параметру процедуры и прочил состовляющих я поставил от балды, тк отчался найти рабочую их комбинацию...
А за столь подробные обьяснения большое спасибо |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|