В массив A[N] включены натуральные числа. Найти сумму элементов массива, кратных заданному K. - Turbo Pascal
Формулировка задачи:
Решение задачи: «В массив A[N] включены натуральные числа. Найти сумму элементов массива, кратных заданному K.»
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. В конце программы выводится сообщение о завершении работы программы и предлагается нажать любую клавишу для выхода.