IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Народ, помогите бедному студенту решить задачу!, О масссивах
Freem
сообщение 8.05.2007 19:43
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


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

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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Tan
сообщение 8.05.2007 20:05
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


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

Сообщение отредактировано: Tan - 8.05.2007 20:06


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 0:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"