Из условия нам известно, что ввод завершается числом ноль. Информация о количестве чисел требуется только если их запоминать в массиве, но у нас однопроходный алгоритм, массив не нужен, поэтому про "1000 чисел" благополучно забываем. Числа целые, и по модулю не превышают 30 000, следовательно им надо отводить двухбайтный тип integer, в в котором диапазон представления чисел [-32 768 ; 32 767]. "Нечетные числа, кратные трем" - это такие, у которых остаток от деления на два ненулевой, а остаток от деления на три нулевой. Поскольку числа целые, то и деление, конечно же, целочисленное. Длина последовательности n - это просто счетчик количества прохождений цикла за вычетом единицы, потому что последний проход по циклу будет при вводе нуля, а его учитывать не надо. В другом счетчике k мы накапливаем количество чисел, для которых выполнилось рассмотренное выше условие "нечетные числа, кратные трем".
var n,k,m: integer; begin Writeln('Вводите целые числа, для окончания введите 0'); n:=0; k:=0; repeat Read(m); Inc(n); if (m mod 2 <> 0) and (m mod 3 = 0) then Inc(k) until m=0; Writeln('Введено чисел- ',n-1); Writeln('Нечетных, кратных трем- ',k) end.
Тестовое решение: Вводите целые числа, для окончания введите 0 -5 12 8 27 -18 14 -33 7 0 Введено чисел- 8 Нечетных, кратных трем- 2
Const n=5;m=7; var a:array[1..n,1..m]of integer; b:array[1..n*m]of integer; i,j,buf,k:integer; begin for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(100); write(a[i,j]:4); k:=k+1; b[k]:=a[i,j]; end; writeln; end; writeln; for i:=1 to n*m-1 do for j:=i+1 to n*m do if b[i]>b[j] then begin buf:=b[i]; b[i]:=b[j]; b[j]:=buf; end; for i:=1 to m*n do write(b[i]:4); end.
"Нечетные числа, кратные трем" - это такие, у которых остаток от деления на два ненулевой, а остаток от деления на три нулевой. Поскольку числа целые, то и деление, конечно же, целочисленное.
Длина последовательности n - это просто счетчик количества прохождений цикла за вычетом единицы, потому что последний проход по циклу будет при вводе нуля, а его учитывать не надо. В другом счетчике k мы накапливаем количество чисел, для которых выполнилось рассмотренное выше условие "нечетные числа, кратные трем".
var
n,k,m: integer;
begin
Writeln('Вводите целые числа, для окончания введите 0');
n:=0; k:=0;
repeat
Read(m); Inc(n);
if (m mod 2 <> 0) and (m mod 3 = 0) then Inc(k)
until m=0;
Writeln('Введено чисел- ',n-1);
Writeln('Нечетных, кратных трем- ',k)
end.
Тестовое решение:
Вводите целые числа, для окончания введите 0
-5
12
8
27
-18
14
-33
7
0
Введено чисел- 8
Нечетных, кратных трем- 2
n=5;m=7;
var
a:array[1..n,1..m]of integer;
b:array[1..n*m]of integer;
i,j,buf,k:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
k:=k+1;
b[k]:=a[i,j];
end;
writeln;
end;
writeln;
for i:=1 to n*m-1 do
for j:=i+1 to n*m do
if b[i]>b[j] then
begin
buf:=b[i];
b[i]:=b[j];
b[j]:=buf;
end;
for i:=1 to m*n do
write(b[i]:4);
end.