Function t10_q(x,q:longint):string; const s='0123456789ABCDEFGHI'; var t,m:longint; r:string; begin t:=x; r:=''; while t>=q do begin m:=t mod q; r:=s[m+1]+r; t:=t div q end; t10_q:=s[t+1]+r end;
{ тестирование } var q,n:longint; begin Write('Введите основание системы счисления (2-20): '); Readln(q); Write('Введите натуральное число для перевода: '); Readln(n); Writeln(n,'(10)=',t10_q(n,q),'(',q,')') end.
Тестовое решение: Введите основание системы счисления (2-20): 16 Введите натуральное число для перевода: 16350 16350(10)=3FDE(16)
Var A:array[1..4] of integer; i,j,R,P:integer; function HOD(c,b:integer):integer; begin while c<>b do if c>b then c:=c-b else b:=b-c; HOD:=c; end; function HOK(c,b, RR:integer):integer; begin if ((c mod b=0) or (b mod c=0)) and ((c div b > 1) or (b div c > 1)) then begin if c>b then HoK:=c else HOK:=b; end else HOK:=(c*b) div RR; end; begin A[1]:=36; A[2]:=54; A[3]:=18; A[4]:=15; P:=1; R:=HOD(A[1],A[2]); P:=HOK(A[1], A[2], R); for i:=3 to 4 do begin R:=HOD(R, A[i]); P:=HOK(P, A[i],R); end; writeln('HOK = ',P); end.
ответ: 21
Объяснение:
:= — знак присваивания. Переменная, стоящая до этого знака, получает значение, описанное после знака.
div — операция, находящая целую часть от деления двух чисел.
mod — операция, находящая остаток от деления двух чисел.
По алгоритму:
а:=115 div 100. 115/100= 1(ост. 15). Нам нужна целая часть, значит, а теперь равно 1.
b:=115 mod 100. 115/100= 1 (ост. 15). Здесь нам нужен остаток. Значит, b теперь равно 15.
с:=115 mod 10. 115/10= 11 (ост. 5). Нас интересует остаток. Значит, теперь с равно 5.
s присваивается значение суммы a, b и c. Значит, s= 1+15+5=21.
s=21.
ответ: 21.