Сначала производится инициализация массива, в конце - выводится на печать n.
Содержательная часть программы - эта:
n := ves[1];
For i := 1 to 14 Do
If Ves[i] < n Then
Begin
n : = ves[1]
End;
Здесь сначала n равно ves[1], затем в цикле, если ves[i] меньше n, то n присваивается равным ves[1]. Если бы было присвоение ves[i], то получился бы алгоритм поиска минимального элемента (ответ был бы 21 = min[25, 21, 23, 28, 30, 25, 31, 28, 25, 28, 30, 27, 26, 24]). Но здесь вне зависимости от значений всегда присваивается n = ves[1], поэтому в n в любой момент времени записан первый вес (25), он и будет выведен на экран.
ответ: 25
// PascalABC.NET 3.1, сборка 1200 от 13.03.2016
function IsPrime(n:integer):boolean;
begin
if n<4 then Result:=True
else begin
var found:= (n mod 2 = 0);
var p:=3;
while (not found) and (sqr(p)<=n) do
begin
found:=(n mod p = 0);
p+=2
end;
Result:=not found
end
end;
begin
Writeln('k=',ArrRandom(ReadInteger('n='),1,999).Println.
Where(x->IsPrime(x)).Count)
end.
Тестовое решение:
n= 10
401 828 780 444 694 965 23 341 673 875
k=3
2. А вот так это пишется с процедурой
// PascalABC.NET 3.1, сборка 1200 от 13.03.2016
procedure IsPrime(n:integer; var res:boolean);
begin
if n<4 then res:=True
else begin
var found:= (n mod 2 = 0);
var p:=3;
while (not found) and (sqr(p)<=n) do
begin
found:=(n mod p = 0);
p+=2
end;
res:=not found
end
end;
begin
var a:=ArrRandom(ReadInteger('n='),1,999); a.Println;
var k:=0;
var prime:boolean;
foreach var e in a do begin
IsPrime(e,prime);
if Prime then Inc(k)
end;
Writeln('k=',k)
end.
Тестовое решение:
n= 12
199 43 71 365 417 904 170 212 694 103 161 689
k=4