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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 17:17   #1
V1rus.25
Пользователь
 
Аватар для V1rus.25
 
Регистрация: 09.04.2012
Сообщений: 62
Смущение (Рядковий),строчечный тип данных.

Дан ряд слов, который имеет слово CHILD, нужно в этом ряде заменить его на CHILDREN, а другие слова оставить без изменения.
Используя (рядковий),строчечный тип данных.
V1rus.25 вне форума Ответить с цитированием
Старый 24.04.2012, 17:24   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
procedure replace(var s: string; in1, out1: string);
var
  s1: string;
  i, j: word;
begin
  if pos(in1, s) <> 0 then
  begin
    s1 := '';
    i := 1;
    j := pos(in1, s) - 1;
    repeat
      s1 := s1 + copy(s, i, j - i + 1) + out1;
      i := pos(in1, s);
      delete(s, pos(in1, s), length(in1));
      j := pos(in1, s) - 1;
    until pos(in1, s) = 0;
    s1 := s1 + copy(s, i, length(s) - i + 1);
    s := s1;
  end;
end;
Процедура замены, которую я писал для Дельфи.
Но, по идее, если выходная строка будет короче 255 символов, то все будет нормально.
Вызывать: replace(s,'CHILD','CHILDREN');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.04.2012, 17:24   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

а что то типа
Код:
ReadLn (str);
if pos ('CHILD', str) <> 0 then
begin
   Insert ('REN', str, pos('CHILD', str) + Length('CHILD'));
end;
не пробовали?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 24.04.2012, 21:52   #4
V1rus.25
Пользователь
 
Аватар для V1rus.25
 
Регистрация: 09.04.2012
Сообщений: 62
По умолчанию ???

А можно как-то по подробней???:co nfused:
V1rus.25 вне форума Ответить с цитированием
Старый 24.04.2012, 23:24   #5
Николай ПН
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 75
По умолчанию

Вот весь листинг:
Код:
program replace;

uses Crt;

var

name, new_name: string
str: string;

begin
ClrScr;
Write('Напишите строку:  ');
ReadLn(str);
Write('Хотите слово: ');
ReadLn(name);
Write('Заменить на: ');
ReadLn(new_name);

repeat
if(pos(name, str)<>0) then
begin
insert(new_name, str, pos(name, str)+length(name));
Delete(str, pos(name, str), length(name));
end;

until pos(name, str)=0;
WriteLn(str);
end.
Только в этом коде одна проблемка: Так как тип string представляет собой строку длиной до 255 символов. То с помощью этой программы можно меня не только слово, но и часть его, либо символы.

к примеру:
Если введешь строку: hello
А когда попросят заменить слово, напишешь: l
И заменишь на слово: 5
То в результате получишь he55o.

Последний раз редактировалось Николай ПН; 24.04.2012 в 23:27.
Николай ПН вне форума Ответить с цитированием
Старый 25.04.2012, 00:34   #6
V1rus.25
Пользователь
 
Аватар для V1rus.25
 
Регистрация: 09.04.2012
Сообщений: 62
По умолчанию

Оно должно сразу менять слово без предложения замены на:.....
Например: hello child compile child
Результат: hello children compile children
V1rus.25 вне форума Ответить с цитированием
Старый 25.04.2012, 00:43   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Предложение оканчивается точкой, ищет только CHILD, написанный большими буквами:
Код:
uses
  crt;

var
  s, a: string;
  c: char;

begin
  a := '';
  repeat
    read(c);
    while (c <> '.') and (c <> ' ') do
    begin
      s := s + c;
      read(c);
    end;
    if s <> '' then
      if s = 'CHILD' then
        write(a, 'CHILDREN')
      else
        write(a, s); 
    s := '';
    a := ' ';
  until c = '.'; 
  if s <> '' then
    if s = 'CHILD' then
      write(a, 'CHILDREN')
    else
      write(a, s);
  writeln;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.04.2012, 00:48   #8
V1rus.25
Пользователь
 
Аватар для V1rus.25
 
Регистрация: 09.04.2012
Сообщений: 62
По умолчанию

Нужно обязательно через (Рядковий),строчечный тип данных.
V1rus.25 вне форума Ответить с цитированием
Старый 25.04.2012, 01:17   #9
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Тролль?
Написали же:
Код:
var
s:string;
begin
ReadLn (s);
while pos ('CHILD', s) <> 0 do
   Insert ('REN', s, pos('CHILD', s) + Length('CHILD'));
end.
string это тебе не "строчечный" чтоли? Откуда ты такие термины выкопал "строчечный" "рядковий"?
temaps вне форума Ответить с цитированием
Старый 25.04.2012, 01:24   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

temaps, насчет того, что написали уже код, согласен.
Насчет "выкапывания" терминов, это просто украинский язык, имхо.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип данных Виктория7777 БД в Delphi 8 22.08.2011 16:12
Тип данных в С++ Mashul'ka Помощь студентам 3 29.03.2011 20:53
Тип данных Марк Охман БД в Delphi 4 27.09.2010 15:40
Тип данных _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 15 12.09.2010 14:14
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55