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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 21.01.2006 21:28
Сообщение #2


Гость






А ты это где брал? Там и спрашивай.

Наш модуль нормально перемножает, ты захотел изобрести свой велосипед - изобретай, но это же ТВОЙ велосипед, так что изобретай его сам...
 К началу страницы 
+ Ответить 
arhimag
сообщение 21.01.2006 21:30
Сообщение #3


Знаток
****

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

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


нет, Вольво , ты понимаешь, ваш модуль =работает файлом, а мне нужен консольныйsmile.gif тоесть чтоб напечатал, ентер, напечатал ентер и ответ на екране!
и без файлов!
помогите пожалуйста !help.gif !help.gif !help.gif очень нужно, программа должна перемножать !

Сообщение отредактировано: arhimag - 21.01.2006 21:46


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 21.01.2006 22:17
Сообщение #4


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

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


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

там собстно переделывать толком нечего... все почти готово...


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.01.2006 9:02
Сообщение #5


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

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

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


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


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

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

 



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