• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Небольшой вопрос о файлах

Ильгиза

Новые
Регистрация
8 Окт 2011
Сообщения
49
Реакции
0
Баллы
0
Паскаль. Небольшой вопрос о файлах

Здравствуйте!
Дан текстовый файл, необходимо в начало строки close, написать комментарий '{закрытие файла}' и вывести получившийся файл.
эта часть программы работает отлично, но еще необходимо найти номер строки , куда вставляется этот комментарий, я сделала так, но почему то программа не работает.
Пожалуйста , помогите найти ошибку!
Заранее благодарю!!!

program upr1;
Var
f1,f2:Text;
s,s1,s2:String; k:integer;
Begin
s1:='{ çàêðûòèå ôàéëà }';
s2:='close';
Assign(f1,'ilgiza.txt');
Reset(f1);
Assign(f2,'ilgiza2.txt');
Rewrite(f2);
Repeat
Readln(f1,S);
If Pos(s2,S)=0 then
Writeln(f2,S)
else
Writeln(f2,S1+S);
Until eof(f1);
Close(f1);
Close(f2);
reset(f2);
k:=0;
while not eof(f2)do begin
readln(f2,s);
writeln(s);
end;
while s<>s1 do k:=k+1;
close(f2);
writeln(k);
End.



мой вариант текстового файла.

program upr1;
var f:file of real;
x,h,fx:real;
begin
assign(f,'func.dat');
rewrite(f);
x:=0.5;
h:=0.2;
while (x<=2.5) do begin
fx:=exp(ln(1+sqr(x))/3);
write(f,x);
write(x:5:3);
x:=x+h;
write(f,fx);
writeln(fx:8:4);
end;
writeln('файл записан');
close(f);
end.
 
Исправил.
Главная ошибка - это то, что Вы забыли, что искомая строка изменилась (добавился комментарий), а поиск осуществляется по исходному тексту. Исправил.
Кроме того, две мелочи-рекомендации:
1. По возможности, НЕ пользуйтесь кириллицей: сами видите, к чему это приводит - текст программы набран в кодировке UTF, в результате имеем крякозябры.
2. Ну применяйте Вы форматирование листингов (отступы, "лесенки" и т.п.): так неудобно читать программу, когда она вся в столбик!
Вот что получилось (проверено, естественно):
Код:
program upr1;
Var
 f1,f2:Text;
 s,s1,s2,s3:String;
 k,k1:integer;
Begin
 s1:='{ file closing }';
 s2:='close';
 Assign(f1,'ilgiza.txt');
 Reset(f1);
 Assign(f2,'ilgiza2.txt');
 Rewrite(f2);
 Repeat
  Readln(f1,S);
  If Pos(s2,S)=0 then
   Writeln(f2,S)
  else
   begin
    S3:=S1+S;
    Writeln(f2,S3);
   end;
 Until eof(f1);
 Close(f1);
 Close(f2);
 reset(f2);
 k:=0;
 while not eof(f2) do
  begin
   k:=k+1;
   readln(f2,s);
   writeln(k:2,' '+s);
   if s=s3 then k1:=k;
  end;
 close(f2);
 writeln;
 writeln('Number of changed string is ',k1);
 readln
End.
 
Назад
Сверху