Dain Ironfoot
9.06.2007 - 16:26
Может у кого есть процедура "длинное вычитание" вида :
procedure sub(a,b:string; var c: string); ?
ну а самому написать не вариант, не? там просто всё. накрайняк окулова почитай.
KostyaN
9.06.2007 - 18:18
могу на С скинуть в виде классов
подойдет?
NEFFboy
9.06.2007 - 19:05
а чего она делать должна? возвращать строку, которая содержит все символы из А, что не содержатся в В ?
Dain Ironfoot
9.06.2007 - 21:33
anDRum
советчег...
KostyaN
не нужен код на паскале
NEFFboy
вычитает из числа а число б
Dain Ironfootлабораторные и контрольные выдаются для самостоятельной работы

за это время можно было уже и литературу найти, и написать
Dain Ironfoot
9.06.2007 - 22:02
whisk
а не подскажите откуда такие смышленные ,а главное догадливые берутся ?
Dain Ironfoot
ты еще долго здесь бездельничать будешь, вместо того, чтобы задание делать?
Dain Ironfoot
9.06.2007 - 22:08
whisk
вся ночь впереди я не тороплюсь...
Pomawka
9.06.2007 - 22:15
а ты на кого учишься? правильно сказал anDRum это не сложно.
NEFFboy
9.06.2007 - 22:15
вот:
Код |
procedure sub(a,b:longint; var c:longint); var k,i,p:longint; begin fillchar(c,sizeof(c),0); if a[0]>b[0] then k := a[0] else k := b[0]; p := 0; for i := 1 to k do begin c[i]:=a[i]-b[i]-p; if c[i]<0 then begin p := 1; inc(c[i],osn); end else p:=0; end; for i := k downto 1 do if c[i]<>0 then break; c[0]:=i; end;
|
Dain Ironfoot
9.06.2007 - 22:34
NEFFboy
спс за помощь но это не то..надо именно стринги вычитать
NEFFboy
9.06.2007 - 22:39
Dain Ironfoot, со строками, все так же. только изменить так. c[i] := chr(ord(a[i])-ord(b[i])-p) и chr(inc(ord(c[i]),osn)) вроде все.
P.S. спасибо репутацию не повышает =)
Scraber
9.06.2007 - 23:36
NEFFboy, 255 разрядные числа пади не посчитает!!! И a, b, c полюбому string должны быть!!! Учитель наверное проверять будет!!
Код |
procedure sub(a, b : string; var c : string); var r1, r2, r3, osh, j, k, l, f : integer; p : string[1]; t : char; temp : string; begin k := 0; if length(a) >= length(b) then begin for j := length(a) downto 2 do begin val(a[j], r1, osh); val(b[length(b)-k], r2, osh); inc(k); if r1 < r2 then begin inc(r1,10); str(r1-r2, p); c := c + p; val(a[j-1], r3, osh); if r3 <> 0 then begin str(r3-1, p); insert(p, a, j-1); delete(a, j, 1); end else begin l := j-1; while a[l] = '0' do dec(l); val(a[l], r3, osh); str(r3-1, p); insert(p, a, l); delete(a, l+1, 1); for f := l+1 to j-1 do a[f] := '9'; end; end else begin str(r1-r2,p); c := c + p; end; end; c := c + a[1]; end else begin temp := a; a := b; b := temp; for j := length(a) downto 2 do begin val(a[j], r1, osh); val(b[length(b)-k], r2, osh); inc(k); if r1 < r2 then begin inc(r1,10); str(r1-r2, p); c := c + p; val(a[j-1], r3, osh); if r3 <> 0 then begin str(r3-1, p); insert(p, a, j-1); delete(a, j, 1); end else begin l := j-1; while a[l] = '0' do dec(l); val(a[l], r3, osh); str(r3-1, p); insert(p, a, l); delete(a, l+1, 1); for f := l+1 to j-1 do a[f] := '9'; end; end else begin str(r1-r2,p); c := c + p; end; end; c := c + a[1]; end; end;
|
с, потом в обратном порядке вывадить надо!!!
Не критиковать

сделано на скорую руку лишь бы считала

