Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить из текста все последующие вхождения первой 
:(
    Опции темы
m0d
Дата 27.4.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Есть файл text.txt из него береццо текст обрабатываецо: удаляются все последующие вхождения первой буквы, и записывается в файл text2.txt

Напишите пжлста текст данной программы
PM MAIL   Вверх
Naruto05
Дата 28.4.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.4.2008

Репутация: нет
Всего: нет



как я понял, надо удалить все символы в строке, равные первому символу?
Ну если так,то просто:
procedure solve;
var p:char;
begin
     p:=s[1];
     for i:=1 to length(s) do
         if s[i]=p then delete(s,i,1);
end;

s - строка.
и пишешь вывод.
PM MAIL   Вверх
volvo877
Дата 28.4.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Naruto05, это некорректный код... Во-первых, первый символ тоже удалится, а во-вторых, после Delete меняется (уменьшается) длина строки, но ты уже посчитал длину строки в начале цикла, и цикл будет продолжаться до ПЕРВОНАЧАЛЬНОЙ длины строки - Range Check Error обеспечен...

Так будет гораздо корректнее:
Код

var
  s: string;
  p: integer;

begin
  s := 'this is a test of the string';
  repeat
    p := pos(s[1], copy(s, 2, 255));
    if p > 0 then delete(s, p + 1, 1);
  until p = 0;

  writeln(s);
end.


P.S. Naruto05, я предупреждал тебя о тегах? Не обижайся...
PM MAIL   Вверх
mmvds
Дата 28.4.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: нет
Всего: 6



Тогда уж вот так:
Код

var
  s,buk: string;
  p: integer;
begin
  s := '1799 this is a test of the string';
  p:=1;
  while not (s[p] in ['a'..'z','A'..'Z','А'..'я']) do inc(p);
  buk:=s[p];
  repeat
    p := pos(buk, copy(s, 2, 255));
    if p > 0 then delete(s, p + 1, 1);
  until p = 0;
  writeln(s);
end.

т.к. первый символ может быть и не буквой, а в условии написано:
Цитата(m0d @  27.4.2008,  22:24 Найти цитируемый пост)
удаляются все последующие вхождения первой БУКВЫ


PM MAIL ICQ   Вверх
volvo877
Дата 28.4.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(mmvds @  28.4.2008,  17:43 Найти цитируемый пост)
Тогда уж вот так:

Не-а... Не так... Ты сам-то программку свою запускал? Оно у тебя и первую букву удаляет. Тогда уж вот так:
Код
var
  s,buk: string;
  i, p: integer;
begin
  s := '1799 this is a test of the string';
  i := 1;
  while not (s[i] in ['a'..'z','A'..'Z','А'..'п', 'р'..'я']) do inc(i);
  buk := s[i];
  repeat
    p := pos(buk, copy(s, i + 1, 255));
    if p > 0 then delete(s, i + p, 1);
  until p = 0;
  writeln(s);
end.
(множество русских букв разрывно. Мало ли, может кому в голову придет прогнать это на строке, содержащей псевдографику, скажем, таблицу в файле - и все, не отработает... Символ псевдографики посчитает за русскую букву)
PM MAIL   Вверх
mmvds
Дата 29.4.2008, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: нет
Всего: 6



Да, в турбо паскале же дос кодировка, надо выкидывать PascalABC,
кстати если дело уж на то пошло, то буквы Ё, ё добавить надо smile
128-176 А-п
224-240 р-я
241-242 Ё-ё
PM MAIL ICQ   Вверх
MetalFan
Дата 29.4.2008, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: нет
Всего: 128



маньяки! он ж не сдаст такие навороты)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Naruto05
Дата 29.4.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.4.2008

Репутация: нет
Всего: нет



да. я ошибся. Но могу переделать по-другому:

Код

var
     s:string;
     b:array[1..256] of boolean;
     i,k:integer;
     f:text;
procedure  input;
begin
     assign(f,'text.txt');reset(f);
     readln(f,s);
     close(f);
end;
procedure solve;
begin
     for i:=1 to length(s) do
         if (s[i]=s[1])and(i>1) then b[i]:=false;
end;

procedure output;
begin
     assign(f,'text2.txt');rewrite(f);
     for i:=1 to length(s) do
        if b[i] then write(f,s[i]);
     close(f);
end;
begin
     input;
     fillchar(b,sizeof(b),true);
     solve;
     output;
end.


Добавлено через 14 минут
надеюсь, сейчас - правильно.
P.S. Пожалуйста, не ставьте мне предупреждения! Я буду хорошим smile 

Это сообщение отредактировал(а) Naruto05 - 29.4.2008, 13:55
PM MAIL   Вверх
m0d
Дата 30.4.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Ах да, я еще забыл упомянуть, что надо сделать ее с динамическими переменными...
PM MAIL   Вверх
m0d
Дата 5.5.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



а хотя ничо не надо, всем спасибо)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.