Информатика, опубликовано 2018-08-22 23:27:03 by Гость

Функция для определения позиции буквы в слове ,не могу найти ошибку.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.

Ответ оставил Гость

Ошибок тут больше одной.
Во-первых, в операторе вывода стоит вызов функции 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    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, производящая поиск подстроки в строке...

Не нашли ответа?
Если вы не нашли ответа на свой вопрос, или сомневаетесь в его правильности, то можете воспользоваться формой ниже и уточнить решение. Или воспользуйтесь формой поиска и найдите похожие ответы по предмету Информатика.

Форма вопроса доступна на полной версии этой страницы.