Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2014, 13:36   #1
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию нужно удалить все запятые между 2-мя точками

Код:
var s: string;           
    point1,point2: integer;  

begin
  ReadLn(s);                  
  point1:=pos('.',s);          
  if point1=0 then WriteLn('Точек в строке нет!')      
  else begin
    point2:=length(s);                   
    While s[point2]<>'.' do dec(point2);  
    if point2=point1 then WriteLn('В строке всего одна точка!'); 
begin
  while (s[point2]<>',') and (point2>point1) do dec(point2);
  if point1<>point2 then delete(s,point2,1);
end;
не пойму почему только одну точку удаляет а не все подскажите пожалуйста



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.02.2014 в 13:40.
Ekzamenator вне форума Ответить с цитированием
Старый 15.02.2014, 13:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так подойдёт?
Код:
var s: string;
  point1, point2: integer;

begin
  ReadLn(s);
  point1 := pos('.', s);
  if point1 = 0 then WriteLn('Точек в строке нет!')
  else begin
    point2 := length(s);
    while s[point2] <> '.' do dec(point2);
    if point2 = point1 then WriteLn('В строке всего одна точка!');
    begin
      while point2 > point1 do begin
        if s[point2] = ',' then delete(s, point2, 1);
        dec(point2);
      end;
    end;
  end;
  WriteLn(s);
end.
p.s.
поясню чуток...
у вас же условие на проверку запятой было в условие цикла вынесено.
ПОэтому цикл заканчивался или когда pont2 становилось равной point1 (это когда запятых нет между точками)
или когда встретилась запятая. Цикл в этом случае - прерывался. А это Вам не нужно было делать.

Последний раз редактировалось Serge_Bliznykov; 15.02.2014 в 13:47.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2014, 14:07   #3
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию

Круто!Огромное спасибо!!Особенно за пояснение!
Ekzamenator вне форума Ответить с цитированием
Старый 15.02.2014, 14:17   #4
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию

Сейчас попробовал сдать эту лабу, говорит что неправильно задавать таким образом
Код:
   point2 := length(s);
мол мы позицию второй точки берем за длину строки
Ekzamenator вне форума Ответить с цитированием
Старый 15.02.2014, 14:22   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Ну так Вы бы ему объяснили, что идете с конца строки в поисках точки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.02.2014, 08:40   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
нужно удалить все запятые между 2-мя точками
Что, ОПЯТЬ?!

Каждый год одна и та же задача
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс, содержающий методы вычисления расстояние между двумя точками (C# решения нужно оч!) JoyStar Помощь студентам 6 10.12.2012 15:09
Нужно удалить все пробелы из написанной строки. ISV-777 Помощь студентам 3 23.12.2010 09:37
Удалить все символы между первой и второй двокрапкой. Wild_klas Помощь студентам 3 20.11.2010 21:57
ПОЛУЧИТЬ ВСЕ СИМВОЛЫ, РАСПОЛОЖЕННЫЕ МЕЖДУ ПЕРВОЙ И ПОСЛЕДНЕЙ ТОЧКАМИ MMARKIN Паскаль, Turbo Pascal, PascalABC.NET 7 13.04.2009 09:48
Надо в RichEdit Удалить все строки между двумя пустыми Stas))) Компоненты Delphi 7 28.05.2007 16:49