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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2017, 10:50   #1
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию Как удалить элемент в строке?

Здравствуйте, задание было такое:
В строке удалить символ «двоеточие» ( : ) и подсчитать количество замен.
Я сделала программу, она работает, но я сделала так, чтобы программа просто скрыла двоеточие, а не удалила, не подскажите, как все же удалить? Заранее спасибо за помощь !


Код:
program p1; 
 
var s:string[30]; 
 n,i:integer; 
 begin 
 writeln('введите текст'); 
 readln(s); 
 n:=0; 
 for i:=1 to length(s) do 
 begin 
 if s[i]=':' then 
 s[i]:=' '; 
 writeln(''); 
 writeln(s); 
 if s[i]=' ' then n:=n+1; 
 
 write('количество замен = ', n) 
 end; 
end.
kris14 вне форума Ответить с цитированием
Старый 02.11.2017, 11:09   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от kris14 Посмотреть сообщение
не подскажите, как все же удалить?
если не запрещено использовать стандартные функции, то это легко делается через процедуру Delete():

Код:
program p1; 
 
var 
  s:string; 
  n,i:integer; 
begin 
    writeln('введите текст'); 
    readln(s); 
    n:=0; 
    for i:=length(s) downto 1  do 
       if s[i]=':' then begin
          Inc(n); 
          Delete(s, i, 1);
       end;
 
   writeLn('количество замен = ', n);
   writeLn('строка после удаления: ', s)
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2017, 11:18   #3
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Спасибо большое! А если без неё?)
kris14 вне форума Ответить с цитированием
Старый 02.11.2017, 11:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от kris14 Посмотреть сообщение
Спасибо большое! А если без неё?)
два варианта.
1) использовать дополнительную строчку, куда переписывать все символы, кроме ':'

2) реализовать процедуру удаления, рассматривая строчку как массив данных.
для этого нужно сделать цикл и в нём переписывать все символы, которые стоят после удаляемого на его место.
Кроме того, будет небольшая проблема с уменьшением длины строки. Тут уже зависит от компилятора Паскаля. В некоторых длина строки хранится в нулевом байте и достаточно его изменить. В некоторых можно для этого использовать функцию SetLength().
Ну и ещё можно длину строки не трогать, но тогда написать свою процедуру вывода строки на экран.
Тут всё зависит от поставленной задачи и ограничений.

Ну и последнее. Задачи, где что-то запрещено использовать - всегда ущербны. Они придуманы, чтобы чему-то научить, но часто, для их выполнения приходится чесать правое ухо левой рукой через спину - это криво и неудобно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2017, 11:35   #5
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Спасибо огромное!
kris14 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С,С++, как удалить элемент списка? Алексей_2012 Помощь студентам 5 11.06.2015 10:38
как удалить n-ый элемент вектора? Tiva Помощь студентам 1 09.11.2012 20:28
Как удалить элемент массива? БалаШагаЛ PHP 1 28.01.2012 20:46
Как удалить\добавить элемент массива с++ Sanu0074 Помощь студентам 3 15.06.2010 11:53
Как удалить, определённый элемент из стринггрида? Lenux Помощь студентам 3 14.03.2010 18:57