nextupprevious

Next:5.3 Программы обработки векторов
Up:5.2 Структурированные типы данных
Previous:5.2.4 Доказательство свойств программ


5.2.5 Упражнения

1. Укажите, какие из приведенных ниже разделов определений типов не содержат ошибок:

(1) type X = array10 of integer;
(2) type X = array N of real;
(3) type X = array Char of Integer;
(4) type X = array Month of boolean;
(5) type X = array NumberKind, 200 of array M+N of real;

2. Укажите, какие из приведенных ниже записей нельзя рассматривать в качестве совокупности описаний переменных:

(1) X,Y = array10 of real;
(2) X,Y,Z:array 20 of boolean end; E: array 20 of real;
(3) X : array 10 of real;

3. Укажите, какие из приведенных ниже программ не содержат ошибок:

(1) module A;
    const N = 30; M = 20;
    type НомерСтроки = integer; НомерСтолб = integer;
            СТРОКА = array N of Real; МАССИВ = array M of СТРОКА ;
    var A: МАССИВ ; В: СТРОКА ; I: НомерСтроки; J: НомерСтолб;
begin
    for I := 0 to N-1 do for J := M-1 to 0 by  -1 do read(A[I][J]) end end;
    B := A[1];
    for I := 1 to N-1 do if A [I][1] > B[1] then B := A[I] end end;
    for J := 0 to M-1 do write(B[J]) end;
end A.

(2) module B;
    const N = 365;
    type ДеньНедели = (ПН,ВТ.СР,ЧТ,ПТ,СУ,ВО) ;
            ТАБЛ = array 7 of integer;
    var МАКСДЕНЬ : ДеньНедели; Т:ТАБЛ; М.К : integer;
begin
    for K := 0 to 6 do Т[K ] := 0 end;
    for K := 1 to N do
          M := K mod 7; T[M] := T[M] + 1
    end;
    K:=T[1]; МАКСДЕНЬ := ПО ;
    for M := 6 to 0 by -1 do
        if T[M] > K then
            K := T [M]; МАКСДЕНЬ := ДеньНедели(M)
    end;
    Write('НАИБОЛЕЕ ЧАСТЫЙ:')
    case МАКСДЕНЬ of
        ПН :writeln('ПОНЕДЕЛЬНИК');
        ВТ :writeln('ВТОРНИК');
        CP :writeln( 'СРЕДА' );
        ЧЕ :writeln( 'ЧЕТВЕРГ' );
        ПЯ :writeln( 'ПЯТНИЦА' );
        СУ :writeln( 'СУББОТА' );
        ВО :writeln( 'ВОСКРЕСЕНЬЕ' )
    end
end B.

4. Опишите те задачи, которые могли бы решаться программами из предыдущего упражнения. Исходя из решаемых задач измените программы, если это необходимо.

5. Докажите справедливость следующего утверждения:

$\{ N \geq 1 \}$
X := A[1]; I := 1;
while$<$ N do I := I+1; if A[I] $>$ X then X = A[I] end end
{$( \forall L: 1 \leq L \leq N: A[L] \leq X), (N L: 1 \leq L\leq N: A[L] = X) > 0$ }.

6. Даны два целочисленных вектора A и B длины 200, такие, что 

$(\forall I: 1\leq I < 200: (A[1]<A[1+1])\wedge (B[I] < B[I+1]))$.
Напишите программу для определения значений, встречающихся как в A, так и в B, т.e. для вычисления значения

$(N (I,J): 1 \leq I\leq 200 \wedge 1\leq J\leq 200:A[I] = B[J])$.

7. Пусть имеется целая переменная M и задан массив M, элементами которого являются литеры, а индекс принадлежит отрезку $1..N$. Написать фрагмент программы $S$, для которого справедливы следующие свойства:

(1)S {$ M = (N I: 1 \leq I \leq N: A [I] = '0')$ },
(2) S {$ M = (N I: 1 \leq I \leq N: A [I] = 'A')$ },
(3) S{$ M = (N I: 1 \leq I < N: A[I] < A [I+1])$ },
(4) S{$ M = (N I: 1 \leq I \leq N$ : Ord(A[I]) mod 7 = 0) },
(5) S{$ M = (N I: 1 \leq I \leq N \wedge A[I]\in ['A'..'Z']$ : Odd(Ord(A[I]))) }.
 
 

Next:5.3 Программы обработки векторов
Up:5.2 Структурированные типы данных
Previous:5.2.4 Доказательство свойств программ


© В.Н. Касьянов, Е.В.Касьянова, 2004