![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Giv |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 5 Репутация: ![]() ![]() ![]() |
Дана символьна строка, где слова разделены пробелами. Удалить из каждой группы цифр, которой не предшествует точка все начальные нули.
Вот что у меня получилось. Но эта прога удаляет и те 0, которые стоят и между цифр, а мне нужно,чтобы они оставались. Что посоветуете? Результат должен быть таким: 0.25 = 0.25; 055=55; 0055=55; 505 = 505; 500=500. У меня всё работает кроме 505=505, у меня 505=55. Кто силён, подскажите! Код Program Stroka; uses crt; type charset=set of char; const Digits:charset=['1','2','3','4','5','6','7','8','9']; nul:charset=['0']; var str: string[100]; i:integer; begin clrscr; writeln('Введите строку'); read(str); for i:=1 to length(str) do while ((str[i] in Nul) and (str[i+1] in digits)) or ((str[i] in Nul) and (str[i+1] in Nul)) do begin delete(STR,i,1); end; writeln(str); readkey; end. тут есть несколько оишбок, т.е. не ошибок, а лишних действий, но это не суть важно, они возникли в ходе написания проги и экспериментов, поэтому они мне были нужны, ну а сейчас я пока их так и оставил - это операторные скобки после while ... do и nul:charset=['0']; вместо того чтобы просто написать '0' Сообщение отредактировано: volvo - 17.12.2004 16:04 |
![]() ![]() |
GLuk |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Попробуй вот это:
Код {$B+} Program Zero_Cut; Uses Crt; Type Digits = Set Of 0..9; Const S:String = '0.205 0578200800 500 505 690 003 000.093'; Const Digs:Digits = [0,1,2,3,4,5,6,7,8,9]; Var LastPos:Byte; i:Byte; Begin ClrScr; While Pos('0',S)<>0 do begin i:=Pos('0',S); If (S[i+1]<>'.') and ((S[i-1]>'9') or (S[i-1]<'0')) and (S[i-1]<>'.') then begin Delete(S,i,1) end else begin If S[i+1]='.' then S[i]:=#255; If (S[i-1]>='0') and (S[i-1]<='9') or (S[i-1]='.') then begin While S[i]<>' ' do begin If S[i]='0' then S[i]:=#255; Inc(i); end; end; end; end; While Pos(#255,S)<>0 do S[Pos(#255,S)]:='0'; WriteLn(S); End. |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 13:58 |