В массив A[N] включены натуральные числа. Найти сумму элементов массива, кратных заданному K. - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

В массив A[N] включены натуральные числа. Найти сумму элементов массива, кратных заданному K.

Решение задачи: «В массив A[N] включены натуральные числа. Найти сумму элементов массива, кратных заданному K.»

textual
Листинг программы
Program LilitK;
uses    Crt;
label
        VV1, VV2, VV3;
type
        Massiv = array [1..100] of word;
var
        a             : Massiv;
        i, m, xc, t,
        w, nach, k, n : word;
        ch            : char;
        chis          : byte;
        Sum           : longint;
 
procedure  OutMass(a  : massiv);
begin
        window(1,w+5,80,24);
        clrscr;chis:=0;Sum:=0;
        writeln('Исходный массив (количество чисел ',n:3,'): ');writeln;
        for i:=1 to n do
          begin
            if a[i] mod k = 0 then begin textcolor(14);inc(chis);Sum:=Sum+a[i];end
                              else textcolor(7);
            write(a[i]:7,' ');
          end;writeln;textcolor(7);
        if n mod 10 <> 0 then writeln;
        If chis>0 then
           begin
             write('Кратные числу ');textcolor(10);write(k);textcolor(7);
             write(' выделены желтым цветом, таких чисел: ');textcolor(12);
             writeln(chis);textcolor(7);
             write('Их сумма равна ');textcolor(14);
             writeln(Sum);textcolor(7);
           end
                  else
           writeln('Кратных числу',k:5,' в исходном массиве НЕТ');
end;
 
BEGIN
        clrscr;n:=0;k:=0;w:=4;t:=0;
        window(1,1,80,w);textcolor(15);textbackground(2);clrscr;
        writeln('                 З а д а н и е');textcolor(14);
        writeln('   В массив A[N] включены натуральные числа.');
        write  ('   Найти сумму элементов массива, кратных заданному K.');
        textcolor(7);textbackground(0);
VV1:
        window(1,w+2,80,w+3);gotoxy(1,1);
        write  ('Введите количество чисел массива (от 1 до 100)  ');
        textcolor(15);write('<ESC> - выход');textcolor(15);write(' = ');
        m:=0;t:=n;n:=0;xc:=wherex;ClrEol;textcolor(7);
        repeat
         ch:=readkey;
         case ch of
              #0      : begin ch:=readkey;continue;end;
              #27     : goto VV3;
              #9      : begin
                         if t>0 then
                          begin
                            n:=t;gotoxy(xc,wherey);ClrEol;write(n);goto VV2;
                          end;
                        end;
              #8      : begin
                         if (m>0) then
                          begin
                            n:=n div 10;dec(m);
                            gotoxy(wherex-1,wherey);write(#255);
                            gotoxy(wherex-1,wherey);
                          end
                                  else
                            continue;
                        end;
              '0'..'9': begin
                         if not((n=0)and(ch='0')) then
                          if (n*10+ord(ch)-48) <= 100 then
                           begin
                             inc(m);n:=n*10+ord(ch)-48;
                             textcolor(7);ClrEol;write(ch);
                           end;
                        end;
         end;
        until (ch=#13)and(n>0);
 
        for i:=1 to n do
          begin
            a[i]:=random(1000)+1;
          end;
        if k>0 then
           begin OutMass(a);goto VV1;end;
VV2:
        window(1,w+2,80,w+3);gotoxy(1,2);
        write('Введите число проверки кратности (от 1 до 1000) ');
        textcolor(15);write('<ESC> - выход');textcolor(7);write(' = ');
        m:=0;t:=k;k:=0;xc:=wherex;ClrEol;textcolor(7);
        repeat
         ch:=readkey;
         case ch of
              #0      : begin ch:=readkey;continue;end;
              #27     : goto VV3;
              #9      : begin
                         if t>0 then
                          begin
                            k:=t;gotoxy(xc,wherey);ClrEol;write(k);goto VV1;
                          end;
                        end;
              #8      : begin
                         if (m>0) then
                          begin
                            k:=k div 10;dec(m);
                            gotoxy(wherex-1,wherey);write(#255);
                            gotoxy(wherex-1,wherey);
                          end
                                  else
                            continue;
                        end;
              '0'..'9': begin
                         if not((k=0)and(ch='0')) then
                          if (k*10+ord(ch)-48) <= 1000 then
                           begin
                             inc(m);k:=k*10+ord(ch)-48;
                             textcolor(7);ClrEol;write(ch);
                           end;
                        end;
         end;
        until (ch=#13)and(k>0);
        OutMass(a);
        if nach=0 then
           begin
             nach:=1;window(1,25,80,25);textcolor(13);
             write  ('<Tab> - переход между вводом размерности и кратности   ');
             write  ('<ESC> - выход');
             textcolor(7);
           end;
        goto VV2;
VV3:
        window(1,25,80,25);ClrEol;textcolor(11);
        write('  Программа закончила свою работу, нажмите любую клавишу ...');
        Repeat Until KeyPressed;
END.

Объяснение кода листинга программы

Этот код написан на Turbo Pascal и выполняет следующую задачу: находит сумму элементов массива, кратных заданному числу K. Программа начинается с объявления переменных: a - это массив, n - количество чисел в массиве, k - число, кратность которого нужно проверить. Затем идет цикл, в котором пользователь вводит количество чисел в массиве (до 100), после чего вводятся сами числа. После этого программа проверяет, есть ли введенные числа кратными заданному числу k. Если такие числа есть, то выводится их сумма. Если нет кратных чисел, то выводится сообщение об этом. Также в коде есть возможность изменить размерность массива и ввести новое значение для числа k. В конце программы выводится сообщение о завершении работы программы и предлагается нажать любую клавишу для выхода.

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы