singlepost

Pascal (указатели) << На главную или назад  

всем привет!

тескт задачи:
объявить массив вещественных чисел м исп дин памяти. Сформировать массив и вывести. найти мин и макс. Переписать все элементы данного массива, находящиеся в найденном промежутке, в другой дин массив, повторяя каждый элемент дважды.

вот полный код задачи:

http://codespace.awardspace.com/index.php?id=bbWv5Dc...

проблема у меня возникает при записи в другой массив.
не записывается каждый элемент дважды, что сделать?

6 ответов в теме “Pascal (указатели)”

  1. 1
    Павел Потапов ответил:

    Надо

    > for i:=y to x do
    > for j:=1 to m do
    > begin
    > mas2^[j]:=mas^[i];
    > mas2^[j+1]:=mas^[i];
    > inc(i);
    > end;

    заменить на что-то вроде

    j: = 1;
    for i:=y to x do
    begin
    mas2^[j] := mas^[i];
    mas2^[j + 1] := mas^[i];
    j := j + 2;
    inc(i);
    end;

    ЗЫ и обрати внимание на размерности массивов. У тебя они фиксированы – равны 100. А, как я понял условие задачи, надо использовать динамически веделенную под них память. Т.е. вместо new(mas) использовать new(mas, n) (в этом случае mas – это указатель на массив элементов).Как именно это делается в паскале – не помню.

  2. 2
    Алексей Сторожев ответил:

    делается тип массива из 1 элемента
    type
    TMyArray = array [1..1] of Real;
    PMyArray = ^TMyArray;
    var
    n: integer;
    mas: PMyArray;
    begin
    n := 5;
    GetMem (mas, sizeOf (Real) * n);
    ……
    работаем
    …….
    FreeMem (mas, sizeOf (Real) * n);
    end.

  3. 3
    Сергей Владимирович ответил:

    спасибо! с этой задачей разобрался

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.