Программирование на языке Pascal - ФОРУМ

Объявление

Продолжается конкурс на "Самый прикоьный юзербар" Голосовать и просматривать голоса других вы можете в форуме События, раздел "Голосование"

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование на языке Pascal - ФОРУМ » Задачи по программированию » Задачи по длинной арифметике


Задачи по длинной арифметике

Сообщений 1 страница 2 из 2

1

Имеется два числа длинной до 254 символов. Ваша программа должна выдать их сумму.

Люди обьясните, плиииззззз??? Как рещать???

+1

2

Держи

Код:
const base=1000;  {основание}

var a,b,c:array[0..10000] of integer;      //Массивы где хранятся числа (по 3 цифры в ячейке)

procedure redln(var a:array of integer);    //Процедура чтения чисел
var ch:char; i:integer;
begin
   fillchar(a,sizeof(a),0);
    repeat read(ch);
    until ch in ['0'..'9'];

    while ch in ['0'..'9'] do
    begin
       for i:=a[0] downto 1 do
       begin
          a[i+1]:=a[i+1]+(a[i]*10) div base;
          a[i]:=(a[i]*10) mod base;
       end;
       a[1]:=a[1]+ord(ch)-48;
       if a[a[0]+1]>0 then inc(a[0]);
       read(ch);
    end;
end;

procedure wrt(a:array of integer);  //Процедура вывода ответа
var s:string;  i:integer;
begin
   write (a[a[0]]);
   for i:=a[0]-1 downto 1 do
   begin
      str(a[i],s);
      while length(s)<3 do s:='0'+s;
      write(s);
   end;
   writeln;
end;

procedure sum(a,b:array of integer; var c:array of integer);  //сама сумма
var i,k:integer;
begin
   fillchar(c,sizeof(c),0);
   if a[0]>b[0] then k:=a[0]  else k:=b[0];
   for i:=1 to k do
    begin
       c[i+1]:=(c[i]+a[i]+b[i]) div base;
       c[i]:=(c[i]+a[i]+b[i]) mod base;
    end;
    if c[k+1]=0 then c[0]:=k  else c[0]:=k+1;
end;

begin
   redln(a);
   redln(b);
   sum(a,b,c);
   wrt(c);
end.

Если нужны пояснения-пиши

+1


Вы здесь » Программирование на языке Pascal - ФОРУМ » Задачи по программированию » Задачи по длинной арифметике


Рейтинг форумов | Создать форум бесплатно