Помощь - Поиск - Пользователи - Календарь
Полная версия: Длинная арифметика,
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
arhimag
подскажите, почему не перемножает?

Код
const
     maxlong=200;
Type
    long=array[0..maxlong] of longint;
procedure readlong(var a: long);
var
   s:string;
   i:longint;
begin
     readln(s);
     for i:= 1 to length(s) do a[length(s)-i]:=ord(s[i])-ord('0');
     for i:= length(s) to maxlong do a[i]:=0;
end;
Procedure writelong(a:long);
var i,j:longint;
begin
     j:=0;
     for i:=0 to maxlong do if a[i]>0 then j:=i;
     for i:=j downto 0 do write (a[i]);
end;
procedure addlong(a,b:long; var c:long);
var i,s,p:longint;
begin
     p:=0;
     for i:=0 to maxlong do begin
         s:=a[i]+b[i]+p;
         if s>=10 then begin
            c[i]:=s-10;
            p:=1;
         end else begin
             c[i]:=s;
             p:=0;
         end;
end;
end;

procedure attlong(a,b:long; var c:long);
var i,s,p:longint;
begin
     p:=0;
     for i:=maxlong downto 0 do begin
         s:=a[i]-b[i]-p;
         if s<0 then begin
            c[i]:=s+10;
            p:=1;
         end else begin
             c[i]:=s;
             p:=0;
         end;
end;
end;
procedure check(a,b:long;  var result:longint);
var i: integer;
begin
     result:=0;
     for i:= 0 to maxlong do begin
         If a[i]>b[i] then begin
         result:=1;
         exit;
         end else  if a[i]<b[i] then begin
               result:=-1;
               exit;
         end else
             result:=0;
end;
end;

Procedure  proiz(a,b:long; var c:long);
var p,r,n,i, j, m,z : longint;
   flag:boolean;
begin
     flag:= false;
     p:=0;
     for i:= 0 to maxlong do begin
         r:=p+(a[i]*b[i]);
         for i:= 0 to 9 do
         if (r < (i*10)) and (Flag= false)  then begin

            Flag:=true;
            z:=i-1;
         end;

     c[i]:=r-(z*10);
     p:=Z;
     flag:=false;
end;
end;

var a,b, c:long;
    i:longint;
begin
     readlong(a);
     readlong(b);
     proiz(a,b,c);
     writelong(c);
     writeln;
end.
volvo
А ты это где брал? Там и спрашивай.

Наш модуль нормально перемножает, ты захотел изобрести свой велосипед - изобретай, но это же ТВОЙ велосипед, так что изобретай его сам...
arhimag
нет, Вольво , ты понимаешь, ваш модуль =работает файлом, а мне нужен консольныйsmile.gif тоесть чтоб напечатал, ентер, напечатал ентер и ответ на екране!
и без файлов!
помогите пожалуйста !help.gif !help.gif !help.gif очень нужно, программа должна перемножать !
GoodWind
Архимаг, а заменить чтение из файла чтением с клавиатуры пробовал ?
Тебе это для себя или сдавать ? Если сдавать, то думаю на этом этапе вас уже должны были научить хотя-бы основам языка blink.gif
А если для себя - "потренируйся на кошках" (С) Рано тебе браться за длинную арифметику, если не можешь ввод из файла переделать в ввод с клавы.

там собстно переделывать толком нечего... все почти готово...
Lapp
arhimag, у тебя вложенные циклы используют одну и ту же переменную i. Вникать дальше желание сразу отпало.. sad.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.