10899 Паскаль. P.39. Гнездо задач. Динамические списки. Сборник задач по программированию Александра Приходько
 

Сборник задач по программированию. Старая версия

 

 Приходько А. Н.

 

функция, пролог, объяснения, функция, html, объяснения, объект, интерфейс, учебный материал
 

Паскаль. P.39. Гнездо задач. Динамические списки

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.1    Ответы

Определить, что будет в переменной XX в конце выполнения следующей программы.


Program Z;
type
    FF = (Table, Spoon, Plate, Fork, Butter);
    ps = ^ts;
    ts = record
        A, B : ps;
        N : FF;
    end;
var
    a1, a2, a3 : ps; k, tt, mm, XX : integer;
begin
    New(a1);    a1^.A:=nil;    a1^.B:=nil;
    a1^.N:=Table;    a2:=a1;
    for k:=1 to 99 do begin
        New(a3);
        a3^.A:=a2;    a3^.B:=nil;
        a2^.B:=a3;    a3^.N:=Table;
        tt:=k mod 5;
        for mm:=1 to tt do a3^.N:=succ(a3^.N);
        a2:=a3;
    end;
    XX:=0;
    while a1<>nil do begin
        XX:=XX+ord(a1^.N);    a1:=a1^.B;
    end;
end.

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.2    Ответы

Определить, сколько элементов имеет динамическая структура, создаваемая следующей программой.


Program AA;
type
    pxx = ^txx;
    txx = record
        Pred, Nex : pxx;
        ch : char;
    end;
var
    a1, a2, a3 : pxx;
    cc : char;
begin
    New(a1);
    a1^.Pred:=nil;    a1^.Nex:=nil;
    a1^.ch:=’A’;
    a3:=a1;
    for cc:=’B’ to ‘Z’ do begin
        New(a2);
        a2^.Pred:=a3;    a2^.Nex:=nil;
        a2^.ch:=cc;
        a3^.Nex:=a2;
        a3:=a2;
    end;
end.

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.3    Ответы

Определить, сколько элементов имеет динамическая структура, создаваемая следующей программой.


Program AA;
type
    pxx = ^txx;
    txx = record
        One, Two : pxx;
    end;
var
    bb, cc : array[1..16] of pxx;
    col1, col2, i : integer;
    aa, dd : pxx;
begin
    New(aa);    aa^.One:=nil;    aa^.Two:=nil;
    bb[1]:=aa;    col1:=1;
    repeat
        col2:=0;
        for i:=1 to col1 do begin
            New(dd);
            dd^.One:=nil;
            dd^.Two:=nil;
            bb[i]^.One:=dd;
            col2:=col2+1;
            cc[col2]:=dd;
            New(dd);
            dd^.One:=nil;
            dd^.Two:=nil;
            bb[i]^.Two:=dd;
            col2:=col2+1;
            cc[col2]:=dd;
        end;
        for i:=1 to col2 do bb[i]:=cc[i];
        col1:=col2;
    until col1=16;
end.

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.4    Ответы

Определить, что будет в переменной Man после выполнения следующей программы.


Program AA;
type
    PList = ^List;
    List = record
        A : array[0..5] of PList;
        N : integer;
    end;
var
    Last, X, Y : PList;
    Man, j, i, k, m : integer;
begin
    New(X);    X^.N:=1;
    Last:=X;
    for i:=0 to 5 do X^.A[i]:=nil;
    for j:=2 to 10 do begin
        New(Y);    Y^.N:=j;
        Last^.A[0]:=Y;
        for i:=0 to 5 do Y^.A[i]:=nil;
        Last:=Y;
    end;
    Last^.A[0]:=X;
    Y:=X;
    for j:=1 to 10 do begin
        for k:=1 to 5 do begin
            m:=(j mod k) + (j div 2);
            Last:=Y;
            for i:=1 to m do Last:=Last^.A[0];
            Y^.A[k]:=Last;
        end;
        Y:=Y^.A[0];
    end;
    Y:=X;
    for k:=1 to 20 do
        Y:=Y^.A[(k+Y^.N) mod 6];
    Man:=Y^.N;
    for i:=1 to 10 do begin
        Y:=X;
        X:=X^.A[0];
        Dispose(Y);
    end;
