Задать вопрос
13 ноября, 13:47

Функция для определения позиции буквы в слове, не могу найти ошибку.

var slovo : string;

i : integer;

function ups (var s : string; ch : char) : integer;

var i, n : integer;

begin

for i:=1 to length (s) do

if s[i]=ch then n:=i

else n:=0;

ups:=n;

end;

begin

writeln ('vvedite slovo') ;

readln (slovo) ; writeln ('N = ', ups (slovo, a)) ;

end.

+1
Ответы (1)
  1. 13 ноября, 16:40
    0
    Ошибок тут больше одной.

    Во-первых, в операторе вывода стоит вызов функции ups, которой в качестве второго аргумента передается неизвестная переменная a. Если имелся в виду символ "а", его надо было заключить в одинарные кавычки.

    Во-вторых, в теле функции ups определяется значение n в цикле. Даже, если искомый символ найден и n получит значение позиции этого символа в слове, то если слово просмотрено не полностью, следующий же проход по циклу снова сбросит n в ноль. Следовательно, эта функция будет выдавать верный результат только если искомая буква - последняя в слове.

    var

    slovo: string;

    i: integer;

    function ups (var s: string; ch: char) : integer;

    var

    i, n: integer;

    begin

    i:=1;

    n:=0;

    while (i<=length (s)) and (n=0) do

    begin

    if s[i] = ch then n : = i;

    i:=i+1

    end;

    ups:=n

    end;

    begin

    writeln ('vvedite slovo') ;

    readln (slovo) ; writeln ('N = ', ups (slovo, 'a')) ;

    end.

    Замечание: в языке Паскаль имеется функция Pos, производящая поиск подстроки в строке ...
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Функция для определения позиции буквы в слове, не могу найти ошибку. var slovo : string; i : integer; function ups (var s : string; ch : ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы