Дан массив чисел. Определить количество элементов, находящихся в интервале от1 до 12 и...

0 голосов
61 просмотров

Дан массив чисел. Определить количество элементов, находящихся в интервале от1 до 12 и расположенных до максимального элемента массива. ПАСКАЛЬ.


Информатика (74 баллов) | 61 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Const
   N = 33;
Var
   A:array[1..N] of integer;
   i,Max,k:integer;
Begin
Randomize;
Write('Исходный массив: ');
For i:= 1 to N do
    Begin
    A[i]:=random(N);
    Write(A[i],' ');
    End;
WriteLn;
Max:=1;
For i:= 2 to N do
    if A[i]>A[Max] then Max:=i;
WriteLn('A[',Max,'] = ',A[Max]);
Write('Искомые элементы: ');
k:=0;
For i:= 1 to N do
    if (1<=A[i])and(A[i]<=12) then<br>       Begin
       Write(A[i],' ');
       k:=k+1;
       End;
WriteLn;
Write('Их количество: ',k);
End.

Пример:
Исходный массив: 19 24 23 22 17 15 18 21 16 18 6 17 30 23 14 24 11 28 19 13 4 28 21 23 7 19 26 4 11 16 10 14 28
A[13] = 30
Искомые элементы: 6 11 4 7 4 11 10
Их количество: 7

(34.0k баллов)
0 голосов
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println;
  Writeln(a[:a.IndexMax].Where(x->(x>=1) and (x<=12)).Count)<br>end.

Пример
n= 15
3 12 -1 10 -7 18 10 19 8 9 -2 4 0 19 13
4

А вот так учат писать эту же программу в школе...

const
  nn=100;
var
  a:array[1..nn] of integer;
  i,n,imax,k:integer;
begin
  Randomize;
  Write('n='); Read(n);
  for i:=1 to n do begin
    a[i]:=Random(41)-20;
    Write(a[i],' ');
    end;
  Writeln;
  imax:=1;
  for i:=2 to n do
    if a[i]>a[imax] then imax:=i;
  k:=0;
  for i:=1 to imax do
    if (a[i]>=1) and (a[i]<=12) then k:=k+1;<br>  Writeln(k)
end.

Вот отсюда и вопрос: для чего учить писать длинно, сложно и малопонятно?
(150k баллов)