Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2016, 10:37   #1
evgeniya666
Новичок
Джуниор
 
Регистрация: 09.12.2016
Сообщений: 2
По умолчанию Ошибки в коде на паскаль абс: Сотрудники. Определить Сотрудника с минимальным окладом, Сумму выплат, Сотрудников, получающих менее 15 000 руб

Помогите, пожалуйста исправить
Количество элементов массивов не менее 10. Исходные данные ввести самостоятельно. Вывести на экран исходные данные и результаты выполнения программы. Исходные данные -Фамилия, должность, размер заработной платы. Определить Сотрудника с минимальным окладом, Сумму выплат, Сотрудников, получающих менее 15 000 руб. Программа на паскале
Код:
Program var2;
var
fam: array [1..10] of string[20];
dolzh:array[1..10] of string[20];
zp: array [1..10] of real;
min, sum: real;
p: array [1..10] of string[20];
i,n,l: integer;
begin
writeln ('vvedite fam');
readln(n);
for i:=1 to n do begin
writeln('vvedite dolzh');
readln(dolzh[i]);
writeln('vvedite zp');
readln(zp[i]);

end;
writeln('ishodnie dannie');
writeln('__________________________________________________');
writeln('!nomer!fam! dolzh! !zp!');
writeln('__________________________________________________');
for i:=1 to n do begin
writeln('!',i,'!',fam[i]:20,'!',dolzh[i]:2,'!',zp[i]:5:2,'!');
end;

min:=zp[1];
l:=0;
for i:=2 to n do begin
if min>zp[i] then
begin
min:=zp[i];l:=i;
end;
end;
writeln('naibmenshaya zp', fam[l]:20,' ravna:', min:6:2);

sum:=0;
for i:=1 to n do begin
sum:=sum+zp[i];
end;
writeln('summa vsego',sum:10);

l:=0;
for i:=1 to n do begin
if zp[i]>1500 then
begin
l:=l+1;p[l]:=fam[i];
end;
end;
if l=0 then
writeln('net>15000')
else begin writeln('zp <15000 y');
for i:=1 to l do writeln(p[i]:25);
end;
end.

Последний раз редактировалось Аватар; 09.12.2016 в 11:22.
evgeniya666 вне форума Ответить с цитированием
Старый 09.12.2016, 10:41   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

ошибки то какие?
p51x на форуме Ответить с цитированием
Старый 09.12.2016, 10:43   #3
evgeniya666
Новичок
Джуниор
 
Регистрация: 09.12.2016
Сообщений: 2
По умолчанию

Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
и ошибка времени выполнения: Input string was not in a correct format.
evgeniya666 вне форума Ответить с цитированием
Старый 09.12.2016, 14:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

просишь ввести fam, а сам вводишь n (количество).
и тебя ничего не смущает?!

вот, чуток причесал твой код, разбирайся:
Код:

program var2;

type
  TWorker = record
    fam: string[20];
    dolzh: string[20];
    zp: real
  end;

var
  workers: array [1..10] of TWorker;
  sum: real;
  i, n, cnt_less_15000, indexMin: integer;

begin
  repeat
    writeln('vvedite kolichestvo rabotnikov:');
    readln(n);
  until n in [1..10];
  
  for i := 1 to n do 
  begin
    writeln('vvedite fam');
    readln(workers[i].fam);
    writeln('vvedite dolzh');
    readln(workers[i].dolzh);
    writeln('vvedite zp');
    readln(workers[i].zp);    
  end;
  
  writeln('ishodnie dannie');
  writeln('__________________________________________________');
  writeln('!nomer!fam! dolzh! !zp!');
  writeln('__________________________________________________');
  for i := 1 to n do 
  begin
    with workers[i] do
      writeln('!', i, '!', fam:20, '!', dolzh:2, '!', zp:5:2, '!');
  end;
  
  indexMin := 1;
  for i := 2 to n do 
    if workers[indexMin].zp > workers[i].zp then
      indexMin := i;
  writeln('naimenshaya zp ', workers[indexMin].fam:20, ' ravna ', workers[indexMin].zp:5:2);
  
  sum := 0;
  for i := 1 to n do 
  begin
    sum := sum + workers[i].zp;
  end;
  writeln('summa vsego', sum:10:2);
  
  writeln;
  writeln('spisok rabonikov s zarplatoi menee 15000');
  writeln('__________________________________________________');
  writeln('!nomer!fam! dolzh! !zp!');
  writeln('__________________________________________________');
  cnt_less_15000 := 0;
  for i := 1 to n do 
  begin
    if workers[i].zp < 15000 then
    begin
      inc(cnt_less_15000);
      with workers[i] do
        writeln('!', cnt_less_15000, '!', fam:20, '!', dolzh:2, '!', zp:5:2, '!');
    end;
  end;
  if cnt_less_15000 = 0 then WriteLn('   Takih net!');
  writeln('__________________________________________________');
  
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В матрице nxm определить в каждом столбце минимальное и максимальное элемент число, возвести в степень. Рекурсия (на Паскаль абс) BArt2000 Паскаль, Turbo Pascal, PascalABC.NET 1 03.04.2012 08:32
Определить сумму к выплате при расчете заработной платы для 7 сотрудников..(Excel) LizzZi Помощь студентам 1 30.05.2011 18:30