IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> нюанс со вставкой строки в текстовый файл, Срочно (стирается конец строки в самом файле)
Мистер Ди
сообщение 9.06.2007 16:40
Сообщение #1


Гость






Задание:
ввести с клавиатуры строчку S1 и два числа №1 и №2. В тексте с позиции №1 вставить строку S1, с заменой символов (вместо старых символов), с позиции №2 вставить ту же строчку в обратной последовательности (абв - вба). Вывести измененную строку на экран до и после изменения.

У меня стирается конец строки из самого файла при вставке... Как увеличить строку, В которую вставляем?
ЗЫ вставка выделена...
program laba2;
uses crt;
var
 f:text;
 a,s:array[1..80] of string;
 k,i,dl,e,dl1,i1,dl2,w,t:integer;
 name,c,q,buf: string;
 n1,n2:integer;
 label 1;
function open_f(var f:text;name:string): boolean;
 begin
  assign(f,name);
  {$I-};reset(f);{$I+};
  if IOResult=0 then
   begin
    writeln('Файл открыт успешно');
    open_f:=true;
   end
  else
   begin
    writeln('Ошибка открытия файла ');
    writeln;
    open_f:=false;
   end;
 end;
procedure vyvod(var f:text;name:string);
 begin
  assign(f,name);
  {$I-};reset(f);{$I+};
  writeln;
  repeat
   readln(f,c);
   writeln(c);
  until EOF(f);
   close(f);
   writeln;
 end;
  begin
   clrscr;
   repeat
    write('Введите название файла :  ');
    readln(name);
     writeln;
   until open_f(f,name) = true;

   repeat
    readln(f,s[k]);
    dl:=dl+length(s[k]);
   until EOF(f);
   writeln('Введите числа №1 и №2, причём меньше  ',dl,'.');
   write('№1-');
   readln(n1);

   write('№2-');
   readln(n2);

  1: Write('Введите строку не ьольше  ',((n2-n1)+1),'-');
   Readln(q);
   dl2:=length(q);
   If dl2>((n2-n1)+1) then begin Writeln('Ошибка ввода '); goto 1  end;
clrscr;

   writeln ('Файл');
   vyvod (f,name);

   reset (f);

   Writeln('Ввод строки между позициями №1-',n1,'и №2-',n2,' и вставка перевёрнутой строки после позиции №2-',n2);
   k:=1;
   i1:=0;
   w:=1;
   e:=1;

   For i:=dl2 downto 1  do
    begin
     buf[e]:=q[i];
     inc(e);
    end;
   e:=1;

   repeat
    readln(f,s[k]);
    dl1:=length(s[k]);
    dl2:=length(q);
    For i:=1 to dl1 do
     begin
      inc(i1);
      If (i1>=n1) and (dl2>=w)  then
       begin
	s[k,i]:=q[w];
	inc(w);
       end;
      If (i1>n2) and (dl2>=e) then
      Begin
       for t:=dl1 downto i do
       begin
      

 
s[k,t+1]:=s[k,t];
       s[k,t]:=buf[e];
       dl1:=dl1+1;


	      end;
       inc(e);
	     end;
     end;
     Writeln(s[k]);
    inc(k);
   until EOF(f);
   readkey;
   close (f);
end.



Сообщение отредактировано: Мистер Ди - 9.06.2007 16:43
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 14:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"