ответ:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses crt;
var
i,n,k:integer;
a:array[1..100] of integer;
begin
writeln('введите числа последовательности. Окончанием ввода будет число 0');
i:=0;
n:=0;
repeat
i:=i+1;
n:=n+1;
read(a[i]);
write(' ');
until (a[i]=0) or (i>1000);
writeln;
k:=0;
writeln('Последовательность:');
for i:=1 to n-1 do
begin
write('a[',i,']=',a[i],' ');
if ((a[i] mod 2)=0) and ((a[i] mod 7)=0) then
k:=k+1;
end;
writeln('кол-во целых чётных чисел кратных 7 - ',k);
end.
Второй вариант : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses crt;
var k,n: integer;
begin
write('vvedite chislo ');
readln(n);
if (n mod 7=0) and (n mod 2=0) then inc(k);
while n<>0 do
begin
write('vvedite chislo ');
readln(n);
if (n mod 7=0) and (n mod 2=0) then inc(k);
end;
writeln(k-1);
end.
3 ВАРИАНТ :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const
lim1=30000;
lim2=1000;
var
a,kol,res:integer;
begin
kol:=0;
res:=0;
repeat
repeat
readln(a);
if abs(a)>lim1 then
writeln('Oshibka vvoda. |a|<=',lim1);
until abs(a)<=lim1;
if a<>0 then
begin
inc(kol);
if (a mod 2=0) and (a mod 7=0) then
inc(res);
end;
until (a=0) or (kol=lim2);
write(res);
end.
ответ:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses crt;
var
i,n,k:integer;
a:array[1..100] of integer;
begin
writeln('введите числа последовательности. Окончанием ввода будет число 0');
i:=0;
n:=0;
repeat
i:=i+1;
n:=n+1;
read(a[i]);
write(' ');
until (a[i]=0) or (i>1000);
writeln;
k:=0;
writeln('Последовательность:');
for i:=1 to n-1 do
begin
write('a[',i,']=',a[i],' ');
if ((a[i] mod 2)=0) and ((a[i] mod 7)=0) then
k:=k+1;
end;
writeln('кол-во целых чётных чисел кратных 7 - ',k);
end.
Второй вариант : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses crt;
var k,n: integer;
begin
write('vvedite chislo ');
readln(n);
if (n mod 7=0) and (n mod 2=0) then inc(k);
while n<>0 do
begin
write('vvedite chislo ');
readln(n);
if (n mod 7=0) and (n mod 2=0) then inc(k);
end;
writeln(k-1);
end.
3 ВАРИАНТ :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const
lim1=30000;
lim2=1000;
var
a,kol,res:integer;
begin
kol:=0;
res:=0;
repeat
repeat
readln(a);
if abs(a)>lim1 then
writeln('Oshibka vvoda. |a|<=',lim1);
until abs(a)<=lim1;
if a<>0 then
begin
inc(kol);
if (a mod 2=0) and (a mod 7=0) then
inc(res);
end;
until (a=0) or (kol=lim2);
write(res);
end.
"Современное решение"
// PascalABC.NET 3.0, сборка 1076
begin
var n:=ReadInteger('Количество элементов в массиве: ');
var x:=ArrRandom(n,-20,20);
Writeln('Массив Х'); x.Println;
Write('Ср. арифм. отрицательных элементов после первого, большего 10: ');
var a1:=x.SkipWhile(x->x<=10).Where(x->x<0);
if a1.Count=0 then Writeln('пусто')
else Writeln(a1.Average);
Write('Ср. арифм. всех элементов до первого, большего 10: ');
a1:=x.TakeWhile(x->x<=10);
if a1.Count=0 then Writeln('пусто')
else Writeln(a1.Average)
end.
Тестовые просчеты:
Количество элементов в массиве: 15
Массив Х
-11 11 16 -7 11 -8 10 -16 15 -15 -10 -8 -6 -13 -17
Ср. арифм. отрицательных элементов после первого, большего 10: -11.1111111111111
Ср. арифм. всех элементов до первого, большего 10: -11
Количество элементов в массиве: 13
Массив Х
14 -9 1 2 12 -15 0 16 -19 16 -11 -15 -12
Ср. арифм. отрицательных элементов после первого, большего 10: -13.5
Ср. арифм. всех элементов до первого, большего 10: пусто
Количество элементов в массиве: 5
Массив Х
-11 2 0 15 7
Ср. арифм. отрицательных элементов после первого, большего 10: пусто
Ср. арифм. всех элементов до первого, большего 10: -3
Количество элементов в массиве: 3
Массив Х
15 10 8
Ср. арифм. отрицательных элементов после первого, большего 10: пусто
Ср. арифм. всех элементов до первого, большего 10: пусто
"Школьный вариант решения"
// PascalABC.NET 3.0, сборка 1076
const
nmax=50; { максимальное кол-во элементов }
var
i,n,p,s1,s2,k2:integer;
x:array[1..nmax] of integer;
begin
Write('Количество элементов в массиве: '); Read(n);
Randomize;
Writeln('Массив Х');
p:=0;
for i:=1 to n do begin
x[i]:=Random(41)-20;
Write(x[i],' ');
if p=0 then
if x[i]>10 then p:=i;
end;
Writeln;
Write('Ср. арифм. отрицательных элементов после первого, большего 10: ');
if p=0 then Writeln('пусто')
else begin
s2:=0; k2:=0;
for i:=p+1 to n do
if x[i]<0 then begin s2:=s2+x[i]; Inc(k2) end;
if k2=0 then Writeln('пусто')
else Writeln(s2/k2)
end;
Write('Ср. арифм. всех элементов до первого, большего 10: ');
if p=0 then Writeln('пусто')
else begin
s1:=0;
for i:=1 to p-1 do s1:=s1+x[i];
Writeln(s1/(p-1))
end
end.
Этот вариант существенно длиннее, но главное, что нужно долго вглядываться в текст программы, чтобы понять, что именно она делает.