Страница 1 из 2

Замена в строке в Паскале

Добавлено: 26 ноя 2008, 18:48
PCJakeD
Помогите решить задачку на паскале

Составить программу каждое слово “страна” заменить на слово “государство”. Исходный массив и результаты вывести на экран. Алгоритм вычисления оформить в виде подпрограммы Procedure.

Re: подпрограммка Procedure

Добавлено: 27 ноя 2008, 15:09
YuraPascal
Если я правельно понял, есть одномерный масив из слов. и если есть слово "страна", то его заменить на "государство"?
Я решу тебе эту задачку за 30р. Если интересно, пиши на yura30682@rambler.ru

Re: подпрограммка Procedure

Добавлено: 28 ноя 2008, 02:17
Naeel Maqsudov
YuraPascal, он не хочет видимо за 30р. Он меня попросил бесплатно. Извини.

Код: Выделить всё

procedure Replace(var S:string; What,By:string);
var
  R:string;
  p:integer;
begin
  R:='';
  repeat
    p:=pos(What,S);
    if P>1 then R:=R+copy(S,1,p-1);
    if P>0 then begin
      R:=R+By;
      delete(S,1,P+length(What)-1);
    end;
  until p=0;
  S:=R+S;
end;

вызывается процедура в цикле по исходному массиву строк:

Код: Выделить всё

Replace(MassivStrok[i],'страна','государство');

Re: подпрограммка Procedure

Добавлено: 28 ноя 2008, 02:36
PCJakeD
Что то не то, он пишет:
BEGIN expected but end of file found.
что может быть не так? Код

Re: подпрограммка Procedure

Добавлено: 28 ноя 2008, 02:39
PCJakeD
Код только тот который ты написал или еще что то надо? (просто процедуру я не знаю)

Re: подпрограммка Procedure

Добавлено: 29 ноя 2008, 15:10
Хыиуду
Сначала код процедуры
потом

Код: Выделить всё

var MassivStrok:array[1..10] of string
begin
 {Тут каким-то образом этот массив строк заполняется}
  For i:=1 to 10 do Replace(MassivStrok[i],'страна','государство'); {В этой строке он обрабатывается}
  {Тут он как-то выводится}
end.

Re: Замена в строке в Паскале

Добавлено: 30 ноя 2008, 19:25
PCJakeD
Что то я не понимаю. Если не сложно можете код написать.

Re: Замена в строке в Паскале

Добавлено: 30 ноя 2008, 20:03
Naeel Maqsudov
Дело в том, что Вы не указали никакие требования к массиву строк, не указали как он вводится. С клавиатуры, или из файла... Была бы корректно поставленная задача - было бы для нее быстрое и конкретное решение. А так мы сейчас Вам тут напишем, а что толку? Вы все равно Вы это решение потом не сдадите.
[syntax=Delphi]
{!!!сюда процедуру}
var
MassivStrok:array[1..100] of string
i,N:integer;
begin
{ввод текста}
N:=0;
writeln('Введите текст. Для завершения нажмите Enter 2 раза:');
repeat
inc(N);
readln(MassivStrok[N]);
end;
until (N=100) or (MassivStrok[N]='');
{замена}
for i:=1 to N do Replace(MassivStrok,'страна','государство');
{вывод}
for i:=1 to N do writeln(MassivStrok);
end.
[/syntax]

Re: Замена в строке в Паскале

Добавлено: 30 ноя 2008, 20:17
PCJakeD
Я утучнил, мне сказали: "Массив задать любым известным тебе способом: ввести с экрана или из внешнего файла, предварительно создав его в любом текстовом редакторе, задать генератором случайных чисел, задать как типизированную константу."

Re: Замена в строке в Паскале

Добавлено: 01 дек 2008, 14:52
Хыиуду
Ага, особенно весело надеяться, что генератор случайных чисел выдаст слово "страна". Хотя если обезьяна миллиард лет будет стучать по клавишам пишущей машинки, у нее есть шанс напечатать "Войну и Мир".