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

Тема в разделе "Delphi - FAQ", создана пользователем Maxxy, 6 июн 2007.

Статус темы:
Закрыта.
  1. Maxxy

    Maxxy Гость

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

    Моя задача:

    { Одно из возможных представлений "длинного" текста-это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки. Используя данное представление текста написать программу,печатающую текст и ДОБАВЛЯЮЩУЮ после 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
     
  2. DIR3ct0r

    DIR3ct0r Гость

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

    Maxxy Гость

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

    DIR3ct0r Гость

    ну и прибавляй строку к строке
    Код (Text):
    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;
     
  5. Maxxy

    Maxxy Гость

    Спасибо чувак!java script:emoticon(':)', 'smid_3')
    smilie RESPECT DIR3ct0r!java script:emoticon(':huh:', 'smid_15')
    smilie
     
Загрузка...
Похожие Темы - Помогите пожалуйста
  1. limbra
    Ответов:
    3
    Просмотров:
    52
  2. uxbmw3w
    Ответов:
    0
    Просмотров:
    73
  3. GREED
    Ответов:
    1
    Просмотров:
    544
  4. Рая
    Ответов:
    3
    Просмотров:
    791
  5. sonia2000
    Ответов:
    0
    Просмотров:
    964
Статус темы:
Закрыта.

Поделиться этой страницей