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

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

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

> Удвоить кол-во элементов в строке
сообщение
Сообщение #1


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


Задание:
Удалить все цифры и удвоить символы '+','-','*','/'. Вывести получившуюся строку и кол-во удалённых символов.

Вот, что получилось:

uses crt;
const dva = ['+','-','*','/'];
del = ['0'..'9'];
var
s : string;
t, i : byte;
begin
clrscr;
write ('Enter String: ');
readln(s);
i:=1;
while (i<=length(s)) do begin

if s[i] in del then delete(s,i,1) else inc(i); end;
if s[i] in dva then begin
for t := length(s)+1 downto i-1 do s[i] := s[i-1] ;
s[i+1] := s[i]; inc(i) end;


writeln (s); readln;
end.


Цифры удаляет, а вот знаки не дублирует sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
сообщение
Сообщение #2


Гость






А если вот так:
...
i:=1;

while (i<=length(s)) do
if s[i] in del then delete(s,i,1)
else begin
if s[i] in dva then begin
insert(s[i], s, i);
inc(i);
end;
inc(i);
end;
...

?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

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

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


Когда удаляешь символ,
то меняется
1. длина строки
2. номер текущего символа уменьшается на один
у тебя это не отрабатывается
Лучше не i+1, а Insert

Volvo, ты вообще уходишь отсюда? rolleyes.gif


klem4 :
Это что за провокации ?
Он сам решит что ему делать без твоих подсказок.


Сообщение отредактировано: klem4 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


Блин, не могу понять, как включить счётчик на удалённые элементы? sad.gif sad.gif sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Если использовала мою подсказку, то вот так:

delete_count := 0;
...
if s[i] in del then begin { изменяешь одно действие на 2: }
delete(s,i,1); inc(delete_count);
end;
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


Вот, что получилось, отказывается работать sad.gif, блин столько уже всего перепробовала ...:

uses crt;

const dva = ['+','-','*','/'];

del = ['0'..'9'];

var

s : string;

i, j : integer;

begin

clrscr;

write ('Enter String: ');

readln(s);

i:=1;
j:=0;


while (i<=length(s)) do

if s[i] in del then begin delete(s,i,1); inc (j); end;


if s[i] in dva then begin

insert(s[i], s, i);

inc(i);

end;

inc(i);




writeln (s); readln;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


Разобралась ...

                     uses crt;

const dva = ['+','-','*','/'];

del = ['0'..'9'];

var

s : string;

g, i : integer;

begin

clrscr;

write ('Enter String: ');

readln(s);
g:=0;
i:=1;


while (i<=length(s)) do begin
if s[i] in del then inc(G);
if s[i] in del then delete(s,i,1)

else begin

if s[i] in dva then begin

insert(s[i], s, i);

inc(i);

end;

inc(i);

end;
end;

writeln (s);
writeln (g);
readln;

end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 9.09.2025 3:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name