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

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

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

 
 Ответить  Открыть новую тему 
> Удвоить кол-во элементов в строке
Анна
сообщение 15.12.2005 17:29
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.12.2005 17:44
Сообщение #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;
...

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


Гуру
*****

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

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


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

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


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


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


Бывалая
***

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

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


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


Гость






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

delete_count := 0;
...
if s[i] in del then begin { изменяешь одно действие на 2: }
delete(s,i,1); inc(delete_count);
end;
...
 К началу страницы 
+ Ответить 
Анна
сообщение 18.12.2005 13:05
Сообщение #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 
 К началу страницы 
+ Ответить 
Анна
сообщение 18.12.2005 20:27
Сообщение #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

 



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