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

Ответы на курс: Программирование на языке Pascal

Свойство алгоритма, позволяющее ему решать множество однотипных задач, различающихся лишь входными данными, называется:

К каким типам относится описанная ниже константа?
const a = 100000000000

Строка, начинающаяся символoм {, может являться:

К каким типам относится описанная ниже константа?
const a: real = 10.00

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

Идентификатор, описанный после ключевого слова label, является именем:

Строка, начинающаяся символами {$, является:

К каким типам относится описанная ниже константа?

const a: integer = 1000

Идентификатор, описанный после ключевого слова const, является именем:

Свойство алгоритма, обязывающее его в той или иной форме сообщать итоги своей работы, называется:

Идентификатор, описанный после ключевого слова var, является именем:

Строка, начинающаяся символами {*, является:

Какие последовательности символов являются правильными идентификаторами (с точки зрения компилятора языка Pascal)?

Типы данных real и integer являются:

Типы данных byte и shortint являются:

Какой тип будет иметь результат выражения a+b при a:byte, b:shortint?

Тип данных boolean является

Какой тип будет иметь результат выражения a+b при a:shortint, b:word?

Какой тип будет иметь результат выражения a+b при a:word, b:integer?

Какой из вариантов расстановки скобок в выражении

a + b or c shl a * c - a mod b > a 

не меняет порядок выполнения операций?


Какие из вариантов расстановки скобок в выражении

a * b + not c > a mod c * a shl b xor a 

не меняют порядок выполнения операций?


Тип данных integer является

Типы данных double и real являются:

Какие значения будет принимать переменная z, в зависимости от значений переменной а?

z:= 0;
if a>10 
  then if a>100
         then if a>1000
                then z:= 1
         else z:= -1
  else z:= 10;

Какие циклы будут работать «бесконечно»?

Сколько операций сложения будет произведено при выполнении этого цикла, если k = 10?

for i:= k to k+10 do a:= a+2

К каким типам данных может относиться переменная-переключатель, служащая для выбора одной из ветвей оператора case?

Какие значения будет принимать переменная z, в зависимости от значений переменной а?

z:= -1;
if a<100
  then if a<10
         then if a<1
                then z:=0
         else z:= 10
  else z:= 100;

Сколько операций умножения будет произведено при выполнении этого цикла, если k = 10?

for i:= 2*k to 5*k do a:= a*2

Какие значения будет принимать переменная z, в зависимости от значений переменной а?

z:= -10;
if a>0 
  then if a>100
         then if a>200
                then z:=0
         else z:= 20
  else z:=100;

Какие циклы будут работать «бесконечно»?

К каким типам данных может относиться переменная-переключатель, служащая для выбора одной из ветвей оператора case?

Какие описания массивов являются правильными с точки зрения компилятора языка Pascal?

Какой метод сортировки реализует этот фрагмент программы?

for i:= 1 to n-1 do
  begin x:= a[i+1];
        l:= 1;
        r:= i;
        while l<=r do
         begin
          s:= (l+r)div 2;
          if a[s]<x then l:= s+1
                    else r:= s-1;
         end;
        for j:= i downto 0 do a[j]:= a[j+1];
        a[l]:= x;
  end;

Какой метод сортировки реализует этот фрагмент программы?

for i:= 2 to n do
  begin min:= a[i-1];
        for j:= i to n do 
          if a[j]<= min
           then begin min:= a[j];
                      k:=j
                end;
        x:= a[i-1];
        a[i-1]:= a[k];
        a[k]:= x;
  end;

Какой метод сортировки реализует этот фрагмент программы?

for i:= 2 to N do
  begin x:= a[i]
        for j:= i-1 downto 1 do
          if a[j]>x then a[j+1]:= a[j]
                      else break
        a[j+1]:= x;
  end;

Метод быстрой сортировки является:

Метод сортировки Шелла является:

Метод сортировки простыми вставками с барьером является:

Какую операцию реализует приведенный ниже программный отрывок?

for i:= 1 to N do
  set_res[i]:= (set1[i] or set2[i])and not set2[i]

Какую операцию реализует приведенный ниже программный отрывок?

for i:= 1 to N do
  set_res[i]:= set1[i] and set2[i]

Какой стандартной функции или процедуре обработки строк эквивалентен следующий программный отрывок?

{s: string; i,k,t: byte}
res:= ''; 	
t:= byte(s[0]);
if k+i > t+1 then k:= t-i;
if i <= t
  then for j:= i to i+k do res:= res + s[j];

Какую операцию реализует приведенный ниже программный отрывок?

for i:= 1 to N do
  set_res[i]:= set1[i] or set2[i]

Какой стандартной функции или процедуре обработки строк эквивалентен следующий программный отрывок?

{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];

Какие из приведенных ниже описаний констант являются правильными с точки зрения Pascal-компилятора?

Какой стандартной функции или процедуре обработки строк эквивалентен следующий программный отрывок?

{s: string; i,k,t: byte}
res:= ''; 
t:= length(s);
if i > t then i:= t+1;
for j:= 1 to i-1 do res:= res + s[j];
for j:= i+k-1 to t do res:= res + s[j];

Какие из приведенных ниже описаний констант являются правильными с точки зрения Pascal-компилятора?

Какие из приведенных ниже последовательностей строк и символов упорядочены по возрастанию?

1. Чтобы иметь возможность добавлять информацию в конец текстового файла, его нужно открыть при помощи команды

В текстовом файле f указатель находится в самом конце предпоследней строки, а последняя строка — пустая. Какие из перечисленных ниже функций вернут TRUE в этой ситуации?

Чтобы иметь возможность считывать информацию из текстового файла, его нужно открыть при помощи команды

Какие значения будут храниться в переменных s и k после считывания из текстового файла f строки ‘Петров Петр Петрович 1956′ при помощи команды

readln(f,s,k); {s: string[22], k:shortint =0}

Чтобы иметь возможность записывать информацию в текстовый файл, его нужно открыть при помощи команд

Какие значения будут храниться в переменных s и k после считывания из текстового файла f строки ‘Олегов Олег Олегович 1962′ при помощи команды

readln(f,s,k); {s: string[22], k:byte =0}

Какие значения будут храниться в переменных s и k после считывания из текстового файла f строки ‘Иванов Иван Иванович 1945′ при помощи команды

readln(f,s,k); {s: string[22], k:byte =0}

В текстовом файле f указатель находится в начале последней строки, состоящей только из пробельных символов. Какие из перечисленных ниже функций вернут TRUE в этой ситуации?

Переменные каких типов можно выводить в текстовый файл при помощи команд write() или writeln()

Какая последовательность символов будет содержаться в файле f: file of char после выполнения следующего отрывка программы:

rewrite(f);
for c:= '0' to '9' do write(f,c);	{c: char}
seek(f,5);
read(f,c);
write(f,c);
seek(f,3);
truncate(f);
seek(f,9);
write(f,c);

Сколько полей содержится в записи man?

type data = record day: 1..31;
                         month: 1..12;
                         year: 1900.. 2100;
                  end;
           man = record name: string[20];
                        date_birth: data;
                        case citizen: boolean of
                                true: (birth_place: string[20]);
                               false: (country: string[20];
                                       date_came: data);
                 end;

Чтобы иметь возможность записывать информацию в бинарный файл, его нужно открыть при помощи команды

Какая последовательность символов будет содержаться в файле f: file of char после выполнения следующего отрывка программы:

rewrite(f);
for c:= 'а' to 'р' do write(f,c);	{c: char}
seek(f,10);
read(f,c);
truncate(f);
seek(f,15);
write(f,c);

Сколько полей содержится в записи employee?

type data = record day: 1..31;
                         month: 1..12;
                         year: 1900.. 2100;
                  end;
           employee = record name: string[20];
                             date_entering: data;
                           case trade_union: boolean of
                                       true: (date_enter: data;
                                              leader: boolean);
                                      false: (manager: boolean);
                      end;

Сколько полей содержится в записи person?

type data = record day: 1..31;
                         month: 1..12;
                         year: 1900.. 2100;
                  end;
           person = record name: string[20];
                           date_birth: data;
                         case family_status: char of
                                  'm': (wedding_date: data;
                                        spouse_name: string[20]);
                                  's': (church_celibate: boolean);
                                  'd': (date_divorce: data;);
                                  'w': (date_of_spouse_death: data);
                     end;

Чтобы иметь возможность считывать информацию из бинарного файла, его нужно открыть при помощи команды

Какая последовательность символов будет содержаться в файле f: file of char после выполнения следующего отрывка программы:

rewrite(f);
for c:= 'a' to 'p' do write(f,c);	{c: char}
seek(f,10);
read(f,c);
write(f,c);
seek(f,15);
truncate(f);
write(f,c);

Какое значение будет храниться в поле a записи r1 после выполнения следующего блока?

var a: longint;
    r1: record a: word;
               ...
        end;
    r2: record a: integer;
               ...
        end;
begin
 a:= 0;
 with r1 do 
  begin
   a:= 1000;
   with r2 do
    begin a:= 1000;
          r1.a:= -a;
    end;
   r2.a:= -100;
  end;
 a:= 100;
end.

С типизированными файлами могут работать файловые переменные, описанные следующим образом:

После завершения работы подпрограммы значение переданной в нее переменной-аргумента не может измениться, если соответствующий параметр был:

Какое из объявлений нетипизированного параметра является правильным?

Какие вызовы процедуры

procedure p(x:real; const c: byte; var d: integer);

являются неправильными с точки зрения компилятора языка Pascal?


Какое значение получит переменная 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.

Какие вызовы процедуры

procedure p(var a: byte; const b: char; x: real);

являются неправильными с точки зрения компилятора языка Pascal?


После завершения работы подпрограммы значение переданной в нее переменной-аргумента может измениться, если соответствующий параметр был:

Динамическая структура данных, у которой в каждый момент времени доступны первый и последний элементы, причем и добавлять, и удалять элементы можно как на конце структуры, так и в ее начале, называется:

Имеется набор натуральных чисел, быть может, с повторениями. Необходимо разделить его на два поднабора так, чтобы разность сумм весов была минимальной. Эта задача решается рекурсивным методом полного перебора с отсечением (см. ниже). На вход были поданы числа 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){печать и завершение}
                   end
end;

Описанные ниже подпрограммы

function C: boolean; forward;
function D: boolean; forward;

procedure A;
 begin
  x:= c(x);
  y:= d(y);
 end;

function B: boolean;
 begin
  a;
 end;

function C;
 begin
  z:= b(z);
 end;

function D;
 begin
  z:= b(z);
 end;

Динамическая структура данных, у которой в каждый момент времени доступны первый и последний элементы, причем добавлять новые элементы можно только в конец структуры, а удалять — только из ее начала, называется:

Имеется набор натуральных чисел, быть может, с повторениями. Необходимо разделить его на два поднабора так, чтобы разность сумм весов была минимальной. Эта задача решается рекурсивным методом полного перебора с отсечением (см. ниже). На вход были поданы числа 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){печать и завершение}
                   end
end;

Динамическая структура данных, у которой в каждый момент времени доступен только последний элемент, причем добавлять и удалять элементы можно только на конце структуры, называется:

Описанные ниже подпрограммы

function C: boolean; forward;
function D: boolean; forward;

procedure A;
 begin
  x:= c(x);
  y:= d(y);
 end;

function B: boolean;
 begin
  z:= d(z);
 end;

function C;
 begin
  z:= b(z);
 end;

function D;
 begin
  z:= b(z);
 end;

Описанные ниже подпрограммы

function C: boolean; forward;
function D: boolean; forward;

procedure A;
 begin
  x:= c(x);
  y:= d(y);
 end;

function B: boolean;
 begin
  x:= c(x);
 end;

function C;
 begin
  z:= c(z);
 end;

function D;
 begin
  z:= d(z);
 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){печать и завершение}
                   end
end;

Какие из приведенных ниже подпрограмм вычисляют функцию двойного факториала (n!!), определяемую следующим образом:

0!! =1
1!! = 1
n!! = n*(n-2)!!, для любого натурального n.

Какое значение будет храниться в переменной а:integer после выполнения следующего программного отрывка?
{b: string; p: ^word}
b:= ‘ААББВВГГДД’;
p:= addr(b[7]);
a:= p^;

Какой оператор нужно вставить вместо [???], чтобы приведенный ниже отрывок программы правильно создавал двусвязный линейный список, получая значения из непустого текстового файла f?
{type ssylka = ^spisok;
      spisok = record znach: integer;
                      next,prev: ssylka
               end;
var head,p: ssylka;
}
new(head);
read(f,head^.znach);
head^.prev:= nil;
p:= head;
while not eof(f) do
   begin
    new(p^.next);
    read(f,p^.next^.znach);
    [???];
   end;
p^.next:= nil;
p:= tail;

Какой оператор нужно вставить вместо [???], чтобы приведенный ниже отрывок программы правильно менял местами третий и четвертый элементы двусвязного линейного списка, заданного указателем на голову head?
{type ssylka = ^spisok;
      spisok = record znach: array[1..1000]of integer;
                      next,prev: ssylka
               end;
var head,p: ssylka;
}
p:= head^.next^.next;
p^.prev^.next:= p^.next;
p^.next:= p^.next^.next;
p^.prev^.next^.next:= p;
p^.next^.prev^.prev:= p^.prev; 
[???];
p^.prev:= p^.prev^.next;

