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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 00:46   #1
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию Текстовые файлы в Делфи

Дан текстовый файл T1
Каждая строка файла имеет следующий формат:
Фамилия пол оклад
Создать новый текстовый файл, включающий все данные исходного с добавлением для женщин еще одной
графы - премия к 8 марта в размере 30% от оклада. Последняя строка файла должна содержать сумму всех премий.
Помогите найти ошибки
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

var t1,t2:TextFile;
     fam:string[15];
     pol:char;
      pr:integer;
     su,okl:real;
begin
 assign(t1,'1.txt');
 assign(t2,'2.txt');
 reset(t1);
 rewrite(t2);
okl:=0;
 su:=0;
 while not eof(t1) do
  begin
   readln(t1,fam,pol,okl);
   if pol='ж' then
    begin  su:=su+0.3*okl;
    writeln(t2,fam,' ',pol,' ',okl,' ',su,' ',0.3*okl:0:0);
     writeln(t2,fam,okl);

     su:=su+pr;
end;
  end;
 if (su<>0) and (okl<>0) then
  write(t2,su/okl:0:3);
 closefile(t1);
 closefile(t2);
end.
Asira вне форума Ответить с цитированием
Старый 20.12.2009, 03:02   #2
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Мб стоит сначала файл заполнить?
Код:
assign(t1,'1.txt');
...
 reset(t1);
...
 while not eof(t1) do
  begin
   readln(t1,fam,pol,okl);
Ты читаешь пустой файл.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 20.12.2009, 10:12   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а с чего Вы взяли, что файл пустой?!!!
я уверен, что файл 1.txt, из которого идёт чтение данных - НЕ ПУСТ!

Asira, проблема в том, что файл у Вас заполнен не так, как Вы его читаете!! на фамилию должно быть отведено СТРОГО 15 СИМВОЛОВ (не меньше, не больше!)
16йсимвол в строке должна быть буква пола.

при выводе суммы вы зачем её делите на оклад?!?!?!

а что у Вас в переменной pr и зачем Вы её к сумме приплюсовываете!?!?!?

строчку вывода неплохо бы задавать размер для поля оклад.

и зачем Вы дважды пишете в файл каждую фамилию?
рекомендую исправить код на:

Код:
    if pol = 'ж' then
    begin 
      su := su + 0.3 * okl;
      writeln(t2, fam, ' ', pol, ' ', okl: 8: 2, ' ', su: 8: 2, ' ', 0.3 * okl: 8: 2);
    end;
  end;
  if (su <> 0) then
    write(t2, su:8:3);
p.s. пример файла прилагается..
Вложения
Тип файла: rar 1_txt.rar (167 байт, 7 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2009, 10:59   #4
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Спасибо огромное, я поняла что я дуб...!!!!!!!!!
Что бы я без Вас делала
Asira вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовые файлы (C++) -=DOBRO=- Помощь студентам 16 24.12.2009 22:34
текстовые файлы Marinka91 Помощь студентам 3 08.07.2009 07:56
(Делфи) Текстовые файлы Doublefaced Помощь студентам 2 15.05.2009 17:21
текстовые файлы lusuj Помощь студентам 3 20.11.2008 19:18