![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Tay |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как решить задачу?
Найти отношение двух многозначных чисел. P.S. Я просто не сталкивался с такими задачами. Материал из FAQ: деление двух длинных чисел : Код function FindBin(ost,b:Plong;const sp:integer):longint; var up,down:word; c:Plong; begin new(c); down:=0;up:=_osn; while up-1>down do begin MulLongShort(b,(up+down) div 2,c); case MoreSdvigLong(ost,c,sp) of 0:down:=(up+down) div 2; 1:up:=(up+down) div 2; 2:begin up:=(up+down) div 2; down:=up; end; end; end; MulLongShort(b,(up+down) div 2,c); if MoreSdvigLong(ost,c,0)=0 then SubLongTwo(ost,c,sp) else begin SubLongTwo(c,ost,sp); ost:=c; end; FindBin:=(up+down) div 2; dispose(c); end; procedure MakeDel(a,b,res,ost:Plong); var sp:integer; begin ost^:=a^; sp:=a^[0]-b^[0]; if MoreSdvigLong(a,b,sp)=1 then dec(sp);{!!!!!!!!!} res^[0]:=sp+1; while sp>=0 do begin res^[sp+1]:=FindBin(ost,b,sp); dec(sp); end; end; procedure DivLongTwo(a,b,res,ost:Plong); begin fillchar(res^,sizeof(res^),0);res^[0]:=1; fillchar(ost^,sizeof(ost^),0);ost^[0]:=1; case MoreSdvigLong(a,b,0) of 0:MakeDel(a,b,res,ost); 1:ost^:=a^; 2:res^[1]:=1; end; end; что бы разделить a на b вызовите : DivLongTwo(a,b,res,ost); res -- результат деления a на b; ost -- остаток от деления. -------------------- Никакие рассуждения не в состоянии указать человеку путь, которого он не хочет видеть.
|
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
И чтоне понятно? там же ясно написанно:
Цитата что бы разделить a на b вызовите : DivLongTwo(a,b,res,ost); res -- результат деления a на b; ost -- остаток от деления. В чем трудность? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Tay |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Oleg_Z @ 9.04.05 16:40) И чтоне понятно? там же ясно написанно: В чем трудность? Трудность в том что я не знаю Паскаль. Я начал учить его несколько дней назад.И пока у меня мало что получается. Препод по информатике выдал задачи, сказал для самостоятельного изучения. Еденственное что из лекций он нам дал это определение зарезервированных слов. Я пытась сам в TP7 разобратся но получается довольно медленно, а время поджимает. Я плохо понимаю текс программы неговоря уже о том чтобы её дописать. -------------------- Никакие рассуждения не в состоянии указать человеку путь, которого он не хочет видеть.
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Tay,
без знания Паскаля (ну, или со знанием только зарезервированных слов) невозможно разобраться в длинночисленной арифметике, т.к. эта тема подразумевает хорошее знание языка, и в частности - указателей... Это совершенно не подходящая для самостоятельного изучения тема... |
Atos |
![]()
Сообщение
#5
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Даействительно. Что-то не верится, чтобы такое давали первым заданием. Может всё-таки имелось в виду не длинночисленная арифметика? Tay, приведи, пожалуйста, точный текст задания.
|
Tay |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Atos @ 9.04.05 20:25) Даействительно. Что-то не верится, чтобы такое давали первым заданием. Может всё-таки имелось в виду не длинночисленная арифметика? Tay, приведи, пожалуйста, точный текст задания. Задача: Найти отношение двух многозначных чисел(длиночисленная арифметика) P.S. Не подумайте что я преувеличиваю. Наш препод работает чисто на деньги, его задача оставить все на последний день и вынудить нас ему заплатить. То же самое было в прошлом семестре, он на последней неделе выдал нам материал (Автокад, маткад, офис) и устроил нам зачет. Зачет не просто пользовательского режима но и мелких деталей которых без практики не узнаешь. В моей группе из 27 человек 21 заплатили. Я из принципа платить не стал и здал зачет с третьего раза, я выучил эти программы досконально ,и то мне повезло, когда я ему отчитывал к нам в аудиотрию зашел зав кафедры информатики и мой препод не смог ничего сделать. Хотели писать заяву на него к декану, но у нас все преподы по инорматике такие, уйдет он и на его место поставят другого (его друга) и нашей группе ........ Мы неоднократно всей группой просили консультации у него по этой теме(Длиночисленная арифметика), а он нам все твердит, что эта тема для самостоятельного изучения. (Не подумайте что я преувеличиваю.) Сообщение отредактировано: Tay - 9.04.2005 22:11 -------------------- Никакие рассуждения не в состоянии указать человеку путь, которого он не хочет видеть.
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Tay, ну тогда попробуй прочитать вот это: Длинночисленная арифметика
Тут очень хорошо разъяснена (на примерах) работа с длинными числами. А понимание того, что делается в программе тебе понадобится для сдачи ... :yes: |
Tay |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо это то что надо.
-------------------- Никакие рассуждения не в состоянии указать человеку путь, которого он не хочет видеть.
|
Tay |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Привет, это опять я. Я более или менее с прогой разобрался но никак не получается её до ума довести. Парни если не трудно допешите её до конечного варианта, а то мне в среду уже сдавать её нужно. Буду очень благодарен.
-------------------- Никакие рассуждения не в состоянии указать человеку путь, которого он не хочет видеть.
|
Altair |
![]()
Сообщение
#10
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
покажи то, до чего смог довести ее
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Tay |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Oleg_Z @ 17.04.05 22:39) покажи то, до чего смог довести ее Код У меня прога пошла. Все ок. program; 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('BBeguTe nepBoe 4uc/\o: '); repeat key:= readkey; if(key>='0')and(key<='9')then begin sx:=sx+key; write(key); end; until key=#13; writeln; write('BBeguTe Btopoe 4uc/\o: '); 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('4acTHoe= ',r,' octaTok= ',o); readln; end. Сообщение отредактировано: volvo - 22.04.2005 17:20 -------------------- Никакие рассуждения не в состоянии указать человеку путь, которого он не хочет видеть.
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:30 |