Какое значение будет храниться в переменной а:integer после выполнения следующего программного отрывка?
{b: string; p: ^integer}
b:= ‘БББ’;
p:= addr(b[1]);
a:= p^;

Какое значение будет храниться в переменной а:shortint после выполнения следующего программного отрывка?
{b: char; p: ^shortint}
b:= ‘Б’;
p:= addr(b);
a:= p^;

Для освобождения памяти в процессе работы программы предназначены процедуры

На сколько компонент связности распадается граф, содержащий семь вершин, если он задан таким списком ребер?
a b 
a c
b c
c h
f d

На сколько компонент связности распадается граф, содержащий семь вершин, если он задан таким списком ребер?
a g
a d
b c
c h
f b
f c

Сколько листьев содержится в полном бинарном дереве высоты 2?

В дереве 15 вершин. Сколько в нем ребер?

Сколько нетерминальных вершин содержится в полном бинарном дереве высоты 3?

В дереве 10 ребер. Сколько в нем вершин?

Какие вершины взвешенного графа, заданного этой матрицей смежности, принадлежат к 10-периферии относительно вершины a?
	
	a	b	c	d	f
a	0	3	10	0	0
b	3	0	5	0	0
c	10	5	0	2	4
d	0	0	2	0	2
f	0	0	4	2	0

