Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

Код:
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 вне форума  
Закрытая тема

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


06:54.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.