Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Подскажите, чего не хватает в процедуре? (http://www.tehnari.ru/f41/t52339/)

snakind 27.05.2011 19:25

Подскажите, чего не хватает в процедуре?
 
Последняя процедура должна выводить наименьшую зарплату. Что-то никак не пойму где в ней что прописать, подскажите пожалуйста. Остальное всё работает корректно. Выкладываю всё что бы проще разобраться было


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.

Vladimir_S 27.05.2011 21:17

Ошибок - просто море.
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.


snakind 27.05.2011 21:48

Спасибо за помощь, но вы меня не совсем так поняли) в процедуре Abc имена параметру процедуры и прочил состовляющих я поставил от балды, тк отчался найти рабочую их комбинацию...

А за столь подробные обьяснения большое спасибо:tehnari_ru_203:


Часовой пояс GMT +4, время: 16:28.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.