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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2016, 20:38   #1
gleensande
Пользователь
 
Регистрация: 03.04.2016
Сообщений: 39
По умолчанию Расставить все точки над ...

Есть задача: расставить после каждого значения 'kg' в строке s3 точку, если раньше ее там не было. Почему-то, при выполнении данной программы, новая строка не выводится. Ошибок я не вижу, но явно что-то делаю не так, поэтому прошу совета знатоков (т.е. вас). Помогите, пожалуйста!
Код:
program pr5_4;
const 
  s1='.';
  s2='kg';
var
  s3: string;
  n,l: integer;
begin
  write('Enter ');
  readln(s3);
  l:=length(s3);
  while pos(s2,s3)>0 do
    begin
      n:=pos(s2,s3);
      if (n+2>l)or(s3[n+2]<>'.') then 
        begin
          insert(s1,s3,n+2); 
          l:=l+1;
        end;  
    end;
  writeln(s3);

end.
gleensande вне форума Ответить с цитированием
Старый 18.04.2016, 21:12   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

имхо, логика хромает. Вы в цикле проверяете есть ли кг в строке и если есть, то вставляете ".", но...кг то остается в строке, а, значит, цикл будет бесконечным.
Вариант:
Код:
uses crt;
var s3,st,s:string;
i:integer;
begin
clrscr;
write('ST: ');readln(st);
i:=1;
s:='';
{st:=st+'  ';}
repeat
   s:=copy(st,i,2);
   if (s='kg') and (st[i+2]<> '.') then  begin s3:=s3+s+'.'; inc(i,2) end
   else
   if (s='kg') and (st[i+2]='.') then begin s3:=s3+s+'.'; inc(i,3) end
   else begin s3:=s3+s; inc(i,2) end
until i>length(st);{-1;}
writeln(s3);
readln;
end.
Изображения
Тип файла: jpg att.jpg (91.4 Кб, 31 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.04.2016, 21:53   #3
gleensande
Пользователь
 
Регистрация: 03.04.2016
Сообщений: 39
По умолчанию

Да, затупила чутка ._. Премного благодарю)
gleensande вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Программа берет 1-ю строку из файла. Нужно удалить все точки, и каждую первую букву всех слов сделать заглавной. igrok111 Общие вопросы Delphi 5 13.10.2015 17:04
В строке заменить все многоточия (три точки «.») одними точками. philqa Общие вопросы C/C++ 3 30.11.2014 20:20
Найти все точки принадлежащие эллипсу morg4n Общие вопросы C/C++ 3 19.04.2013 11:54
Убрать все точки восстановления системы? drmorgan Win Api 10 10.08.2012 08:23
Какое наимньшее число ферзей можно расставить на доске так, чтобы они держали под бонм все свободные поля alykaa Помощь студентам 4 01.12.2010 18:48