Индекс находился вне границ массива (Строки)

program P5;

var
  S: string;
  i, j, k: integer;

begin
  writeln('Введите строку символов:');
  readln(S);
  i := 0;
  for j:= 0 to length(S) do
  begin
    if S[j] = 'A'
    then
          begin
            i := i + 1;
            S[j] := '*';
          end;        

    if S[j] = 'B'
    then
          begin
            delete(S, j, 1);
          end;
  end;
  writeln('Количество символов А = ', i);  
  writeln(S);

end.

Без данного куска работает но он нужен

    if S[j] = 'B'
    then
          begin
            delete(S, j, 1);
          end;

Ответы (1 шт):

Автор решения: Flashdim
program P5;

var
  S: string;
  i, j, k: integer;

begin
  writeln('Введите строку символов:');
  readln(S);
  i := 0;
  j:=1;
  while j<=length(S) do
  begin
    if S[j] = 'A'
    then
          begin
            i := i + 1;
            S[j] := '*';
            j:= j+1;
          end        

    else if S[j] = 'B'
    then
          begin
            delete(S, j, 1);
          end;
  end;
  writeln('Количество символов А = ', i);  
  writeln(S);

end.

Я изменил цикл for на цикл while, чтобы можно было изменять переменную и вместо второго if написал else if , чтобы он не выходил за рамки строки

→ Ссылка