2. "Школьный" вариант (а кто сказал, что будет легко?)
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016 const nn=100; var i,n,k:integer; a:array[1..nn] of integer; begin Write('n= '); Read(n); Randomize; k:=0; for i:=1 to n do begin a[i]:=Random(199)-99; Write(a[i],' '); if a[i]>0 then Inc(k) end; Writeln; Writeln('k=',k) end.
function Fun: integer; var i, M: integer; begin writeln('Введите число M='); readln(M); for i := 1 to N do if A[i] = M then Fun := i; end;
procedure CreateMassive; var i: integer; begin for i := 1 to N do begin A[i] := Random(199) - 100; write(A[i],' '); end; Writeln; end;
begin CreateMassive; Writeln(Fun); end.
вот вариант исправления который работает, хотя конечно не факт что он работает как там кто-то задумывал))) не понятно было назначение функции Fun потому она делает поиск номера элемента равного М а вообще глобальные переменные это зло. Так что проектирование тут в корне не верно
Собственно чтобы представить число в двоичную систему счисления, необходимо разделить его на максимально целую часть, которая при умножении на 2 давала нам ближайшее значение к этому числу. Т.е. число 243: если мы умножим 121 на 2: 121*2=242;Т.е. 121 умноженное на 2 и есть ближайшее число к 243, но им не является, т.к. остаток 1, мы записываем его ниже и делим число дальше. Вспоминаем деление столбиком и высчитываем (во вложении). Также, есть более быстрое и продуктивное высчитывание (во вложении). В обоих решениях выписывание остатков происходит в обратном порядке для верного ответа.
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
Writeln('k=',a.Where(x->x>0).Count)
end.
Тестовое решение
n= 15
-69 10 83 -61 -21 -98 -75 -78 27 88 67 -84 61 62 -41
k=7
2. "Школьный" вариант (а кто сказал, что будет легко?)
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
const
nn=100;
var
i,n,k:integer;
a:array[1..nn] of integer;
begin
Write('n= '); Read(n);
Randomize;
k:=0;
for i:=1 to n do begin
a[i]:=Random(199)-99;
Write(a[i],' ');
if a[i]>0 then Inc(k)
end;
Writeln;
Writeln('k=',k)
end.
Тестовое решение
n= 15
28 46 88 -14 -55 -25 52 43 -7 17 71 -8 -34 56 79
k=9