Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка на строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Kreaman
Здравствуйте, уважаемые форумчане....У меня вот проблемка, я уже раза завалил экзамен по программированию, никак не получается у меня с массивами и строками...

Кто может пожалуйста напишете решение....заранее очень благодарен)...

2. Сделать программу.
Ввести строку. Заменить все знаки умножения "*" знаком процента "%". Если знака умножения нет, то вывести об этом сообщение.
Michael_Rybak
посмотри в справке функцию pos.
Yevgeny
Program stroka;
Uses max_crt;
Var
str:string;
res:boolean;
Function Poisk(var s:string):boolean;
Var
i:integer;
l:boolean;
Begin
i:=1;
l:=false;
While i <= length(s) do
Begin
if s[i]='*' then
Begin
s[i]:='%';
l:=true;
end;
i:=i+1;
end;
poisk:=l;
end;

Begin
clrscr;
Write('vvedite stroky:'); Readln(str);
Writeln('isxodnaya: ',str);
res:=poisk(str);
if res then Writeln('===',str) else Writeln('false');
readln;
End.

а вот только не понимаю, а pos то тут зачем? тут же нужно одновременно и заменять символ, если он "*", а не просто проверять наличие хотя бы одной звёздочки... Может кто-нить пояснит, если не трудно, плиз!
volvo
Цитата
Может кто-нить пояснит
Сравни со своим кодом:
var
s: string;
p, count: integer;

begin
s := 'start*finish*begin*end';
count := 0; { <--- счетчик замененных символов }
repeat
p := pos('*', s); { <--- находим позицию звездочки }
if p > 0 then begin { если звездочка есть, (p <> 0) то }
s[p] := '%'; inc(count);
{ заменяем соответствующий символ на процент }
{ и увеличиваем счетчик произведенных замен }
end;
until p = 0; { выполнять, пока звездочка будет находиться функцией pos }

if count = 0 then writeln('false') { <--- Замен не было? Значит, не было звездочек }
else writeln(s);
end.

Yevgeny
Спасибо, volvo, так это получается, что при каждом обращении к функции pos в p записывается новый номер, причём больше, чем предыдущий? То есть идёт автоматический переход по стороке к новой звёздочке? А я думал, что если найдёт, то обращайся - не обращайся, всё равно там и останется!!!
volvo
Комментарии добавлены...
Yevgeny
Спасибо, volvo, ещё раз, я что-то ступил на счёт счётчика... Исправил, но видимо поздно, за то теперь всё понятно smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.