Book of tasks on programming. Old version

 

 by Aliaksandr N. Prykhodzka

 

paste, ñåìèíàð, ñàìîó÷èòåëü, ïðîòîêîë, ëåêòîð, function, browser, breakpoint, unit, îò÷åò, ïðîòîêîë, private, value, memory, algol, òåêñòîâûé, code, ãðàô, ñòàòè÷åñêèé
 

for valuable work you must have JavaScript (allow active content)

Pascal. Pb.1. Nest of tasks. Dynamic lists

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.1     Answer

Determine a value of the variable XX at the end of the following program


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.

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.2     Answer

Determine how much of elements are in dynamic structure produced by the following program


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.

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.3     Answer

Determine how much of elements are in dynamic structure produced by the following program


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.

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.4     Answer

Determine a value of the variable Man after executing the following program


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.

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.5     Answer

Determine a value of the variable Man after executing the following program


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.

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.6     Answer

Determine a value of the variable Man after executing the following program


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.

 

 

Calculator

/ - division

\ - rest

S - sum of numbers from and to

P - multiply numbers from and to

Pb.1.7     Answer

Determine a value of the variable Man after executing the following program


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.

 

©   Aliaksandr Prykhodzka    1993 - 2007