Сколько терминальных вершин содержится в полном бинарном дереве высоты 3?

В несвязном графе, каждая компонента связности которого является деревом, содержится 15 вершин и 10 ребер. Сколько в нем компонент связности?

Какие вершины взвешенного графа, заданного этой матрицей смежности, принадлежат к 10-периферии относительно вершины a?
	
	a	b	c	d	f
a	0	5	0	7	0
b	5	0	8	4	0
c	0	8	0	6	0
d	7	4	6	0	3
f	0	0	0	3	0

Какие вершины орграфа, заданного этим списком смежности, принадлежат ко второму уровню относительно вершины a?
a: d f g
b: d
d: c f
g: h
h: f

Какие вершины взвешенного графа, заданного этой матрицей смежности, принадлежат к 10-периферии относительно вершины c?
	a	b	c	d	f
a	0	12	5	12	3
b	12	0	15	0	7
c	5	15	0	10	20
d	12	0	10	0	2
f	3	7	20	2	0

Какую высоту будет иметь дерево синтаксического анализа для выражения
(a+b)*(c*d-k)-((m+n)/s*(t+y)*(z-x))

Какой алгоритм реализует приведенная ниже программа?
const nnn=10000;
type s1 = ^s2;
     s2 = record n,k,v: integer;
                 next: s1;
          end;
var f: text;
    head,p,q: s1;
    x,i,kr,vr,nxt,kol_ver: integer;
    a: array[1..nnn] of integer;

begin
 assign(f,'in');
 reset(f);
 readln(f,kol_ver);
 new(head);
 with head^ do readln(f,n,k,v);
 head^.next:= nil;
 while not eof(f) do
  begin
   new(q);
   with q^ do readln(f,n,k,v);
   q^.next:= nil;
   if q^.v <= head^.v
    then begin q^.next:= head;
               head:= q;
               continue
         end;
   p:= head;
   while p^.next<>nil do
    begin
     if q^.v > p^.next^.v
      then p:= p^.next
      else begin
            q^.next:= p^.next;
            p^.next:= q;
            break;
           end;

    end;
   if p^.next = nil then p^.next:= q;
  end;
 close(f);

