Помогите пожалуйста...

  • Автор темы Maxxy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Maxxy

#1
Помогите пожалуйста решить проблему

Моя задача:

{ Одно из возможных представлений "длинного" текста-это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки. Используя данное представление текста написать программу,печатающую текст и ДОБАВЛЯЮЩУЮ после i-ой строки копию j-той }


А у меня в программе (ниже) выходит вот это

Одно из возможных представлений "длинного" текста-это разделить его на участки (строки) равной длины. На каждую из таких строк ссылается элемент массива, общая размерность которого d, в порядке следования строк. Если строк меньш, чем d, то последние элементы содержат пустые посылки.
Описать процедуру, которая ЗАМЕНЯЕТ i-ю строку текста j-той строкой того же текста (копией j-й строки).



Текст программы
program Prg11;
uses crt;
const d=50;
type el=^string;
ar=array[1..50] of el;
s=^ar;
var i,j:byte;
a:s;
procedure newarray(d:byte; var a:s);
var n,i:byte;
begin
new(a);
n:=0;
repeat
inc(n);
new(a^[n]);
write('st',n,'=');
readln(a^[n]^);
until (a^[n]^='')or(n=d);
for i:=n+1 to 50 do
a^:=nil;
end;
procedure main(d,i,j:byte;var a:s);
begin
if a^[j]<>nil
then begin
if i<>j then
if a^<>nil then dispose(a^);
a^:=a^[j];
end
else
a^^:='';
end;
procedure output(d,j:byte; const a:s);
var i:byte;
begin
i:=0;
repeat
inc(i);
if a^<>nil then begin
write('str',i,'=');writeln(a^^)end
else writeln('str',i,'=');
until ((i>=j)and(a^=nil)) or (i=d)
end;
begin
clrscr;
writeln('d=',d);
newarray(d,a);
Writeln('i<=',d,' j<=',d);
repeat write('i='); readln(i) until i<=d;
repeat write('j='); readln(j) until j<=d;
main(d,i,j,a);
output(d,i,a);
Writeln('PRESS ANY KEY');
readkey;
end.

Результат работы программы
1)
d=50
st1=1
st2=2
st3=3
st4=4
st5=5
st6=
i<=50 j<=50
i=2
j=1
str1=1
str2=1
str3=3
str4=4
str5=5
str6=
str7=
PRESS ANY KEY
2)
d=50
st1=modul
st2=crt
st3=pidtrymue
st4=robotu z viknamy
st5=yak
st6=z fragmentamy
st7=ekranu
st8=
i<=50 j<=50
i=2
j=15
str1=modul
str2=
str3=pidtrymue
str4=robotu z viknamy
str5=yak
str6=z fragmentamy
str7=ekranu
str8=
str9=
PRESS ANY KEY
 
D

DIR3ct0r

#2
а что не так то, вроде результат верный? 2 строка, заменена 15, т.е пустой строкой
 
M

Maxxy

#3
Мне нужно чтобы моя программа ДОБАВЛЯЛА после i-ой строки копию j-той, а не ЗАМЕНЯЛА
 
D

DIR3ct0r

#4
ну и прибавляй строку к строке
Код:
procedure main(d,i,j:byte;var a:s);
begin
if a^[j]<>nil
then begin
a^[i]^:=a^[i]^ + a^[j]^;
end
else
a^[i]^:=a^[j]^;
end;
 
M

Maxxy

#5
Спасибо чувак!java script:emoticon(':)', 'smid_3')
smilie RESPECT DIR3ct0r!java script:emoticon(':huh:', 'smid_15')
smilie
 
Статус
Закрыто для дальнейших ответов.