Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка на строки
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.