Pascal ABC. Помогите исправить ошибку в программе. - Компьютерные вопросы
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Pascal ABC. Помогите исправить ошибку в программе.

Регистрация
25 Мар 2013
Сообщения
73
Репутация
0
Спасибо
0
Монет
0
var

s:string;

c,k:integer;

b:byte;

a:char;

begin

write('Type stroke: '); readln(s);

write('Type symbol: '); readln(a);

c:=length(s);

k:=0;

for b:=1 to c do begin

if s=('a') then

k:=k+1;

end;

for b:=1 to c do begin

if s=('a') then

delete(s,b,1); end;

writeln('symbol ', a, ' is written ', k, ' times.');

write(s);

end.

Строка с ошибкой: if s=('a') then

delete(s,b,1); end;

Индекс выходит за границы массива. Заранее спасибо.
 
Регистрация
7 Июл 2013
Сообщения
82
Репутация
1
Спасибо
0
Монет
0
Во-первых, если я правильно понял, то а там должно быть без скобок и кавычек. А во-вторых, смотри какая шняга получается. Пусть ввели ааа и надо посчитать а. Ты запустил цикл от 1 до 3 И после первого прогона цикла у тебя уже осталось аа И 3-его элемента уже нет. Вывод - цикл со счетчиком тут не нужен. Впрочем, цикл тут не нужен вообще, но это уже другой подход, вряд ли твоей училке понравится.
 
Регистрация
7 Июл 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
Читайте про функцию length, сколько она возвращает. Скорее всего ошибка буквальная - у вас на опеределенной итерации выходит за пределы массива. Возможно, на последней. Еще можно протрассировать и посмотреть, что в s лежит. Ну и бонусом можно 2 цикла свести в 1, но это уже нюансы)
 
Сверху Снизу