Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строки

Автор: forMator 14.11.2006 22:18

У меня снова возник вопрос!
Дан текст. Слова разделены пробелом. В третьем слове каждую букву заменить на +.
Как сделать чтобы именно в третьем слове заменялись буквы?
И как заменить каждую буквы?
Я могу заменить только определённую букву.
Подскажите пожалуйста!

Автор: klem4 14.11.2006 22:31

Когда покажешь как ты разбиываешь строку на слова, можно будет беседовать дальше. Если кидаешь слова в массив, это одно, если разбиваешь "на ходу" другое ... Хотя принцип похож естественно, определяешь каждое третье слово (в массиве простым циклом через 2), если на ходу разворачиваешь, то счетчик делай, и провепку if count mod 3 = 0 then это очередное нужное слово

Автор: forMator 14.11.2006 23:12

Вот так:

Код

Program project;
Var s:string;i:integer;
begin
writeln('stroka=');
readln(s);
i:=1;
while i<=length(s) do
if copy(s,i,1)='d' then begin
s[i]:='n';i:=i+1;
end else i:=i+1;
writeln('s=',s);
readln;
end.

Замена одной буквы во всей строке.

Автор: мисс_граффити 14.11.2006 23:18

и при чем здесь такая замена?
тебе надо разбить строку на слова, то есть выделить отдельные слова. как ты ЭТО делаешь?

Автор: forMator 17.11.2006 2:33

Вот так я нахожу третье слово. А как заменить все буквы на один символ?

Код

Program stroka_1;
Var s:string;
i,p:integer;
begin
writeln('vvedi tekct:');
readln(s);
s:=s+' ';
p:=0;i:=1;
while (i<=length(s)) and (p<2) do
begin
if s[i]=' ' then p:=p+1;
i:=i+1;
end;
if p=2 then begin
while (i<=length(s)) and (s[i]<>' ') do begin
if ??????

else writeln('в тексте меньше 3-х слов');
readln;
end.

p-количесиво пробелов в тексте. Подскажите пожалуйста!

Автор: forMator 19.11.2006 18:33

Если я пишу просто после BEGIN'а и без IF вместо ??:

Код

s[i]:='a'

Он ничего не изменяет!
Подскажите PLEASE!

Автор: klem4 19.11.2006 19:09

Цитата
Дан текст. Слова разделены пробелом. В третьем слове каждую букву заменить на +.


Если в строке не менее 3-х слов и разделяются они _одним_ пробелом.


var
s: String;
p: Integer;
begin
readln(s);
p := Pos(' ', s) + Pos(' ', Copy(s, Pos(' ', Copy(s, Pos(' ', s), 255)), 255)) + 1;
while (p <> Length(s)) and (s[p] <> ' ') do begin
s[p] := '+';
inc(p);
end;
writeln(s);
end.

crazy.gif

Автор: forMator 20.11.2006 0:43

СПАСИБО!!!!