p:=head;
while p<>nil do begin
write(p^.v,' '); p:=p^.next;
end;
writeln('*');

 for i:= 1 to kol_ver do a[i]:= 0;
 kr:= 0;
 vr:= 0;
 nxt:= 0;
 p:= head;
 while (p^.next <> nil)and(kr<kol_ver)do
  with p^ do
   begin
    if a[n]=0
     then if a[k]=0
            then begin inc(kr);
                       inc(vr,v);
                       inc(nxt);
                       a[n]:= nxt;
                       a[k]:= nxt;
                 end
            else begin a[n]:= a[k];
                       inc(vr,v);
                 end
     else if a[k]=0
            then begin a[k]:= a[n];
                       inc(vr,v);
                 end
            else if a[n]<>a[k]
                   then begin x:= a[k];
                              for i:= 1 to kol_ver do
                                if a[i]=x then a[i]:=a[n];
                              inc(vr,v)
                 end;
    p:= next
   end;

 writeln(vr)
end.

Какой алгоритм реализует приведенная ниже программа?
const nnn = 10000;
type uk = ^ukk;
     ukk = record v: integer;
                  next: uk;
              end;
var head: array[1..nnn] of uk;
    a: array[1..nnn] of integer;
    ii,i,j,k,n: integer;
    q,p: uk;
    f: text;

procedure dob(ii,jj: integer); {добавление ребра}
var pp,qq: uk;
begin
 new(qq);
 qq^.v:=jj;
 qq^.next:=nil;
 if head[ii]=nil
  then head[ii]:=qq     {вставка первого}
  else begin            {вставка остальных}
        pp:=head[ii];
        while pp^.next<>nil do pp:=pp^.next;
        pp^.next:=qq;
       end;
end;

begin
{------- считывание графа ------------}
 ...
 readln(f,n);	{кол-во вершин в графе}
 while not eof(f) do
  begin
   read(f,i,j);
   if i<>j then begin
                 dob(j,i);
                 dob(i,j);
                end;
  end;
{--------- инициация массива ---------}
 for i:=1 to n do begin
                       head[i]:=nil;
                       a[i]:=0;
                      end;
{------- основная часть -------------}
 k:=0;    
 i:=1;
 repeat
  k:=k+1;
  a[i]:=k;
  p:=head[i];
  while p<>nil do
   begin
    j:=p^.v;
    a[j]:=k;
    if (head[j]<>nil) and (i<>j)
     then begin
           q:=p;
           while q^.next<>nil do q:=q^.next;
           q^.next:=head[j];
           head[j]:=nil;
          end;
    p:=p^.next;
   end;
  i:=i+1;
  while (head[i]=nil) and (i<=n) do i:=i+1;
 until i=n+1;
 
 for i:=1 to n do
  if a[i]=0 then k:=k+1;
 
 writeln(k); {выдача результата}
end.

В какой последовательности распечатает вершины графа, заданного этим списком смежности, процедура обхода в ширину? (Обход начинается с вершины a, производится в алфавитном порядке.)
a: b d
b: d f
f: c d g
d: h g
h: g

Какую высоту будет иметь дерево синтаксического анализа для выражения
(a-b)*(c+(x-y)/d)+(k*m-(n/s+t))

Постройте дерево бинарного поиска (дерево сортировки) для входной последовательности чисел 7 2 5 1 8 3 6 4 9 13 11 10 12, а затем распечатайте вершины этого дерева в порядке прямого обхода. Какая последовательность чисел получится?

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

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

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

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

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

Какой раздел модуля содержит описания тех подпрограмм, которые были объявлены как доступные другим модулям?

Какие переменные может объявить секция внешних связей модуля А?
unit A;			unit C;			unit F;		
interface 		interface		interface
 uses C,D; 		 uses D,F;		 var f;
 var a;			 var c;			implementation
implementation 		implementation		 uses A;
 uses F; 		 uses B;		 var ff;
 var aa;		 var cc;		end;
end;			end;

unit B;			unit D; 
interface		interface 
 uses C; 		 var d;
 var b;			implementation
implementation 	 	 uses B;
 uses D; 		 var dd;
 var bb;  		end;   
end;

Какое из приведенных ниже сообщений о неправильном вводе лучше всего подходит для организации дружественного интерфейса?

Меню – это:

Приглашение – это:

Какой цвет текста получится на экране, если использовать
brown * lightcyan + blue

Какое из приведенных ниже приглашений к вводу лучше всего подходит для организации дружественного интерфейса?

