![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
el'va |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: ![]() ![]() ![]() |
Добрый вечер.
Надо не используя стандартных методов обработки строк, убрать из строки повторяющиеся символы(оставить по одному вхождению), можно новую строку записывать в новую переменную. Помогите пожалуйста в понедельник уже надо сдать. На форуме есть примеры только с использованием стандартных методов паскаля, а надо без них( Заранее спасибо. |
samec |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
вот, может быть не самый оптимальный вариант, но работающий:
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.
|
Artem001 |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: ![]() ![]() ![]() |
прошу помогите с задачей) короче требуеться вот это "Ввести текст и определить количество слов, у которых первая и последняя буквы в слове - одинаковы. Вывести эти слова. Затем из исходного текста удалить эти слова." сделал так но не многу сделать чтоб слово удалялось(
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. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Artem001, вообще-то мог бы открыть и новую тему, а не лезть в чужую...
Специально для такого класса задач, где надо удалять слова из исходной строки по некоторому условию, я сделал вот этот способ разбиения на слова: Разбиение на слова. Все способы. (именно тот, на который ведет ссылка!!!) После разбиения в массиве хранятся позиции и длины слов (а не сами слова), и зная их, можно 1) определить, подходит ли слово под твой критерий; 2) удалить его, если нужно простой процедурой Delete, ничего не надо пересчитывать еще раз, все данные уже хранятся в массиве... |
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 13:02 |