program pr1;
type cifra=0..9;
chislo=array [1..1000] of cifra;
VAR
m,m1,m2,m3,m5:chislo;n,i,j,g,p,k,c:integer;
begin
{vvod chisel}
write('vvedi n ');
readln(n);
write('vvedi 1oe chislo ');
for i:=1 to n do
read(m[i]);
write('vvedi 2oe chislo ');
for i:=1 to n do
read(m1[i]);
{summa chisel}
p:=0;
for i:=n downto 1 do begin
k:=m[i]+m1[i]+p;
p := k div 10;
m3[i] := k mod 10;
end;
if p>0 then begin
n:= n+1;
for i:= n downto 2 do
m3[i] := m3[i-1];
m3[1] := 1;
end;
write('summa=');
for i:=1 to n do
write(m3[i]);
writeln;
(*
{vichitanie}
p:=0;
k:=0;
if m[1]>m1[1] then
for i:=n downto 1 do begin
k:=m[i]-m1[i];
if k<0 then begin m[i-1]:=m[i-1]-1;m5[i]:=(m[i]+10)-m1[i];end
else m5[i]:=m[i]-m1[i];
k:=0;
writeln(' raznots=');
for i:=1 to n do
write(' ',m5[i]);
end
else
for i:=n downto 1 do begin
k:=m1[i]-m[i];
if k<0 then begin m1[i-1]:=m1[i-1]-1;m5[i]:=(m1[i]+10)-m[i];end
else m5[i]:=m1[i]-m[i];
k:=0;
end;
write(' raznots= -');
for i:=1 to n do
write(' ',m5[i]);
*)
end.
vvedi n 2
vvedi 1oe chislo 1 4
vvedi 2oe chislo 1 4
summa=28
program pr1;
{ программа работает только с неотрицательными числами одинаковой длины }
{ порядок работы:
1. ввести число цифр n
2. ввести n цифр первого числа: цифра, ввод, цифра, ввод, и т.д.
3. ввести n цифр второго числа: цифра, ввод, цифра, ввод, и т.д.
Если одно из чисел должно быть короче другого, вставляем впереди
необходимое количество нулей, например, чтобы сложить 1+22,
вводим
длину числа 2,
0, ввод, 1, ввод
2, ввод, 2, ввод
}
uses
crt;
type cifra=0..9;
chislo=array [1..1000] of cifra;
VAR
minus : boolean;
m1,m2,sum,razn, vrem : chislo;
n, i, p, k : integer;
X,Y : integer;
begin
{vvod chisel}
write('vvedi n ');
readln(n);
write('vvedi 1oe chislo ');
(* после каждой цифры набираете Enter *)
X:= WhereX;
Y:= WhereY;
for i:=1 to n do
begin
GotoXY(X+i, Y);
readln(m1[i]);
end;
write('vvedi 2oe chislo ');
X:= WhereX;
Y:= WhereY;
for i:=1 to n do
begin
GotoXY(X+i, Y);
readln(m2[i]);
end;
{summa chisel}
p:=0;
for i:=n downto 1 do begin
k:=m1[i]+m2[i]+p;
p := k div 10;
sum[i] := k mod 10;
end;
if p>0 then begin
n:= n+1;
for i:= n downto 2 do
sum[i] := sum[i-1];
sum[1] := 1;
end;
write('summa=');
for i:=1 to n do
write(sum[i]);
writeln;
{sravnenie}
minus := false; (* пока счмтаем разность неотрицательной *)
for i:= 1 to n do
if m1[i] > m2[i] then
break
else if m1[i]<m2[i] then
begin
minus := true;
break;
end;
if minus then (* обмен m1 и m2 *)
begin
vrem := m1;
m1 := m2;
m2 := vrem;
end;
{vichitanie}
p:=1;
for i:=n downto 1 do begin
k:=m1[i]-m2[i]-(1-p);
if k>=0 then
p:= 1
else
begin
k:= k+10;
p := 0;
end;
razn[i] := k;
end;
write('raznost=');
i:= 1;
while (i<=n) and (razn[i]=0) do
i := i+1;
if (i=n+1) then
write('0')
else
begin
if minus then
write('-');
while (i<=n) do
begin
write(razn[i]);
i:= i+1;
end;
end;
writeln;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.