База ответов ИНТУИТ

Программирование на языке Pascal

<<- Назад к вопросам

Какие переменные будут существовать во время выполнения подпрограммы f?
program prog;var a: byte;procedure p1; var a: byte; begin  ... end;procedure p2; function f: boolean;  var a: byte;  begin   ...  end; var a: byte; begin  ... end;

(Ответ считается верным, если отмечены все правильные варианты ответов.)

Варианты ответа
f.a(Верный ответ)
prog.a(Верный ответ)
p1.a
p2.a(Верный ответ)
Похожие вопросы
Какие переменные будут существовать во время выполнения подпрограммы p2?
program prog;var a: byte;procedure p1; var a: byte; begin  ... end;procedure p2; function f: boolean;  var a: byte;  begin   ...  end; var a: byte; begin  ... end;
Какие переменные будут существовать во время выполнения подпрограммы p1?
program prog;var a: byte;procedure p1; function f: boolean;  var a: byte;  begin   ...  end; var a: byte; begin  ... end;procedure p2;var a: byte; begin  ... end;
Какое значение получит переменная a после выполнения такой программы?
var a: byte;proc p1(k: byte);proc p2(var t: byte); begin t:= t*2 end;var a: byte; begin a:= 1;       k:= 5;       p2(a); end;begin a:= 10; p1(a);end.
Какое значение получит переменная a после выполнения такой программы?
var a: byte;proc p1(var k: byte);proc p2(t: byte); begin t:= t*2 end;var a: byte; begin a:= 1;       k:= 5;       p2(k); end;begin a:= 10; p1(a);end.
Какое значение получит переменная a после выполнения такой программы?
var a: byte;proc p1(var t: byte); begin t:= t*2 end;proc p2(var k: byte);var a: byte; begin a:= 1;       k:= 5;       p1(k); end;begin a:= 10; p2(a);end.
Какие из приведенных ниже отрывков программ хорошо структурированы?
1)	procedure step(v,k: byte; r: longint);var j: byte;begin if r < min then   if k = N-1      then min:= r     else for j:= 1 to N do            if (sm[v,j]<>0)and(mark[j]=0)              then begin                    mark[j]:= 1;                    step(j,k+1,r+sm[v,j]);                    mark[j]:= 0                    end;end;2)	for i:= 1 to N-1 dobeginfor x:= 1 to N doif (sm[last,x]<>0)and(not done[x])then dist[x]:= min(dist[x],dist[last]+sm[last,x]);min_dist:= MaxLongInt;for x:= 1 to N doif (not done[x])and(min>dist[x])then begin min_dist:= dist[x];last:= x; end;done[last]:= true;end;3)while head<>nil do begin  with head^.e^ do  if from^.dist+len < toward^.dist then begin     toward^.dist:= from^.dist + len;     enqueue(toward,queue,head);  end;  next_head:= head ^.next;  dispose(head);  head:= next_head end;4)	procedure infix(var p: ukaz);begin read(c);  case c of  '('            : begin new(p); infix(p^.left) end;  '+','-',*','/' : begin p^.symbol:= c;                          infix(p^.right)                    end;  ')'            : {ничего не делаем};  else             begin p^.symbol:= c;                          p^.right:= nil;                          p^.left:= nil;                    end; end;end;
Имеется набор натуральных чисел, быть может, с повторениями. Необходимо разделить его на два поднабора так, чтобы разность сумм весов была минимальной. Эта задача решается рекурсивным методом полного перебора с отсечением (см. ниже). На вход были поданы числа 18 32 5 5 6 2 78 4 56 5 2. При какой глубине стека контекстов произойдет завершение работы программы (обращение к завершающей процедуре out())?
{массив а хранит веса всех предметов, в порядке их ввода, half - "большая" половина суммы всех весов, dif - отклонение текущей найденной суммы от half}procedure rec(k: byte; sum: longint; var dif: longint);var i: byte;begin if sum+a[k]<=half        then for i:= k+1 to n do rec(i,sum+a[k],dif)        else if half-sum<dif               then begin                     dif:= half-sum;                    if dif<2 then out(dif){печать и завершение}                   endend;
Имеется набор натуральных чисел, быть может, с повторениями. Необходимо разделить его на два поднабора так, чтобы разность сумм весов была минимальной. Эта задача решается рекурсивным методом полного перебора с отсечением (см. ниже). На вход были поданы числа 45 48 32 12 12 15 46 2 2 3 15. При какой глубине стека контекстов произойдет завершение работы программы (обращение к завершающей процедуре out())?
{массив а хранит веса всех предметов, в порядке их ввода, half - "большая" половина суммы всех весов, dif - отклонение текущей найденной суммы от half}procedure rec(k: byte; sum: longint; var dif: longint);var i: byte;begin if sum+a[k]<=half        then for i:= k+1 to n do rec(i,sum+a[k],dif)        else if half-sum<dif               then begin                     dif:= half-sum;                    if dif<2 then out(dif){печать и завершение}                   endend;
Имеется набор натуральных чисел, быть может, с повторениями. Необходимо разделить его на два поднабора так, чтобы разность сумм весов была минимальной. Эта задача решается рекурсивным методом полного перебора с отсечением (см. ниже). На вход были поданы числа 36 72 45 2 38 96 15 2 2. При какой глубине стека контекстов произойдет завершение работы программы (обращение к завершающей процедуре out())?
{массив а хранит веса всех предметов, в порядке их ввода, half - "большая" половина суммы всех весов, dif - отклонение текущей найденной суммы от half}procedure rec(k: byte; sum: longint; var dif: longint);var i: byte;begin if sum+a[k]<=half        then for i:= k+1 to n do rec(i,sum+a[k],dif)        else if half-sum<dif               then begin                     dif:= half-sum;                    if dif<2 then out(dif){печать и завершение}                   endend;
Какой стандартной функции или процедуре обработки строк эквивалентен следующий программный отрывок?
{s1,s2: string; i,j,t1,t2: byte}i:=0;res:= '';	t1:= byte(s1[0]);t2:= byte(s2[0]);if i > t2 then i:= t2+1;for j:= 1 to i-1 do res:= res + s2[j];for j:= 1 to t1 do res:= res + s1[j];for j:= i to t2 do res:= res + s2[j];