Паскаль переписать через процедуры и функции Даны два очень длинных целых числа (возможные значения превышают диапазон значений longint). Сложите эти числа
Program hellow;
var
s1, s2, s3: string;
n1, n2, n3, l1, l2, l3, i: byte;
c: string[1];
begin
readln(s1);
readln(s2);
l1 := length(s1);
l2 := length(s2);
if l1 > l2 then begin
s3 := s1; l3 := l1;
s1 := s2; l1 := l2;
s2 := s3; l2 := l3;
end;
s3 := ''; n3 := 0;
for i := l1 downto 1 do begin
val(s1[i], n1);
val(s2[l2], n2);
l2 := l2 - 1;
str((n1 + n2 + n3) mod 10, c);
s3 := c + s3;
if n1 + n2 + n3 > 9 then
n3 := 1
else n3 := 0;
end;
while n3 = 1 do begin
if l2 <> 0 then begin
val(s2[l2], n2);
l2 := l2 - 1;
str((n2 + n3) mod 10, c);
s3 := c + s3;
if n2 + n3 < 10 then
n3 := 0;
end
else begin
s3 := '1' + s3;
n3 := 0;
end;
end;
if l2 <> 0 then
s3 := copy(s2, 1, l2) + s3;
writeln(s3);
end.
Определить:
а) является ли сумма его цифр двузначным числом;
б) больше ли числа а сумма его цифр}
var n, s : byte;
a:integer;
begin
writeln('введите двузначное число');
readln(n);
{определение суммы цифр числа div - целая часть от деления, mod - остаток от деления}
s:=n div 10 + n mod 10;
writeln('сумма цмфр числ', n:5, 'равна',s:5);
if s>9 then writeln('сумма цифр двузначное число', s)
else writeln('сумма цифр не двузначное число', s);
writeln('введите число а');
readln(a);
if s>a then writeln('сумма цифр', n,' больше ли числа ', a)
else writeln('сумма цифр', n,' меньше числа ', a);
end.
101₁₀ = 1100101₂
123₁₀ = 1111011₂
324₁₀ = 101000100₂
Объяснение:
101 / 2 = 50 + остаток 1
50 / 2 = 25 + остаток 0
25 / 2 = 12 + остаток 1
12 / 2 = 6 + остаток 0
6 / 2 = 3 + остаток 0
3 / 2 = 1 + остаток 1
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
101₁₀ = 1100101₂
123 / 2 = 61 + остаток 1
61 / 2 = 30 + остаток 1
30 / 2 = 15 + остаток 0
15 / 2 = 7 + остаток 1
7 / 2 = 3 + остаток 1
3 / 2 = 1 + остаток 1
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
123₁₀ = 1111011₂
324 / 2 = 162 + остаток 0
162 / 2 = 81 + остаток 0
81 / 2 = 40 + остаток 1
40 / 2 = 20 + остаток 0
20 / 2 = 10 + остаток 0
10 / 2 = 5 + остаток 0
5 / 2 = 2 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
324₁₀ = 101000100₂