end.

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.5    Ответы

Определить, что будет в переменной Man после выполнения следующей программы.


Program AA;
type
    PList = ^List;
    List = record
        A : array[0..5] of PList;
        N : integer;
    end;
var
    Last, X, Y : PList;
    Man, j, i, k, m : integer;
begin
    New(X);    X^.N:=1;    Last:=X;
    for i:=0 to 5 do X^.A[i]:=nil;
    for j:=2 to 10 do begin
        New(Y);    Y^.N:=2*j-1;
        Last^.A[0]:=Y;
        for i:=0 to 5 do Y^.A[i]:=nil;
        Last:=Y;
    end;
    Last^.A[0]:=X;
    Y:=X;
    for j:=1 to 10 do begin
        for k:=1 to 5 do begin
            m:=j mod k;
            Last:=Y;
            for i:=1 to m do Last:=Last^.A[0];
            Y^.A[k]:=Last;
        end;
        Y:=Y^.A[0];
    end;
    Y:=X;
    for k:=1 to 6 do
        Y:=Y^.A[(k+Y^.N) mod 6];
    Man:=Y^.N;
    for i:=1 to 10 do begin
        Y:=X;
        X:=X^.A[0];
        Dispose(Y);
    end;
end.

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.6    Ответы

Определить, что будет в переменной Man после выполнения следующей программы.


Program AA;
type
    PList = ^List;
    List = record
        A : array[0..5] of PList;
        N : integer;
    end;
var
    Last, X, Y : PList;
    Man, j, i, k, m : integer;
begin
    New(X);    X^.N:=1;    Last:=X;
    for i:=0 to 5 do X^.A[i]:=nil;
    for j:=2 to 10 do begin
        New(Y);    Y^.N:=j;
        Last^.A[0]:=Y;
        for i:=0 to 5 do Y^.A[i]:=nil;
        Last:=Y;
    end;
    Last^.A[0]:=X;
    Y:=X;
    for j:=1 to 10 do begin
        for k:=1 to 5 do begin
            m:=j mod k;
            Last:=Y;
            for i:=1 to m do Last:=Last^.A[0];
            Y^.A[k]:=Last;
        end;
        Y:=Y^.A[0];
    end;
    Y:=X;
    for k:=1 to 1000 do
        Y:=Y^.A[k mod 6];
    Man:=Y^.N;
    for i:=1 to 10 do begin
        Y:=X;
        X:=X^.A[0];
        Dispose(Y);
    end;
end.

 

 

Калькулятор

/ - деление

\ - остаток

S - сумма чисел от и до

P - произведение чисел от и до

P.39.7    Ответы

Определить, что будет в переменной Man после выполнения следующей программы.


Program AA;
type
    PList = ^List;
    List = record
        A : array[0..5] of PList;
        N : integer;
    end;
var
    Last, X, Y : PList;
    Man, j, i, k, m : integer;
begin
    New(X);    X^.N:=1;    Last:=X;
    for i:=0 to 5 do X^.A[i]:=nil;
    for j:=2 to 10 do begin
        New(Y);    Y^.N:=j;
        Last^.A[0]:=Y;
        for i:=0 to 5 do Y^.A[i]:=nil;
        Last:=Y;
    end;
    Last^.A[0]:=X;
    Y:=X;
    for j:=1 to 10 do begin
        for k:=1 to 5 do begin
            m:=6-k;
            Last:=Y;
            for i:=1 to m do Last:=Last^.A[0];
            Y^.A[k]:=Last;
        end;
Y:=Y^.A[0];
    end;
    Y:=X^.A[0]^.A[3];
    for k:=1 to 10000 do
        Y:=Y^.A[Y^.N mod 6];
    Man:=Y^.N;
    for i:=1 to 10 do begin
        Y:=X;
        X:=X^.A[0];
        Dispose(Y);
    end;
end.

 

©   Александр Приходько    1996 - 2006

69 0