Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Народ, помогите бедному студенту решить задачу!

Автор: Freem 8.05.2007 23:43

Народ, помогите плиз бедному студенту решить задачу!!!
В бухгалтерии предприятия имеется ведомость сумм заработанных сотрудниками в течение месяца (суммы исчисляются в тыс. руб.). Подсчитать общий заработок каждого сотрудника за весь месяц. То есть вводишь с клавиатуры фамилия сотрудников, затем их зарплаты. И если встречаются несколько одинаковых фамилий, то их зарплаты надо суммировать. Как вот в этом примере:

Исходная ведомость
Фамилия Заработок
Непейвода 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.


Пытался сделать, но не получилось!!!!!!!!!! Работает неправлильно!!!!!!!!!!!!!! Заранее благодарен!!!!!!!! mega_chok.gif


Автор: Tan 8.05.2007 23:46

Возможно легче сделать запись с полями фамилия, зарплата и создать массив записей ?

Автор: Freem 8.05.2007 23:50

Цитата(Tan @ 8.05.2007 20:46) *

Возможно легче сделать запись с полями фамилия, зарплата и создать массив записей ?


А можно маленько поподробнее???!!

Автор: Tan 8.05.2007 23:54

Вот моя идея в виде спецификации :

Type MyRec = Record 
Surname : string;
Money : integer;
end;
Const N = 5;
var ms : array [1..N] of MyRec;

Автор: Freem 8.05.2007 23:59

Цитата(Tan @ 8.05.2007 20:54) *

Вот моя идея в виде спецификации :
Type MyRec = Record 
Surname : string;
Money : integer;
end;
Const N = 5;
var ms : array [1..N] of MyRec;



Ещё один вопросик:
У меня самая большая проблема - это как организовать алгоритм суммирования зарплат тех работников, которые вводишь с клавиатуры несколько раз.

Автор: Tan 9.05.2007 0:05

Допустим у тебя есть переменная, отвечающая за количество введённых записей (допустим K). Предполагаем ты ввводишь записи, и потом вводишь уже существующую фамилию. В этот момент тебе надо проверить все записи с 1 по K. Как только ты видишь одинаковые фамилии, к полю Money первой встретевшейся такой фамилии прибавляй содержание поля Money этой же фамилии, встретевшейся позже и k := k - 1 для имитации стирания записей. То есть следующую будешь писать поверх той, а если она будет последняя, то в любом случае если ты выведешь на экран записи с 1 по K ты по идее получишь верный ответ.

Автор: Freem 9.05.2007 0:13

Цитата(Tan @ 8.05.2007 21:05) *

Допустим у тебя есть переменная, отвечающая за количество введённых записей (допустим K). Предполагаем ты ввводишь записи, и потом вводишь уже существующую фамилию. В этот момент тебе надо проверить все записи с 1 по K. Как только ты видишь одинаковые фамилии, к полю Money первой встретевшейся такой фамилии прибавляй содержание поля Money этой же фамилии, встретевшейся позже и k := k - 1 для имитации стирания записей. То есть следующую будешь писать поверх той, а если она будет последняя, то в любом случае если ты выведешь на экран записи с 1 по K ты по идее получишь верный ответ.


Большое большое smile.gif спасибо!!!!!!!!!!!!

Автор: мисс_граффити 9.05.2007 0:14

 ! 
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...


по-моему, "помогите бедному студенту" не очень информативно.