Какое из приведенных ниже подтверждений прерывания работы программы лучше всего подходит для организации дружественного интерфейса?

Заставка – это:

Какой цвет текста получится на экране, если использовать
lightmagenta * blue - brown

Какой цвет текста получится на экране, если использовать
lightgreen * brown + magenta

Какие имена переменных являются наиболее предпочтительными с точки зрения надежного программирования?

Какие имена переменных являются наиболее предпочтительными с точки зрения надежного программирования?

Какие из приведенных ниже отрывков программ хорошо структурированы?
1)	
while not eof(f) do
  begin inc(n);
        read(f,a[n]);
        inc(obsh_ves,a[n]);
  end;
close(f);
min:= MaxLongInt;

2)	
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;

3)	
  while left<=right do
   begin
    sred:= (left+right)div 2;
    if a[sred]<x then left:= sred+1
                 else begin right:= sred-1; 
                            inc(k); 
                      end;
   end;
 for j:= i-1 downto left do a[j+1]:= a[j];

4)	
  while p<>nil do begin
   j:=p^.v;
   a[j]:=k;
   if (head[j]<>nil) and (i<>j) then begin
    q:=p;
    while q^.next<>nil do q:=q^.next;
    q^.next:=head[j];
    head[j]:=nil;
   end;
   p:=p^.next;
  end;


Процесс выполнения программы на специально подобранных входных данных и сравнения полученных результатов с эталонными называется

Процесс поиска и исправления синтаксических и логических ошибок в программе называется

Какие имена переменных являются наиболее предпочтительными с точки зрения надежного программирования?

Процесс изменения текста программы с целью повышения ее эффективности называется

Полный тестовый набор для переменной вещественного типа, значение которой по условиям решаемой задачи лежит в диапазоне [0..100], может включать тесты со следующими значениями этой переменной:

Какое значение будет храниться в поле a записи r1 после выполнения следующего блока?

var a: integer;
    r1: record a: byte;
               ...
        end;
    r2: record a: shortint;
               ...
        end;
begin
 a:= 0;
 with r1 do 
  begin
   r2.a:= -10;
   with r2 do
    begin a:= 100;
          r1.a:= -a;
    end
  end;
 a:= 100;
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.

Двусвязный линейный список задан указателем на голову head и указателем на хвост tail. Какой оператор необходимо вставить вместо [???], чтобы приведенный ниже отрывок программы правильно удалял из этого списка все элементы со значением 0?
{type ssylka = ^spisok;
      spisok = record znach: integer;
                      next,prev: ssylka
               end;
var head,p,q: ssylka;
}
while (head<>nil)and(head^.znach =0)do
  begin p:= head;
        head:= head^.next;
        dispose(p);
  end;
if head<>nil
 then begin head^.prev:= nil;
            p:= head;
            while p^.next <> nil do
             if p^.next^.znach = 0 
               then begin q:= p^.next;
                          p^.next:= q^.next;
                          if p <> tail then [???];
                          dispose(q);
                    end
               else p:= p^.next;
      end
  else tail:= nil;

В какой последовательности распечатает вершины графа, заданного этим списком смежности, процедура прямого обхода? (Обход начинается с вершины a, производится в алфавитном порядке.)
a: b d
b: d f
f: c d g
d: h g
h: g

Постройте дерево бинарного поиска (дерево сортировки) для входной последовательности чисел 7 2 5 1 8 3 6 4 9 13 11 10 12, а затем распечатайте вершины этого дерева в порядке обхода в ширину. Какая последовательность чисел получится?

Какой алгоритм реализует приведенная ниже программа?
type vertices = ^vertex;
     edges = ^edge;
     vertex = record id,dist: integer;
                     incidence: edges;
                     next: vertices;
              end;
     edge = record from,toward: vertices;
                   len: integer;
                   next: edges;
            end;
     ptr_edges = ^ptr_edge;
     ptr_edge = record e: edges;
                       next: ptr_edges;
                end;

var i,j,len,source_id: integer;
    g,source: vertices;
    queue,head,next_head: ptr_edges;
    f: text;

function new_vertex(i: integer; g: vertices): vertices;
var v: vertices;
begin
 new(v);
 v^.id:= i;
 v^.dist:= maxint;
 v^.incidence:= nil;
 v^.next:= g;
 new_vertex:= v
end;