, по элсу идет копи пастом
Scraber
9.06.2007 - 23:40
ЗЫ: простое вычитание столбиком
Scraberты монстер
NEFFboy
10.06.2007 - 07:03
Цитата (Scraber) |
NEFFboy, 255 разрядные числа пади не посчитает!!! И a, b, c полюбому string должны быть!!! Учитель наверное проверять будет!! |
посчитает по 100-200 (ну или около того) цифр =)
Код |
procedure sub(a,b:string; var c: string); var i:integer z:integer; k:boolean; l:string; begin k:=false; while (length(a)<max(length(a),length(b)))or(length(b)<max(length(a),length(b))) do if length(a)<max(length(a),length(b)) then a:='0'+a else if length(b)<max(length(a),length(b)) then b:='0'+b; for i:=length(a) downto 1 do if ord(a[i])<ord(b[i]) then break; if i<length(a)+1 then begin l:=a;a:=b;b:=l;c[255-length(a)]:='-';end; for i:=length(b) downto 1 do begin if k then begin dec(byte(a[i]));if a[i]<ord('0') then a[i]:=ord('9') else k:=false; end; if ord(b[i])>ord(a[i]) then begin k:=true; c[i]:=ord(a[i])-ord(b[i])+ord('9')+1; end else c[i]:=ord(a[i])-ord(b[i])+ord('0'); end; end;
|
Dain Ironfoot
10.06.2007 - 09:20
а что такое max ?
Dain Ironfoot
10.06.2007 - 09:37
выбирает наибольшее из двух ?но такой функции нету..
Dain Ironfoot
10.06.2007 - 09:49
еще запинается на этой строке :if a[i]<ord('0') then a[i]:=ord('9')
эрор № 26
NEFFboy
10.06.2007 - 11:58
Dain Ironfoot, ты сформулируй задачу хорошо, а тыкай пальцем в небо. или ты сам не знаешь, что тебе нужно? =)
Dain Ironfoot
10.06.2007 - 12:25
я знаю что мне надо...и уже получил

