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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 23:37   #1
<Tyz>
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 16
По умолчанию текстовые файлы [Паскаль]

Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.


Я извиняюсь что столько тем, просто нужно сдать эти программы, а лекции по ним не читали, а самому времени нет разбираться - сессия на носу
<Tyz> вне форума Ответить с цитированием
Старый 19.12.2010, 00:42   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

http://programmersforum.ru/forumdisplay.php?f=29
p51x вне форума Ответить с цитированием
Старый 19.12.2010, 12:12   #3
<Tyz>
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 16
По умолчанию

Кому не трудно помочь
<Tyz> вне форума Ответить с цитированием
Старый 19.12.2010, 12:37   #4
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Код:
while not eof(f) do begin
  readln(f,s);
  while pos('  ')<>0 do delete(s,pos('  ',1));
  writeln(g,s);
end;
Тут реализована запись из 1 файла (f - с ним связана) в другой (g - с нимсвязана) без пробелов. Тебе нужно лишь из g создать новый f.
Если нужны полные тексты программ(не бесплатно), то пиши в асю 600-927-970
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 19.12.2010, 13:57   #5
<Tyz>
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 16
По умолчанию

Код:
Program L;
uses crt;
var st,s:string;
f,g:text;
 
begin
 clrscr;
 write('S-> ');
 readln(s);
 assign(f,'input.txt');
 assign(g,'output.txt');
 reset(f);
 rewrite(g);
 while not eof(f) do
 begin
  readln(f,st);
  if st='' then writeln(g,s) else writeln(g,st);
 end;
 close(f);
 close(g);
end.
можно ли переделать этот код на мою задачу и как?

Этот код тоже работает

Последний раз редактировалось Stilet; 19.12.2010 в 15:10.
<Tyz> вне форума Ответить с цитированием
Старый 19.12.2010, 15:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

я подскажу к тому что й тебя есть.
Код:
var s:string;i:integer;
begin
 s:='kjsfh  kjsf   kjkjsdhfks';
 i:=-1;
 while i<>0 do begin
  delete(s,i,1);
  i:=pos('  ',s);
 end;
 write(s);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Этот код удаляет лишние пробелы внутри строки. Грамотно прикрути его внутрь своего цикла, и выводи в конце цикла обработанную строку в файл.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2010, 21:45   #7
<Tyz>
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 16
По умолчанию

Код:
program practika12;
uses crt;
var s:string;
TFile: Text;
i: integer;

begin
 assign(TFile,'MFail.txt');{Создаёт текстовый фаил}
  rewrite(TFile); {Открывает файл для записи}
   write(TFile,s); {Записывает в фаил строку s}
begin
textcolor(1);
   writeln('Исходный текст');
   writeln('                                   ');
textcolor(12);
   writeln('kjsfh  kjsf                   kjkjsdhfks');textcolor(1);
   writeln('                                   ');
   writeln('Текст который будет записан в фаил ');
   writeln('                                   ');
textcolor(12);

   s:='kjsfh  kjsf                   kjkjsdhfks';
   i:=-1;
while i<>0 do begin
  delete(s,i,1); {Удаляет из строки s,
   1 символ, начиная с символа под номером i}
  i:=pos('  ',s); {Ищет в строке s }
 end;
write(s);
readln;

end;
 begin
clrscr;
  write(TFile,s);
  close(TFile);
  end;
end.
вот дописал программу, вот только не пойму как объяснить(для чего нужно) i:=-1


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

Последний раз редактировалось Serge_Bliznykov; 25.12.2010 в 10:19.
<Tyz> вне форума Ответить с цитированием
Старый 24.12.2010, 21:47   #8
<Tyz>
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 16
По умолчанию

И еще строка pos, везде пишутся обьяснения, но я не пойму что она ищет или что она делает


Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Редактировать" ("Правка")
и дописывайте в своё сообщение, что Вы хотели добавить!

Последний раз редактировалось Serge_Bliznykov; 25.12.2010 в 10:28.
<Tyz> вне форума Ответить с цитированием
Старый 25.12.2010, 10:25   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
вот дописал программу, вот только не пойму как объяснить(для чего нужно) i:=-1
ну, это Stilet придумал, чтобы программа попадала в цикл.
Только он это не очень хорошо придумал.
вот так - много ЛУЧШЕ:
Код:
  i := pos('  ',s); 
  while i<>0 do begin
тогда, если в строке нечего удалять (нет двух подряд пробелов),
то внутрь цикла мы и не попадём...

а функция Pos ищет подстроку в строке и возращает найденную позицию (или ноль - если ничего не нашла).
пример.
есть строчка s := 'ABCDEFG'
тогда pos('CD', s) вернёт число 3 (именно с третьей позиции в строке есть подстрока CD)

а pos('DC',s) вернёт ноль, т.к. такой подстроки нет в строке s
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2010, 12:17   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Только он это не очень хорошо придумал.
Дело в том что процедура delete умна, и определяет попадания в границы строки индекса, так что я просто понадеялся на нее
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовые файлы!(Паскаль) Cas01 Помощь студентам 3 18.12.2010 15:43
Паскаль-текстовые и типизированные файлы tanyhaftv Помощь студентам 3 24.03.2010 13:30
Текстовые файлы. Паскаль катя123 Помощь студентам 3 06.01.2010 23:38