function find_vertex(i: integer; g: vertices): vertices;
var v: vertices;
begin
 v:= g;
 while (v<>nil)and(v^.id<>i) do v:= v^.next;
 find_vertex:= v
end;

function find_edge(j: integer; n: edges): edges;
var e: edges;
begin
 e:= n;
 while (e<>nil)and(e^.toward^.id<>j) do e:= e^.next;
 find_edge:= e
end;

procedure new_edge(i,j,len: integer; var g: vertices);
var vi,vj: vertices;
    eij: edges;
begin
 vi:= find_vertex(i,g);
 if vi = nil 
   then begin g:= new_vertex(i,g);
              vi:= g
        end;
 vj:= find_vertex(j,g);
 if vj = nil 
   then begin g:= new_vertex(j,g);
              vj:= g
        end;
 eij:= find_edge(j,vi^.incidence);
 if eij = nil
   then begin new(eij);
              eij^.from:= vi;
              eij^.toward:= vj;
              eij^.len:= len;
              eij^.next:= vi^.incidence;
              vi^.incidence:= eij
        end
end;

procedure enqueue(v: vertices; var q,h: ptr_edges);
var e: edges;
    pe: ptr_edges;
begin
 e:= v^.incidence;
 while e<>nil do
  begin
   new(pe);
   pe^.e:= e;
   pe^.next:= nil;
   if q = nil
     then h:= pe
     else q^.next:= pe;
   q:= pe;
   e:= e^.next
  end
end;

procedure print_vertices(g: vertices);
var v: vertices;
begin
 v:= g;
 while v<>nil do 
  begin
    writeln(source_id,' -> ',v^.id,' : ',v^.dist);
    v:= v^.next
  end
end;

procedure dispose_edges(n: edges);
var e,e_next: edges;
begin
 e:= n;
 while e<>nil do 
  begin
    e_next:= e^.next;
    dispose(e);
    e:= e_next
  end
end;

procedure dispose_vertices(g: vertices);
var v,v_next: vertices;
begin
 v:= g;
 while v<>nil do
  begin
    v_next:= v^.next;
    dispose_edges(v^.incidence);
    dispose(v);
    v:= v_next;
  end;
end;

begin
 assign(f,'in');
 reset(f);
 readln(f,source_id); {в первой строке записана начальная вершина}
 g:= nil;
 while not eof(f) do
  begin
   readln(f,i,j,len); {граф задан списком ребер: от, до, длина}
   new_edge(i,j,len,g);
   new_edge(j,i,len,g);
  end;
 source:= find_vertex(source_id,g);
 source^.dist:= 0;

 queue:= nil;
 head:= nil;
 enqueue(source,queue,head);
 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;
 print_vertices(g);
 dispose_vertices(g);
end.

Какое значение будет храниться в поле a записи r2 после выполнения следующего блока?

var a: integer;
    r1: record a: longint;
               ...
        end;
    r2: record a: byte;
               ...
        end;
begin
 a:= 0;
 with r2 do 
  begin
   a:= 10;
   with r1 do
    begin a:= -r2.a;
          r2.a:= 100;
    end;
   a:= r1.a;
  end;
 a:= -100;
end.

Чтобы иметь возможность одновременно считывать информацию из текстового файла и записывать ее туда, файл нужно открыть при помощи команды

Постройте дерево бинарного поиска (дерево сортировки) для входной последовательности чисел 7 2 5 1 8 3 6 4 9 13 11 10 12, а затем распечатайте вершины этого дерева в порядке обратного обхода. Какая последовательность чисел получится

В качестве аргумента при вызове подпрограммы возможно использовать арифметическое выражение, если соответствующий параметр был

Какое из объявлений открытого параметра-строки является правильным?

Какое из объявлений открытого параметра-массива является правильным?

Какое значение получит переменная 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.

Какую высоту будет иметь дерево синтаксического анализа для выражения
x*(a+b*c–g)+((m-n)*t*d/(s-y))*z

Переменные каких типов можно выводить в текстовый файл при помощи команд write() или writeln()

С текстовыми файлами могут работать файловые переменные, описанные следующим образом:

В какой последовательности распечатает вершины графа, заданного этим списком смежности, процедура обратного обхода? (Обход начинается с вершины a, производится в алфавитном порядке.)
a: b d
b: d f
f: c d g
d: h g
h: g

Comments are closed.

Яндекс.Метрика