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

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

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

 
Closed Topic Открыть новую тему 
> Процедура, извлечение цифр сс стринга
сообщение
Сообщение #1


Пионер
**

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

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


Код
Создать процедуру(желательно) которая будет извлекать цифры из заданого символьного ряда.

Вот такое нужно сделать.
Program notNumeral;
uses crt;
Var f1,f2: text;
st,fname: string;
Function notnum(st:string):string;
Var i:byte;
num: set of char;
begin
num:=['0','1','2','3','4','5','6','7','8','9'];
For i:=1 to length(st) do
If st[i] in num then delete(st,POS(st[i],ST),1);
notnum:=st
end;

Begin
Writeln('Vvedit rad');
Readln(st);
Writeln(notnum(st));
readln;
End.

Вот такое я реализовал.
Но как мне лучше обойти delete() ? или как его правильно использовать? А то он, помоему и не работает верно. good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

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

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



i :=1;
while(i<=length(s)) do begin
while not(s[i] in num) do inc(i);
if i<=length(s) then begin
back := i;
while(i<=length(s)) and (s[i] in num) do inc(i);
writeln(copy(s,back,i-back));
end;
end;



ничего не напоминает ? wink.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Alex7, а вот судить о том, правильно или неправильно программа работает, можно будет только тогда, когда ты приведешь пример входных и выходных значений (при такой формулировке задания...)

Я по-моему тебе уже про это говорил...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


Цитата

ничего не напоминает ? wink.gif

Абсолютно.
А должно чтото напоминать? Не вижу в этом цикле ничего связанного с моей задачей!? wacko.gif nea.gif

Цитата
судить о том, правильно или неправильно программа работает, можно будет только тогда, когда ты приведешь пример входных и выходных значений (при такой формулировке задания...)

Да при любом вводе, она неправильно удаляет! хоть ты как комбинируй сочетания цифр и других символов!
Цитата
Я по-моему тебе уже про это говорил...

Может у меня и склероз, но не припоминаю ;)

Так вобщем, если посмотрет, то что в моей задаче должна делать процедура delete? И как правильно ее написать?
Ведь должна то она удалять из стринга символ, который входит в множество num !
wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Вот и приведи пример того, что ты вводишь, и того, что желаешь получить !!!

А вообще задача удаления всех цифр из введенной строки (извлечение - может быть по другому понято) делается так:
function no_numeric(s: string): string;
const
digits: string = '0123456789';
var i: integer;
begin
i := 1;
while i <= length(s) do
if pos(s[i], digits) > 0 then delete(s, i, 1)
else inc(i);

no_numeric := s
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

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

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


Блин, я тя тоже порой не понимаю, volvo.
Я ж сказал, что нужно сделать процедуру, которая должна удалять все цифровае символы из стринга(значит олучить мы должны стринг)!
Ввод:
Код
fj654fhj65fhj dfh6j54dg td78 4d6fh5j 6578 dh652dg1hjk9t871hjdg76h

Преобразованый стринг:
Код
fjfhjfhj dfhjdg td dfhj  dhdghjkthjdgh

вот и всё, чо ту непонятного?

Function notnum(st:string):string;
Var i:byte;
num: set of char;
begin
num:=['0','1','2','3','4','5','6','7','8','9'];
For i:=1 to length(st) do
If st[i] in num then delete(st,POS(st[i],ST),1);
notnum:=st
end;

Вот тут, в функции, должно это все реализоваваться, но оно не работает! Я не вижу ошибки! А хочу понять почему не работает!
Ведь
If st[i] in num then delete(st,POS(st[i],ST),1);
тут delete должен работать?!
А оно мне выдает ваще левую строчку в результате! mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

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

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


Цитата
удалять все цифровае символы из стринга(значит олучить мы должны стринг)!


а ты что получаешь ? Integer ? Extended ?

рашается это вот так :


i := 1;
while(i<=length(s)) do
if s[i] in num then delete(s,i,1)
else
inc(i);


Volvo сделал это в 5-том посте, а теперь сравни с тем что выложил ты ! Тебе дали работующую программк ? Зачемы было ее меньть ?! Тут НЕЕЛЬЗЯ пользоваться циклом FOR так как при удалении элемента длина строки меняется и смволы сдвигаются !

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
Блин, я тя тоже порой не понимаю, volvo.

А вот теперь иди и читай первый пост !!! mad.gif Ты что, считаешь, что УДАЛЯТЬ и ИЗВЛЕКАТЬ это синонимы? Тогда иди и учи русский язык! Прежде, чем браться за задание, нужно его сформулировать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

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

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


Закрыто, за исчерпанностью вопроса, задача решена в 5-м посте.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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