кому интересно вот :
Код |
код удален..дабы не было повадно всяким дедам_пердунам его критиковать...
|
NEFFboy
10.06.2007 - 14:44
Цитата (Dain Ironfoot) |
кому интересно вот |
кому тут нужен твой исходник =))
anDRum
11.06.2007 - 19:28
Dain Ironfoot
да я советчик, и что? по крайней мере такую фигню написать смогу без посторонней помощи.
тебе whisk всё правильно говорит, а ты как от мухи отмахиваешься. хрен ты так чему научишься, если каждый раз будешь чужие коды юзать.
эххх, понаберут по объявлению...
NEFFboy
11.06.2007 - 22:56
Цитата (anDRum) |
по крайней мере такую фигню написать смогу без посторонней помощи. |
когда напишешь, тогда и говори, теоретик блин =)
anDRum
11.06.2007 - 23:07
NEFFboy
писал, и не раз, иначе бы не говорил, что могу написать. в отличие от некоторых (не принимайте на свой счёт) не имею привычки говорить о том, о чём понятия не имею. и в данном случае воспринимаю ваше "теоретик" как оскорбление, причём ничем не обоснованное.
Dain Ironfoot
12.06.2007 - 10:00
anDRum
послан...
anDRum
13.06.2007 - 00:14
Dain Ironfoot
шёл бы ты... длинную арифметику учиться писать
NEFFboy
Цитата |
ты сформулируй задачу хорошо, а тыкай пальцем в небо. или ты сам не знаешь, что тебе нужно? =) |
тема была сформулирована товарищем довольно понятно - длинная арифметика это раздел информатики, один из начальных.
Цитата |
кому тут нужен твой исходник =)) |
судя по представленному вами варианту решения задачи - исходник нужен вам, почитать, познакомиться, как на самом деле осуществляются операции с числами сколь угодно большой длинны
сорри, не сдержался...
Dain Ironfoot
13.06.2007 - 07:59
Товарищи не ссорьтесь !Курсовая защищена на "5" ,собственно топик можно закрывать...
KostyaN
13.06.2007 - 17:58
Dain Ironfoot
собственно, цикл лучше будет смотреться так
Код |
for i := length(a) downto 1 do begin j := ord(a[i]) - ord(b[i]) - k; if (j<0) then begin inc(j, 10); k:=1; end else k:=0; c := chr( j + ord('0')) + c; end;
|
все остальное довольно грамотно
дед_мажор
13.06.2007 - 23:52
Цитата |
все остальное довольно грамотно |
только недалеким людям свойственно рассуждать о грамотности, не имея о ней никакого представления.
дед_мажор
дед, ну ты че-то вообще...
наезжаешь как-то совсем неаргументированно! мы конечно понимаем, что ты - Величайший программит из программистов, но снизойди уж, аргументируй строчкой кода...
дед_мажор
14.06.2007 - 09:14
RoDen
отсутствие coding style, а именно: наикривейшие identations, отсутствие пустых строк и пробелов в выражениях (вперемежку с наличием таковых -- человек совсем не понимает где они нужны, а где нет), нарушения naming conventions (загадочные имена переменных a, b, c, k -- абсолютная безграмотность), и т. п.
кроме того, код абсолютно нереюзабелен, присутствуют беспомощные комментарии вместо говорящего кода, магические обскурные вещи вроде chr(ord()) - попахивают тухлецой, а отсутствие тесткейсов не позволяет убедиться в работоспособности алгоритма, равно как и вносить в него свои изменения.
продолжать или уже достаточно? =) может ты тоже хочешь выглядеть неграмотным? ) а это всего десяток строк кода.
KostyaN
14.06.2007 - 10:18
дед_мажор
ты еще тут поучи давай
это все-таки десять строк кода, реализующих банальную операцию вычитания столбиком
так что если ты с первого раза не въехал, для чего что нужно, и сломал глаза об этот код из-за его нечитабельности, то тебе самый раз в первый класс
дед_мажор
14.06.2007 - 14:35
Цитата |
ты еще тут поучи давай |
ты еще тут поостри давай.
Цитата |
если ты с первого раза не въехал |
да это ты не въехал в то, что я написал. сначала сходи узнай, что это всё означает. тоже мне грамотей нашелся =)
KostyaN
14.06.2007 - 15:45
Цитата (дед_мажор) |
да это ты не въехал в то, что я написал. сначала сходи узнай, что это всё означает. тоже мне грамотей нашелся =) |
я-то въехал
только ты мне можешь объяснить, зачем все это в 10 строках кода?
это же даже на ооп и тем более не разработка глобального продукта группой разработчиков...
дед_мажор
14.06.2007 - 19:32
Цитата |
только ты мне можешь объяснить, зачем все это в 10 строках кода? |
могу. с этого и надо было начинать.
если ты уже в 10 строках допускаешь грубейшие ошибки, то любое количество кода, тем более ооп, тем более в группе, тем более "глобального" продукта -- грамотно не напишешь никогда. а если при этом еще не отличать понятия "рабочий код" и "грамотный код" -- то это вообще клиника, и до разработки таких людей допускать ни в коем случае нельзя.
про стандарты кодирования -- хорошо конечно, но зачем же числа в строках как чары хранить?
дед_мажор
14.06.2007 - 22:40
Цитата |
зачем же числа в строках как чары хранить |
правильно, их нужно в объекте инкапсулировать, абстрагируясь от множества целых чисел и системы счисления! =)
... и перегрузить афиметические операторы. всё )
дед_мажор
14.06.2007 - 22:44
whisk
ты сейчас столько слов умных сказал, что это даже не на курсовую -- на кандидатскую тянет! =)
KostyaN
14.06.2007 - 22:57
Цитата (whisk) |
... и перегрузить афиметические операторы. всё ) |
я это автору темы в самом начале и предлагал, вот только на с
а он не захотел
дед_мажор
14.06.2007 - 23:00
Цитата |
предлагал, вот только на с |
в C нет перегрузки операторов. учи матчасть.
KostyaN
14.06.2007 - 23:10
ты уже достал придираться к словам
да, в с нет, зато есть в с++
дед_мажор
14.06.2007 - 23:27
Цитата |
ты уже достал придираться к словам |
а ты уже достал писать всякую х#рню, иди учи матчасть. даже один язык от другого отличить не можешь. а еще спорит со мной.
лол.
KostyaN
14.06.2007 - 23:42
дед_мажор
приятного общения самим с собой, мне уже надоело тебе что-либо доказывать.
не хочешь понимать- твое право.
хочешь стебаться, что ж, тоже самое.
смотри только, чтобы тебе потом не пришлось только над самим собой стебаться...
дед_мажор
15.06.2007 - 07:21
Цитата |
уже надоело тебе что-либо доказывать |
тебе надо не мне что-либо доказывать, а за учебники садиться!
Цитата |
я писал что написано грамотно, имея в виду, что довольно оптимизированно |
что там оптимизировать в линейном алгоритме? профайлинг показал узкие места?
иди кнута читай! "преждевременная оптимизация -- корень зла". это у него так написано, да.
а единственную книжку, которую ты прочитал -- "турбопаскаль для чайников" -- советую выбросить в помойку и забыть, что там было написано.
на этом публичная порка закончена. всем спасибо. вы продемонстрировали великолепное незнание элементарных вещей! )
Dain Ironfoot
17.06.2007 - 19:10
whisk
а числа хранить как чары надо по условию задачи...
Fast Reply:
Powered by dgreen
Здесь расположена полная версия этой страницы.