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

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

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

 
 Ответить  Открыть новую тему 
> В строке из группы цифр удалить нули.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5

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


Дана символьна строка, где слова разделены пробелами. Удалить из каждой группы цифр, которой не предшествует точка все начальные нули.


Вот что у меня получилось. Но эта прога удаляет и те 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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


Попробуй вот это:

Код

{$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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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