Народ, помогите плиз решить задачу!!!
В бухгалтерии предприятия имеется ведомость сумм заработанных сотрудниками в течение месяца (суммы исчисляются в тыс. руб.). Подсчитать общий заработок каждого сотрудника за весь месяц. То есть вводишь с клавиатуры фамилия сотрудников, затем их зарплаты. И если встречаются несколько одинаковых фамилий, то их зарплаты надо суммировать. Как вот в этом примере:
Исходная ведомость:
Фамилия Заработок
Непейвода 800
Тарбеев 300
Тарбеев 425
Непейвода 250
Лесков 850
Тарбеев 100
Итоговая ведомость за месяц:
Фамилия Заработок
Непейвода 1050
Тарбеев 825
Лесков 850
Код:
program x_z;
uses crt;
Type MyRec = Record
surname:string;
money:integer;
end;
Const max = 4;
var ms:array [1..max] of MyRec;
a:array [1..max] of integer;
i,j,k,n,sum:integer;
b:string;
begin
clrscr;
for i:=1 to max do begin
writeln ('Vvedite phamiliiu ',i,' -ogo rabotnika');
readln (ms.surname);
writeln ('Vvedite z/p ',i,' -ogo rabotnika');
readln (ms.money);
n:=i;
for k:=1 to n do begin
if ms.surname=ms[k].surname then begin
sum:=ms[k].money+ms.money;
n:=n-1;
writeln ('Summa = ',sum);
end;
end;
end;
readln;
end.
Пытался сделать, но не получилось!!!!!!!!!! Работает неправлильно!!!!!!!!!!!!!! Заранее буду благодарен!!!!!!!!!!
народ, помогите плиз решить задачу по паскалю!!!! курсовая горит!!!!
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Здесь тебе нужно:
1) Добавить в MyRec переменную sum: integer, так как у тебя в программе одна сумма для всех рабочих.
2) Отсеять показ работников, имеющих одинаковые имена.
3) Привести в порядок програмный код. (грязненько-)
Вот рабочий код:
1) Добавить в MyRec переменную sum: integer, так как у тебя в программе одна сумма для всех рабочих.
2) Отсеять показ работников, имеющих одинаковые имена.
3) Привести в порядок програмный код. (грязненько-)

Вот рабочий код:
Код: Выделить всё
Type MyRec = Record
surname:string;
money:integer;
sum: integer;
end;
Const max = 4;
var ms:array [1..max] of MyRec;
a:array [1..max] of integer;
s: array [1..max] of string;
{список с именами работников, чьи зарплаты уже подсчитаны}
i,j,k:integer;
begin
for i:=1 to max do begin
writeln ('Фамилия ',i,' работника');
readln (ms[i].surname);
writeln ('Зарплата ',i,' работника');
readln (ms[i].money);
end;
writeln('----------------------');
for i:=1 to max do begin
for k:=1 to max do begin
if (ms[i].surname=ms[k].surname) and (ms[i].surname<>s[k]) then begin
ms[i].sum:=ms[k].money+ms[i].sum;
s[k]:=ms[i].surname; {занесём пользователя в список}
end;
end;
if ms[i].sum<>0 then writeln(ms[i].surname,'-',ms[i].sum);
{безденежные работники отображаться не будут}
end;
readln;
end.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
большое спасибо тебе за помощь!!!!!!!!!!! ты прям меня спас!!!!!!! незнаю, как тебя благодарить!!!! 
