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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2022, 22:22   #1
AchtungPanzer
Пользователь
 
Регистрация: 26.03.2022
Сообщений: 13
Восклицание Строка

Дана строка. Преобразовать ее, заменив точками все двоеточия (, встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки, встречающиеся среди символов, стоящих после n/2 символов. Это нужно сделать на Delphi.
AchtungPanzer вне форума Ответить с цитированием
Старый 22.04.2022, 22:27   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
if s[i]=replace then s[i]:='.';
if i = n/2 then replace:='!';
macomics вне форума Ответить с цитированием
Старый 22.04.2022, 22:29   #3
AchtungPanzer
Пользователь
 
Регистрация: 26.03.2022
Сообщений: 13
По умолчанию

Можно пожалуйста полный код, а то я не знаю как это делать
AchtungPanzer вне форума Ответить с цитированием
Старый 22.04.2022, 22:35   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
p := '.';
r := ':';
for i := 1 to n / 2 to if s[i] = r then s[i] := p;
l := Length(s);
r := '!';
for i := n / 2 + 1 to l do if s[i] = r then s[i] := p;
Это все. в шаблон сами добавьте. Ввод/вывод тоже сами.
macomics вне форума Ответить с цитированием
Старый 22.04.2022, 22:38   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Код целиком:
Код:
uses
  SysUtils;

var
  n, n2: integer;
  s: string;
begin
  n := 10;
  s := 'a:b:c:d:e:f:g:h:i';
  writeln(s);
  n2 := n div 2;
  s := StringReplace(copy(s, 1, n2), ':', '.', [rfReplaceAll]) +
       StringReplace(copy(s, n2 + 1, length(s) - n2), ':', '!', [rfReplaceAll]);
  writeln(s);
  readln;
end.
Arigato вне форума Ответить с цитированием
Старый 22.04.2022, 22:49   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
  s := StringReplace(copy(s, 1, n2), ':', '.', [rfReplaceAll]) +
       StringReplace(copy(s, n2 + 1, length(s) - n2), ':', '!', [rfReplaceAll]);
Потом удивляешься, почему современным программам на те же действия не хватает уже 4 Гб памяти.
macomics вне форума Ответить с цитированием
Старый 24.04.2022, 07:28   #7
AchtungPanzer
Пользователь
 
Регистрация: 26.03.2022
Сообщений: 13
По умолчанию

А через какие объекты можно ввести переменную s, когда нужно без write(ln)?
AchtungPanzer вне форума Ответить с цитированием
Старый 24.04.2022, 11:29   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Вопрос вопросов...
А что, если набраться храбрости и завести Memo, в который и влохматить анальнизируемую строку?
s := Memo1.Text ;
Вроде для этого оно и существует.
А вообще я написал бы смешнее:
Код:
type
  R = record
     case Vrnt : byte of
       0:  ( ii : array [0..99] of byte);
       1 : ( ss : string[100]);
   end;
var
  Form1: TForm1;
  str: R ;
........................
procedure TForm1.Button1Click(Sender: TObject);
var i,n,n2:integer;
begin
  str.ss := Edit1.Text ;
  n := str.ii[0];
  n2 := n div  2 ;
  for i := 1 to n do
     if ( (str.ss[i]=':') and (i <= n2) ) or  ( (str.ss[i]='!') and (i > n2) )
         then str.ii[i] := Ord('.')  ;
  Edit1.Text := str.ss ;
end;

Последний раз редактировалось digitalis; 24.04.2022 в 14:32.
digitalis вне форума Ответить с цитированием
Старый 25.04.2022, 01:46   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А вообще я написал бы смешнее:
А где тут смеяться?
northener вне форума Ответить с цитированием
Старый 25.04.2022, 10:59   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Ну не знаю... Я это писал как бы в шутку. record для простейшей задачи. Зато - никаких StringReplace. И работает, наверно, на пару мкс быстрее
digitalis вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[VBA] Сформировать матрицу, у которой первая строка – произвольные числа, вторая строка - квадраты этих чисел, третья строка - кубы этих чисел и т.д. SkyGir Помощь студентам 5 24.05.2019 17:04
кодированая строка XXX сертификат = некодированая строка ArtGrek Безопасность, Шифрование 36 21.02.2017 14:09
VBA Excel - : Лекарства "Метокард" (строка 5) и "Карвидил" (строка 6) при нажатии появляются 2 раз. Что надо делать? omonulla1986 Microsoft Office Excel 7 04.12.2016 16:49
строка string и строка char Petyu Общие вопросы C/C++ 3 16.05.2013 00:26
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32