Информатика, вопрос задал 666Lena , 7 лет назад

s := '123456789';
Delete ( s, 1, 2 );
n := Pos ( '6', s );
writeln ( n );
как работает эта программа
должно получится 4

Ответы на вопрос

Ответил contrlc
0

В паскале индексы строк начинаются от 1

Pos(substr, str) - функция, которая возвращает индекс первого вхождения подстроки substr в строку  

str или 0, если подстрока не найдена. Например pos('abc', '12') = 0, а  

pos('cat', 'qw cat123cat4') = 4 (q: 1-й символ w: 2-й символ пробел: 3-й символ

с: 4-й символ

Delete(str, index, count) удаляет из строки str начиная с элемента index count символов

Delete(s, 1, 2) = 3456789  

Pos('6', s) = Pos('6', '3456789') = 4

Ответил 666Lena
0
6 символов отсчитываем с конца?
Ответил contrlc
0
??
Ответил 666Lena
0
Pos('6', '3456789') = 4
Ответил contrlc
0
Pos('6', '3456789') ищет в строке '3456789' подстроку '6' 3 - 1й символ строки не равен 6; 4 - 2й символ не равен 6; 5 - 3й не равен 6; 4й!!! символ = 6 => подстрока '6' найдена в строке '3456789' и Pos возвращает индекс начала подстроки в строке т.е 4.
Ответил 666Lena
0
Спасибо)))
Ответил petyaGavrikov
0

s := '123456789'; - строковой переменной s присваивается значение

Delete ( s, 1, 2 ); - из строки s удаляется 2 символа, начиная с 1-го (значение s будет '3456789')

n := Pos ( '6', s ); - определяется номер позиции символа '6' в строке s. Этот номер равен 4

writeln ( n ); - на экран выводится значение n, т.е. 4

Новые вопросы