Библиотека
Дневники
Фотогалереи
Легкий форум
Архив
Поиск
Здравствуйте Гость (Вход|Регистрация)   
Студенческий форум
 
 


Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению ) Ответ в темуСоздание новой темыСоздание опроса

> turbo pascal, длинная арифметика

Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


Может у кого есть процедура "длинное вычитание" вида :
procedure sub(a,b:string; var c: string); ?
PMПисьмо на e-mail пользователю
Top
anDRum
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 103
Регистрация: 29.03.2007
Репутация: 7

Место учебы: Орёл ГТУ


ну а самому написать не вариант, не? там просто всё. накрайняк окулова почитай.
PMПисьмо на e-mail пользователюICQ
Top
KostyaN
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 879
Регистрация: 15.09.2006
Репутация: 37

Место учебы: -


могу на С скинуть в виде классов
подойдет?
PMПисьмо на e-mail пользователюICQ
Top
NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


а чего она делать должна? возвращать строку, которая содержит все символы из А, что не содержатся в В ?
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


anDRum
советчег...
KostyaN
не нужен код на паскале
NEFFboy
вычитает из числа а число б
PMПисьмо на e-mail пользователю
Top
whisk
Быстрая цитата




Уважаемый Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 975
Регистрация: 29.03.2005
Репутация: 87

Место учебы: ОрёлГТУ


Dain Ironfoot
лабораторные и контрольные выдаются для самостоятельной работы wink.gif
за это время можно было уже и литературу найти, и написать
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


whisk
а не подскажите откуда такие смышленные ,а главное догадливые берутся ?
PMПисьмо на e-mail пользователю
Top
whisk
Быстрая цитата




Уважаемый Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 975
Регистрация: 29.03.2005
Репутация: 87

Место учебы: ОрёлГТУ


Dain Ironfoot
ты еще долго здесь бездельничать будешь, вместо того, чтобы задание делать?
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


whisk
вся ночь впереди я не тороплюсь...
PMПисьмо на e-mail пользователю
Top
Pomawka
Быстрая цитата




Младший научный сотрудник
****

Профиль
Группа: Пользователи
Сообщений: 457
Регистрация: 12.02.2006
Репутация: 28

Место учебы: ОГУ ФизМат!!!!! ужо в 2009


а ты на кого учишься? правильно сказал anDRum это не сложно.
PMПисьмо на e-mail пользователюICQ
Top
NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


вот:
Код

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;
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


NEFFboy
спс за помощь но это не то..надо именно стринги вычитать
PMПисьмо на e-mail пользователю
Top
NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


Dain Ironfoot, со строками, все так же. только изменить так. c[i] := chr(ord(a[i])-ord(b[i])-p) и chr(inc(ord(c[i]),osn)) вроде все.

P.S. спасибо репутацию не повышает =)
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
Scraber
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 210
Регистрация: 3.09.2005
Репутация: 1

Место учебы: шк. № 3 (осьми классник) :)


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;



с, потом в обратном порядке вывадить надо!!!

Не критиковать starac.gif сделано на скорую руку лишь бы считала biggrin.gif , по элсу идет копи пастом biggrin.gif
PMПисьмо на e-mail пользователюСайт пользователяMSN
Top
Scraber
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 210
Регистрация: 3.09.2005
Репутация: 1

Место учебы: шк. № 3 (осьми классник) :)


ЗЫ: простое вычитание столбиком biggrin.gif
PMПисьмо на e-mail пользователюСайт пользователяMSN
Top
???
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 73
Регистрация: 5.04.2007
Репутация: 4

Место учебы: ГТУ


Scraber
ты монстер ohmy.gif
PMПисьмо на e-mail пользователюICQ
Top
NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


Цитата (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;

PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


а что такое max ?
PMПисьмо на e-mail пользователю
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


выбирает наибольшее из двух ?но такой функции нету..
PMПисьмо на e-mail пользователю
Top
Dain Ironfoot
Быстрая цитата




Студент
**

Профиль
Группа: Пользователи
Сообщений: 37
Регистрация: 21.02.2007
Репутация: нет

Место учебы: ОрелГТУ


еще запинается на этой строке :if a[i]<ord('0') then a[i]:=ord('9')
эрор № 26
PMПисьмо на e-mail пользователю
Top
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
 
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:o  :D  :rolleyes:  :cry2: 
:unsure:  :cry:  :angry:  :bleh: 
:dev:  :flowers:  :fool:  :old: 
:shook:  :angel:  :wor:  :rotfl: 
:kov:  :chair:  :friends:  :wub: 
       
Показать всё


 
Опции сообщения  Включить смайлики?
 Включить подпись?
 Использовать AJAX?

Опции темыСтраницы: (3) [1] 2 3  Ответ в темуСоздание новой темыСоздание опроса

 

Студенческий клуб ostudent.ru и его создатели не несут ответственности за достоверность самостоятельно размещаемой посетителями сайта информации и не могут подтвердить или опровергнуть её.

Этот сайт защищен «Site Guard»