Народ, помогите плиз бедному студенту решить задачу!!!
В бухгалтерии предприятия имеется ведомость сумм заработанных сотрудниками в течение месяца (суммы исчисляются в тыс. руб.). Подсчитать общий заработок каждого сотрудника за весь месяц. То есть вводишь с клавиатуры фамилия сотрудников, затем их зарплаты. И если встречаются несколько одинаковых фамилий, то их зарплаты надо суммировать. Как вот в этом примере:
Исходная ведомость
Фамилия Заработок
Непейвода 800
Тарбеев 300
Тарбеев 425
Непейвода 250
Лесков 850
Тарбеев 100
Итоговая ведомость за месяц:
Фамилия Заработок
Непейвода 1050
Тарбеев 825
Лесков 850
program x_z;
uses crt;
const max=4;
var
a:array[1..max] of string;
b:array[1..max] of integer;
c:array[1..max] of string;
i,j,k,sum:integer;
begin
clrscr;
for i:=1 to max do begin
writeln ('Vvedite phamiliiu ',i,' -ogo rabotnika');
readln (a[i]);
end;
for j:=1 to max do begin
writeln ('VVedite z/p ',j,' -ogo rabotnika');
readln (b[j]);
end;
i:=0;
for k:=1 to max do begin
c[k]:=a[i+k];
for i:=k to max do
if a[i]=c[k] then sum:=sum+b[i];
end;
writeln (a[i],' - ',sum);
readln;
end.
Возможно легче сделать запись с полями фамилия, зарплата и создать массив записей ?
Вот моя идея в виде спецификации :
Type MyRec = Record
Surname : string;
Money : integer;
end;
Const N = 5;
var ms : array [1..N] of MyRec;
Type MyRec = Record
Surname : string;
Money : integer;
end;
Const N = 5;
var ms : array [1..N] of MyRec;
Допустим у тебя есть переменная, отвечающая за количество введённых записей (допустим K). Предполагаем ты ввводишь записи, и потом вводишь уже существующую фамилию. В этот момент тебе надо проверить все записи с 1 по K. Как только ты видишь одинаковые фамилии, к полю Money первой встретевшейся такой фамилии прибавляй содержание поля Money этой же фамилии, встретевшейся позже и k := k - 1 для имитации стирания записей. То есть следующую будешь писать поверх той, а если она будет последняя, то в любом случае если ты выведешь на экран записи с 1 по K ты по идее получишь верный ответ.
! | 1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... |