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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2011, 10:05   #1
Rfn.if
 
Регистрация: 12.10.2010
Сообщений: 8
Вопрос типизированные файлы (паскаль)

Определить файл f1 как типизированный файл из символов. Подсчитать, сколько в нем встречается семерок, а также определить и вывести в файл f2 номера позиций этих семерок.

Код:
program lr13z10;
const name1 = 'new';
 var
 s:char;
  name: string;
  f1: file of char;
  f2: file of integer;
  c1,c2: char;
  i:longint;
  k,t:integer;
begin
 writeln ('введите имя файла');
 readln (name);
 assign (f1, name);
 assign (f2, name1);
  rewrite (f1);
while not eof do
 begin

 readln (c1);
 write (f1,c1);
 end;
 close (f1);
 reset (f1);
 rewrite (f2);
 k:=0;
 i:=0;
 while i<>t do
  begin
   read (f1,s);
   if (s ='7') then k:=k+1; write (f2, i);
   inc (i);
   end;
  close (f1);
  close (f2);
   if k=0 then write ('в данном файле нет 7')
   else write ('здесь ',k,' 7');
   end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.03.2011 в 10:32.
Rfn.if вне форума Ответить с цитированием
Старый 16.03.2011, 10:46   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ваш код очень похож на правильный, но в нём есть ряд ошибок.
например, если Вы создаёте файл file of Integer
а i : LongInt
то нельзя записать i в этот файл (у них типы разные)

и ещё, если Вы в одну строчку после if .. then записываете несколько операторов, то это не означает, что они все выполнятся при выполнении условия! Только первый из них. А второй (и все остальные) будут выполняться всегда!
Цитата:
Код:
if (s ='7') then k:=k+1; write (f2, i);
для объединения операторов нужно использовать begin ... end

Посмотрите, вот, примерно так можно:
Код:
program lr13z10;
const name1 = 'new';
var
  name: string;
  f1: file of char;
  f2: file of integer;
  c1: char;
  i: integer;
  k: integer;
begin
  writeln('введите имя файла');
  readln(name);
  assign(f1, name);
  assign(f2, name1);
  rewrite(f1);
  while not eof do
  begin
    read(c1);
    write(f1, c1);
  end;
  close(f1);
  reset(f1);
  rewrite(f2);
  k := 0;
  i := 0;
  while Not Eof(f1) do
  begin
    inc(i);
    read(f1, c1);
    if (c1 = '7') then begin
       k := k + 1;
       write(f2, i);
    end;
  end;
  close(f1);
  close(f2);
  if k = 0 then write('в данном файле нет 7')
  else write('здесь ', k, ' 7');
  readln; {ожидаем нажатия Enter}
end.


p.s. потрясён таким циклом для ввода: while not eof do begin .. end
Давненько не встречал такого. А, если не секрет, где Вы такому научились?
И Вы умеете завершать ввод данных при использовании такой конструкции?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
типизированные файлы, паскаль! D1em Паскаль, Turbo Pascal, PascalABC.NET 4 12.02.2011 17:11
Паскаль-текстовые и типизированные файлы tanyhaftv Помощь студентам 3 24.03.2010 13:30
Паскаль. Типизированные файлы. Razorishe Помощь студентам 19 31.03.2009 20:24
Типизированные файлы.Паскаль.help! ромка) Паскаль, Turbo Pascal, PascalABC.NET 1 17.05.2008 07:59
Типизированные файлы.Создание, удаление, редактирование, сортировка записей типизированного файла.Паскаль Студент Шиза Помощь студентам 6 08.12.2007 13:41