nextupprevious

Next:6.2.2 Ханойские башни
Up:6.2 Построение программ с процедурами и функциями
Previous:6.2 Построение программ с процедурами и функциями
 
 


6.2.1 Обработка последовательности векторов

Задача. Задана последовательность векторов одной и той же длины 20, составленных из натуральных чисел. Распечатать последний из тех векторов последовательности, в которых сумма нечетных элементов, являющихся точными квадратами, максимальна.

Решение. Использование процедур ВВОД и ПЕЧАТЬ и функции Сумма, реализующих соответственно ввод элементов вектора, печать элементов вектора и подсчет суммы нечетных элементов вектора, являющихся точными квадратами, позволяет представить решение задачи в виде, аналогичном решениям задач из п. 4.1.2 (см. программы ПОДСЧЕТ и КОМАК).

module ОбработкаВекторов;
    const N = 20;
    type НОМЕР = integer; ВЕКТОР = array N+1 of integer;
    var X,Y : ВЕКТОР; CX, CY : Integer;
procedure ВВОД (var X:ВЕКТОР);
    var K:НОМЕР; begin for K := 1 to N do read(X[K]) end end ВВОД ;
procedure ПЕЧАТЬ (Х:ВЕКТОР);
    var K:НОМЕР; begin for K := 1 to N do write(X[K]) end end ПЕЧАТЬ;
procedure Сумма (Х:ВЕКТОР):integer;
    var K:НОМЕР; S : integer;
begin S := 0;
    for K := 1 to N do
        if odd(X[K]) & (X[K] = sqr(integer(sqrt(X[K]))))
        then S := S + X[K]
        end
    end;
    return S
end Сумма ;
begin
    CY := -1;
    while ~ Eof do
        ВВОД(Х); СХ := Сумма(Х);
        if CX >=CY then CY := CX; Y := X end
     end;
     if CY := -1 then write('На входе - пустая последовательность')
     else ПЕЧАТЬ (Y)
     end
end ОбработкаВекторов.

Next:6.2.2 Ханойские башни
Up:6.2 Построение программ с процедурами и функциями
Previous:6.2 Построение программ с процедурами и функциями


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