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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 21:31   #1
Proffy69
 
Регистрация: 31.03.2009
Сообщений: 4
По умолчанию Помогите с задачей, пожалуйста!

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

Попытался решить сам, и получил следующее:

Код:
Type
    DB=record
       Name : String;
       Ceh  : String;
       Zarp : Real;
    end;
Var
   DBFile:file of DB;
   Current :DB;

Procedure Insert;
Begin
     clrscr;
     reset(DBFile);
     seek(DBFile,FileSize(DBFile));

     repeat
           WriteLn;
           Write('Введите фамилию ');
           ReadLn(Current.Name);
           Write('Введите название цеха ');
           ReadLn(Current.Ceh);
           Write('Введите зарплату ');
           ReadLn(Current.Zarp);
           Write(DBFile,Current);
           Write('Продолжить ?(д/н)');
     until ReadKey='н';
     WriteLn;
     close(DBFile);
     Menu;

End;

Procedure Menu;
Label 1;
Begin

     clrscr;
1:
     WriteLn('1. Добавить в базу');
     WriteLn('2. Расчет ');
     Write('3. Выход  ');
     repeat until keypressed;
     ch:=Readkey;
     case ch of
      '1':Insert;
      '2': Work;
      '3': Halt;
      else begin
           Writeln('Неправильно выбран пункт');
           clrscr;
          goto 1
      end;
     end;
End;
Procedure Work;
var
   temp,ceh : string;
   sum : real;
Begin
     clrscr;
     Reset(DBFile);
     Write('Введите название цеха: ');
     ReadLn(ceh);
     clrscr;
     WriteLn('Цех:   ',Ceh);
     WriteLn('--------------------------------------------------T--------------¬');
     WriteLn('¦Фамилия                                          ¦Зарплата      ¦');
     WriteLn('+-------------------------------------------------+--------------+');
     Sum:=0;
     i:=5;
     while not EOF(DBFile) do
     Begin
          Read(DBFile,Current);
          if Current.ceh=ceh then
          Begin
            sum:=sum+Current.Zarp;
            Write('¦',Current.Name);
            str(Current.Zarp:6:2,Temp);
            GoToXY(66-Length(Temp),i);
            Write(Temp,'¦');
            GoToXY(51,i);
            WriteLn('¦');
            i:=i+1;
          End;
     End;
     WriteLn('+-------------------------------------------------+--------------+');
     WriteLn('¦Итого                                                           ¦');
     WriteLn('L-------------------------------------------------+---------------');
     GoToXY(51,i+1);
     Write('¦');
     str(sum:6:2,Temp);
     GoToXY(66-Length(Temp),i+1);
     Write(Temp,'¦');
     repeat until keypressed;
     Menu;close(DBfile);
End;
Procedure Part3;
Begin
     assign(DBFile,'a:\kurs\DB.dat');Menu;
End;
Begin
          clrscr;
11:
     WriteLn('1. Часть 1');
     WriteLn('2. Часть 2 ');
     WriteLn('3. Часть 3 ');
     Write('4. Выход  ');
     repeat until keypressed;
     ch:=Readkey;
     case ch of
      '1':Part1;
      '2': Part2;
      '3': Part3;
      '4': Halt;
      else begin
           Writeln('Неправильно выбран пункт');
           clrscr;
          goto 11
      end;
     end;

End.
Но все равно ошибки есть, как мне кажется. Не могли бы Вы помочь мне и подправить программу? Желательно с небольшими комментариями действий

Последний раз редактировалось Proffy69; 12.05.2009 в 22:13.
Proffy69 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с задачей. Kold Паскаль, Turbo Pascal, PascalABC.NET 1 12.12.2008 20:20
Пожалуйста, помогите с задачей по C++ Maksimym Помощь студентам 2 10.01.2008 23:18
Помогите пожалуйста с задачей по С++ Riddick2013 Помощь студентам 2 11.11.2007 16:54