Найти среднее арифметическое простых чисел в массиве - Free Pascal
Формулировка задачи:
const n=3; Type TInd=1..n; Tar=array[TInd]of integer; var a:Tar;i,s,k,kol,l:integer; begin writeln('Введите массив'); for i:=1 to n do read(a[i]); readln; k:=0; s:=0; kol:=0; for i:=1 to n do begin for l:=2 to a[i]-1 do if a[i] mod 2<>0 then k:=0 else begin k:=1; break; end; if k=0 then begin kol:=0; s:=0; end; end; if kol=0 then writeln('Нет простых чисел') else writeln('sr=',s/kol:3:2); readln; end.
И ещё вопрос , что конкретно прерывает break.Программа не моя нашел на этом сайте.В целом все понятно но с синтаксисом все плохо.Искал информацию про операторные скобки в интернете.Максимум что нашел так это Составной оператор предназначен для объединения нескольких операторов в один.Но на практики непонятно.Если кто может скиньте пожалуйста ссылку на какую-нибудь книгу или сайт где понятно все расписано.
Решение задачи: «Найти среднее арифметическое простых чисел в массиве»
textual
Листинг программы
const n=3; type TInd=1..n; Tar=array[TInd]of integer; var a:Tar; i,s,k,kol,l:integer; begin writeln('Введите массив'); for i:=1 to n do read(a[i]); readln; s:=0; kol:=0; for i:=1 to n do begin // обрабатываем каждое число массива k := 1; // флажок: при k = 1 считаем, что число - простое for l:=2 to trunc(sqrt(a[i])) do // проверяем, делится ли a[i] без остатка на любое из чисел в диапазоне 2 .. корень из a[i] if a[i] mod l = 0 then begin k:=0; // если делится - сбрасываем флаг (число уже нельзя назвать простым), и уходим из внутреннего цикла break; end; if k=1 then // если число все-таки осталось простым - то увеличиваем сумму и количество begin kol := kol+1; s:=s+a[i]; end; end; // проверяем количество найденных простых чисел, и считаем среднее, если это возможно... if kol=0 then writeln('Нет простых чисел') else writeln('sr=',s/kol:3:2); readln; end.
Объяснение кода листинга программы
- Объявлены константа
n=3
, типTInd=1..n
и массивTar=array[TInd]of integer
. - Создана переменная
a:Tar
для хранения массива. - Введен цикл
for i:=1 to n do read(a[i]);
, который считывает значения массиваa
. - Выполняется команда
readln;
для считывания символа новой строки. - Инициализируются переменные
s:=0;
(сумма),kol:=0;
(количество) иk:=0;
(флаг простоты числа). - Выполняется вложенный цикл
for i:=1 to n do begin
, который обрабатывает каждое число массива. - Устанавливается флаг
k := 1;
для первого числа в массиве, которое считается простым. - Выполняется проверка делимости числа
a[i]
на числа от 2 до корня изa[i]
. - Если число делится без остатка на какое-либо число в диапазоне, то флаг
k
сбрасывается и внутренний цикл прерывается. - Если число не делится ни на одно число в диапазоне, то оно считается простым и увеличивается счетчик
kol
и суммаs
. - После обработки всех чисел в массиве выполняется проверка
if kol=0 then writeln('Нет простых чисел')
и выводится сообщение, если простых чисел нет. - В противном случае выводится сообщение
writeln('sr=',s/kol:3:2);
с вычисленным средним арифметическим простых чисел. - Завершает работу программа с помощью
readln;
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д