IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Длинная арифметика,
arhimag
сообщение 21.01.2006 21:17
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


подскажите, почему не перемножает?

Код
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.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 22.01.2006 9:02
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


arhimag, у тебя вложенные циклы используют одну и ту же переменную i. Вникать дальше желание сразу отпало.. sad.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 30.07.2025 20:51
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"