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

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

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

> Деление многоразрядных чисел
Art87
сообщение 27.12.2005 9:42
Сообщение #1


snoWolf
**

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

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


Уважаемые,
Сегодня задали задачу.
Выполнить деление двух многоразрядных чисел (свои придумать). Я в ауте mega_chok.gif .
Помогите плз.


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Art87
сообщение 27.12.2005 16:33
Сообщение #2


snoWolf
**

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

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


Возможно я не разучился юзать поиск smile.gif
volvo скажите, это же то что мне нужно?

uses crt;
function sum(x,y:string):string;
var i:integer;
lx,ly,yy,s:byte;
res:string;
mem:byte;
begin
if length(x)<length(y) then
begin
res:=x;
x:=y;
y:=res;
end;
lx:=length(x);
ly:=length(y);
mem:=0;
res:='';
for i:=0 to lx-1 do
begin
if ly-i<1 then yy:=0
else yy:=ord(y[ly-i])-48;
s:=(ord(x[lx-i])-48)+yy+mem;
res:=chr((s mod 10)+48)+res;
mem:= s div 10;
end;
if mem>0 then res:=chr(mem+48)+res;
sum:=res;
end;

function rasn(x,y:string):string;
var j,i:integer;
lx,ly,xx,yy,s:byte;
res:string;
mem:byte;
begin
lx:=length(x);
ly:=length(y);
mem:=0;
res:='';
for i:=0 to lx-1 do
begin
if ly-i<1 then yy:=0
else yy:=ord(y[ly-i])-48;
xx:=ord(x[lx-i])-48;
if xx>=yy then res:=chr(xx-yy+48)+res
else
begin
j:=lx-i-1;
while (x[j]='0')and(j>0) do
begin
x[j]:='9';
dec(j);
end;
dec(x[j]);
res:=chr(10+xx-yy+48)+res;
end;
end;
while (res[1]='0')and(length(res)>1) do delete(res,1,1);
rasn:=res;
end;

procedure chas(x, y :string; var res, ost:string);
begin
res:='0';
ost:=x;
while (length(ost)>length(y)) or (ost>=y) do
begin
ost:=rasn(ost,y);
res:=sum(res,'1');
end;
end;

var
sx, sy :string;
key:char;
r,o:string;
begin
sx:='';
sy:='';

write('Введите первое число: ');
repeat
key:= readkey;
if(key>='0')and(key<='9')then
begin
sx:=sx+key;
write(key);
end;
until key=#13;
writeln;
write('Введите второе число: ');
repeat
key:= readkey;
if(key>='0')and(key<='9')then
begin
sy:=sy+key;
write(key);
end;
until key=#13;
writeln;
chas(sx,sy,r,o);
writeln('Частное = ',r,' остаток = ',o);
readln;
end.


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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