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

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

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

 
 Ответить  Открыть новую тему 
> Удалить повторы в строке, Легкая задачка на строки
el'va
сообщение 13.12.2008 17:37
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Добрый вечер.

Надо не используя стандартных методов обработки строк, убрать из строки повторяющиеся символы(оставить по одному вхождению), можно новую строку записывать в новую переменную.

Помогите пожалуйста в понедельник уже надо сдать. На форуме есть примеры только с использованием стандартных методов паскаля, а надо без них(
Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
samec
сообщение 13.12.2008 21:45
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


вот, может быть не самый оптимальный вариант, но работающий:

program lab;

var
s:string;
i,j,k,kol:integer;
begin
readln(s);
kol:=1;
while(s[kol]<>#0) do inc(kol);
dec(kol);
i:=1;
while (i<=kol) do
begin
j:=i+1;
while (j <= kol) do
if s[i]=s[j] then
begin
for k:=j to kol do
s[k]:=s[k+1];
dec(kol);
end
else
inc(j);
inc(i);
end;
writeln(s);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artem001
сообщение 17.12.2008 20:01
Сообщение #3





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


прошу помогите с задачей) короче требуеться вот это "Ввести текст и определить количество слов, у которых первая и последняя буквы в слове - одинаковы. Вывести эти слова. Затем из исходного текста удалить эти слова." сделал так но не многу сделать чтоб слово удалялось(
Uses crt;
var t1,t2:array[1..225] of char;
mn: set of char;
kol, i,sl, kb,j,k: integer;
begin
ClrScr;
mn:=[' ','.',',',':',';'];
writeln('vvedite tekst');
i:=0;
repeat
inc(i);
read(t1[i]);
until (t1[i]='.');
kol:=i;
kb:=0;
k:=0;
for i:=1 to kol do
if not (t1[i] in mn) then inc(kb)
else
begin
if kb>0 then
begin
if t1[i-1]=t1[i-kb] then
for j:=i-kb to i do
begin
inc(k);
t2[k]:=t1[j];

end;
kb:=0;
inc(sl);
end;
end;
writeln('kol-vo slov ',sl);
for i:=1 to k do
write(t2[i]);
writeln;
for i:=1 to kol do
write(t1[i]);

readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.12.2008 20:10
Сообщение #4


Гость






Artem001, вообще-то мог бы открыть и новую тему, а не лезть в чужую...

Специально для такого класса задач, где надо удалять слова из исходной строки по некоторому условию, я сделал вот этот способ разбиения на слова: Разбиение на слова. Все способы. (именно тот, на который ведет ссылка!!!) После разбиения в массиве хранятся позиции и длины слов (а не сами слова), и зная их, можно
1) определить, подходит ли слово под твой критерий;
2) удалить его, если нужно простой процедурой Delete, ничего не надо пересчитывать еще раз, все данные уже хранятся в массиве...
 К началу страницы 
+ Ответить 

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

 



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