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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 14:53   #1
Kelluin
Пользователь
 
Регистрация: 04.12.2013
Сообщений: 18
По умолчанию Читать файл до половины

Нужно было составить программу по следующему заданию,

Ввести файл F . Все элементы, которые не кратны 4 и стоят в первой половине файла уменьшить на 10. Файл вывести до и после преобразования.

но столкнулся с тем что не знаю как считать файл до половины только вот мой код. Помогите пожалуйста.

Код:
program Z15;
uses crt;
var b,i:integer;
f:file of integer;
begin
assign(f,'f.dat');
writeLn('Введите первую компоненту файла F или признак конца ввода: "20" ');
//ввод файла;
rewrite(f);
readLn(b);
i:=1; //номер компоненты файла
while b<>20 do
begin
write(f,b);
i:=i+1;
writeLn('Введите ',i,'-ю компоненту файла f');
readLn(b);
end;
//вывод файла до изменения
reset(f);
writeLn('файл f до изменения: ');
while not EOF(f) do
begin
read(f,b);
write(b:5);
end;
writeLn;
// уменьшение на 10 элементов стоящих в первой половине файла и кратных 4
reset(f);
while not EOF(f) do
begin
read(f,b);
if b mod 4 = 0
then
begin
seek(f,filepos(f)-1);
b:=b-10;
write(f,b);
end;
end;
//вывод файла после изменения
reset(f);
writeLn('файл f после изменения: ');
while not EOF(f) do
begin
read(f,b);
write(b:5);
end;
writeLn;
close(f);
end.
Kelluin вне форума Ответить с цитированием
Старый 04.12.2013, 15:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так устроит?
Код:
program Z15;
uses crt;
var b, i: integer;
  f: file of integer;
begin
  assign(f, 'f.dat');
  writeLn('Введите первую компоненту файла F или признак конца ввода: "20" ');
{//ввод файла; }
  rewrite(f);
  readLn(b);
  i := 1; {//номер компоненты файла }
  while b <> 20 do
  begin
    write(f, b);
    i := i + 1;
    writeLn('Введите ', i, '-ю компоненту файла f');
    readLn(b);
  end;
  Close(f);  {нужно ОБЯЗАТЕЛЬНО закрыть файл, чтобы сохранить внесённые изменения}

{//вывод файла до изменения }
  reset(f);
  writeLn('файл f до изменения: ');
  while not EOF(f) do
  begin
    read(f, b);
    write(b: 5);
  end;
  writeLn;

{  // уменьшение на 10 элементов стоящих в первой половине файла и НЕ кратных 4 }
  reset(f);
  for i:=1 to (FileSize(f) div 2) do  {FileSize(f) возвращает число записей в файле}
  begin
    read(f, b);
    if (b mod 4) <> 0 then
    begin
      seek(f, i - 1);
      b := b - 10;
      write(f, b);
    end;
  end;
  Close(f); {нужно ОБЯЗАТЕЛЬНО закрыть файл, чтобы сохранить внесённые изменения}

  {//вывод файла после изменения }
  reset(f);
  writeLn('файл f после изменения: ');
  while not EOF(f) do
  begin
    read(f, b);
    write(b: 5);
  end;
  writeLn;
  close(f);
end.


если есть вопросы - задавайте, не стесняйтесь!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2013, 15:13   #3
Kelluin
Пользователь
 
Регистрация: 04.12.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так устроит?
Да спасибо большое, два дня пытался сделать и так и не увидел что надо НЕ кратные 4 числа уменьшать.
Kelluin вне форума Ответить с цитированием
Старый 04.12.2013, 15:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Пожалуйста.

Цитата:
так и не увидел что надо НЕ кратные 4 числа уменьшать
дык. дьявол как раз в деталях!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Говорят, что число "Счастливое" если сумма цифр левой половины числа равна сумме цифр правой половины числа. если число имеет нече Xumera Паскаль, Turbo Pascal, PascalABC.NET 1 18.11.2013 21:45
Деление на равные половины Nimbu Помощь студентам 5 28.06.2010 17:39
Язык С - читать текстовый файл тотошкин Помощь студентам 0 16.01.2010 00:30
Процедура установки позиции с которой программа должна читать файл не работает. FASM. Crivel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 13.09.2009 21:46
ActiveX не хочет читать большой файл Miklek Общие вопросы Delphi 0 02.04.2009 11:55