Помощь - Поиск - Пользователи - Календарь
Полная версия: строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
dinni
помогите пожалуйста решить задачку..!
Дана строка символов, среди которых есть двоеточие (smile.gif. Определить, сколько символов ему предшествует.
я уже составила прогаммку, но ищу ошибку, помогите мне пожалуйста!!!

var s:string;
i,k:integer;
begin
s:='123:56778';(вводим любое выражение , которое сордержит smile.gif
for i:=1 to length(s) do begin
k:=0; if (s[i]:=':') then (k:=i-1);
writeln('k=',k);readln;
end;end.

volvo
А чего циклом?
Pos(':', s) использовать нельзя?
dinni
pos использовать нельзя, ошибка должна быть в условном операторе у меня: я не понимаю, как мне определить число символов, предшествующих двоеточию
klem4
ну так сделай свой Pos под задание smile.gif


function _Pos(ch: char; const s: String): Integer;
var
i: Integer;
begin
i := 1;
while (i <= Length(s)) and (s[i] <> ch) do inc(i);
if i > Length(s) then _Pos := 0
else _Pos := i;
end;

var
s: String;
p: Integer;
begin
s := '12:345678';
p := _Pos(':', s);
if p = 0 then writeln('No')
else writeln(p - 1);
end.
volvo
dinni, немного подправляем твой код:
var
s:string;
i,k:integer;
begin
s:='123:56778';
k:=0; { <--- Это - перед циклом, а не внутри }
for i:=1 to length(s) do begin
if (s[i]=':') then k := i-1; { <--- После s[i] не ":=" а просто "=" Скобки тоже не нужны }
end;
writeln('k=',k); readln;
end.


Только учти, что если в строке будет несколько ":", то будет выведено число символов перед ПОСЛЕДНИМ из них... smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.