Раз в обоих заданиях известно количество элементов в массиве, то имеет смысл использовать цикл for.
Задание №1
const n=20;
var
a:array[1..n] of integer;
i,s:integer;
begin
s:=0;
for i:=1 to n do begin
a[i]:=random(1001);
if a[i] mod 10 = 4 then s:=s+1;
end;
writeln(s);
end.
<span>Задание №2
const n=20;
var
a:array[1..n] of integer;
i,max,nmax:integer;
begin
max:=0;
for i:=1 to n do begin
a[i]:=random(1001);
if a[i] >max then begin
nmax:=i;
max:=a[i];
end;
write(a[i]:5);
end;
writeln;
writeln(nmax,' ',a[nmax]);
end.
</span>
1. Формат с фиксированной запятой (фиксированной точкой) предполагает размещение знака числа в самом старшем (левом) бите, а остальные биты отводятся под двоичное представление числа. Сама десятичная точка (запятая) не хранится, она подразумевается. Наибольшее распространение получили два способа представления чисел: когда запятая фиксируется после самого младшего разряда (и тогда мы имеем целое число с нулевой дробной частью), либо когда запятая фиксируется сразу после знакового разряда (и тогда мы имеем десятичную дробь с нулевой целой частью). В процессорах фирмы Intel и программно совместимых с ними, отдельное представление данных с фиксированной точкой отсутствует; в качестве такого представления используются целые числа, что фактически совпадает с первым из описанных способов. При этом в двух байтах под разряды числа отводятся 15 бит. Следовательно, максимальное число может быть равно 2^15-1=32767.
2. Ноль в знаковом разряде означает, что число неотрицательное.
3. В коде ASCII для кодировки символов используется таблица размером 256 символов, так что символ занимает один байт. При этом первая половина таблицы (коды 0-127) фиксирована, а вторая может заполняться символами национальных алфавитов, поэтому существует множество кодовых таблиц ASCII. Например, в системе MS DOS для России используется кодовая таблица CР866, а в Windows - СР1251 В UNICODE для кодирования символа используются два байта, что позволяет иметь 65536 кодов.
Const n = 5;
m = 5;
var a:array[1..n,1..m] of integer;
i,j,k:integer;
begin
//Для теста заполним массив n * m сл.числами и
//определяем количество нечетных
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=random(21)-10; write(a[i,j]:4);
if a[i,j] mod 2<>0 then k:=k+1;
end;
writeln;
end;
writeln('Нечетных в массиве: ',k);
Также как и в десятичной системе:
- Умножаем делимое и делитель на 10, чтобы избавиться от запятой
- И делим как в обычном двоичном примере (вы же умеете, надеюсь?)
Ответ: 10,1
var fi,u: real;
h,m: word;
begin
repeat
write(' Угол часовой стрелки от 0 до ',2*pi:0:2,' fi=');
readln(fi);
until(fi>=0)and(fi<=2*pi);
m:=trunc(fi*2*180/pi);
h:=m div 60;
writeln('Часов=',h);
m:=m mod 60;
writeln('Минут=',m);
u:=m*6*pi/180;
write('Угол минутной стрелки=',u:0:2,' rad');
readln
end.