Преобразование массива в паскале, помогите найти ошибку

программирование программы pascal текст массивы

Помогите, пожалуйста, с задачей.
Пользователь с клавиатуры вводит некий текст, и он записывается в массив из char'ов (string по условию использовать нельзя). Среди литер текста особую роль играет знак # , появление которого означает отмену стоящей перед ним буквы, несколько знаков # означает отмену аналогичного числа букв. Создать массив заполненный текстом из первого массива с учетом роли этого знака. (ХЭ#E##НЕLO#LO = HELLO).

По моей задумке текст записывается в массив а, затем копируется в массив b. Циклом мы пробегаем по массиву b и как только доходим до # мы сдвигаем массив влево на 2 символа, тем самым удаляя # и стоящий перед ним символ.

Я написал код, но он не работает. Помогите разобраться, в чем ошибка. Заранее спасибо


Код:


const n = 80;
type symbols = array[1..n] of char;
var a,b,d:symbols; i,j:integer; c: char;

begin
writeln('Vvedite tekst: ');
i:=0;
repeat
read(c);
if (c<>chr(10))and(c<>chr(13)) then
begin
inc(i);
a[i]:=c;
end;
until (c=chr(10))or(i=N);

b:=a;

i:=1;
while (b[i]<>#0)and(i<=n) do
begin
if b[i]='#' then
begin
j:=i-1;
while (b[j]<>#0)and(i<=n) do
begin
b[j]:=a[j+2];
inc(j);
end;
i:=i-1;
end
else
inc(i);
end;

i:=1;
while (b[i]<>#0)and(i<=n) do
begin
write(b[i]);
inc(i);
end;


readln;
end.



Примечание:
2 T-Rrexx:

Если в тексте больше чем один раз встречается #, независимо от того идут ли они подряд или нет.
Ответы:
Где вываливается?
а зачем тут массив в принципе. можно получать строку и аккуратно вырезать функцией copy все нужное.
сейчас программа выглядит очень перегруженной циклами...
SKYDOS прав, ты переборшил тут явно. Все что тебе нужно, так это декрементировать индекс массива (если он больше 1) если встретился символ '#', иначе записываешь символ в массив и инкреметируешь индекс.
Как и было сказано, за один проход В цикле по всем входным символам считаем к=число встреченных #  и переприсваиваем
a[i-k]:=a[i];


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.