Харьков Форум
  Харьков Форум > Hi-Tech... > Железо

Старый 25.07.2005, 15:44   #1
qZ (not logged in)
Гость

 
Сообщений: n/a
По умолчанию Программеры! F1!

вообщем си билдер. нужно очччень большое положительно целое число. ансигнед лонг инта не хватает! что делать?


    Вверх
Старый 25.07.2005, 15:50   #2
Arty


 
 
Регистрация: 12.08.2004
Адрес: Комитет ЭУ
Сообщений: 7,033
По умолчанию
класс свой создать?...


    Вверх
Старый 25.07.2005, 15:55   #3
qZ


 
 
Регистрация: 1.09.2003
Сообщений: 1,028
 
По умолчанию
Цитата:
Сообщение от Arty
класс свой создать?...
нах?


    Вверх
Старый 25.07.2005, 16:35   #4
CryBaby


 
 
Регистрация: 23.01.2004
Сообщений: 4,232
 
По умолчанию
Застрелицца, однозначно!
Ну или взять много чисел чуть поменьше

Объясни что именно тебе нужно сделать-- там будет проще тебе помочь


    Вверх
Старый 25.07.2005, 16:55   #5
qZ


 
 
Регистрация: 1.09.2003
Сообщений: 1,028
 
По умолчанию
Цитата:
Сообщение от CryBaby
Объясни что именно тебе нужно сделать-- там будет проще тебе помочь
есть текстовый файл. структура типа такой:
показатель=сумма
показатель=сумма
показатель=сумма

так вот надо если показатели однаковые объединить их. те. я беру то что после знака равенства и до конца строки преобразую в целое. потом со вторым тоже самое. суммы суммирую (тупо звучит как то) и обратно преобразовав в строку леплю после равенства. а вторую строку удаляю. но суммы очччень большие!


    Вверх
Старый 25.07.2005, 17:23   #6
Drema


 
 
Регистрация: 6.09.2003
Адрес: Kharkov
Сообщений: 5,390
 
По умолчанию
а нельзя ли это сделать как то "посимвольно". как будто сложить в столбик?
тебе тогда хватит типа byte и string


    Вверх
Старый 25.07.2005, 17:29   #7
CryBaby


 
 
Регистрация: 23.01.2004
Сообщений: 4,232
 
По умолчанию
Дрема говрит реально. Нужно бы тут поработать с разрядами.
"мне эта идея пришла в голову чуточку раньше" (с)
и разбивать эти большие числа на 2 поменьше и с ними уже работать

например
показатель= 1012312
показатель= 2342314

Интерпретируем как "1012 " и "312"
"2342" и "314"

Обрабатываем а результат уже в виде строки объединяем в одну результирующую строку.

П.С. не забывай про переносы знаков и прочую мелочь.


Если че- я еще 40 минут буду в АСЕ


    Вверх
Старый 25.07.2005, 22:40   #8
Drema


 
 
Регистрация: 6.09.2003
Адрес: Kharkov
Сообщений: 5,390
 
По умолчанию
написали?
вот моя реализация на дельфи:
Код:
procedure TForm1.Button1Click(Sender: TObject);
type
  num=record
  s:string;
  l:integer;
end;
function rever(s:string):string;
var
i:integer;
s1:string;
begin
  s1:='';
  for i:=0 to length(s)-1 do
    s1:=s1+s[length(s)-i];
  rever:=s1;
end;
var
  a1, a2, b:num;
  i,j, buf, max, sum:integer;
  c1,c2:char;
begin
  a1.s:=edit1.Text;
  a2.s:=edit2.Text;
  a1.l:=length(a1.s);
  a2.l:=length(a2.s);
  b.s:='';
  if a1.l>a2.l then max:=a1.l else max:=a2.l;
  buf:=0;
  for i:=0 to max-1 do
    begin
      if a1.l<=i then c1:='0' else c1:=a1.s[a1.l-i];
      if a2.l<=i then c2:='0' else c2:=a2.s[a2.l-i];
      sum:=strtoint(c1)+strtoint(c2)+buf;
      if sum>9 then
        begin
          buf:=1;
          sum:=sum-10;
        end
      else
        buf:=0;
      b.s:=b.s+inttostr(sum);
    end;
    if buf=1 then b.s:=b.s+'1';
  edit3.Text:=rever(b.s);
end;
в edit3 появляется результат сложения содержимого edit1 и edit2.
умея складывать 2 числа можно складывать сколько угодно чисел.
вроде работает..


    Вверх
Старый 26.07.2005, 07:43   #9
_Roman_


 
 
Регистрация: 5.05.2005
Адрес: Харьков
Сообщений: 1,228
 
По умолчанию
Цитата:
Сообщение от qZ (not logged in)
вообщем си билдер. нужно очччень большое положительно целое число. ансигнед лонг инта не хватает! что делать?
Зачем изобретать велосипед?
Воспользуйтесь например LARGE_INTEGER.


    Вверх
Старый 26.07.2005, 08:09   #10
Unregistered
Гость

 
Сообщений: n/a
По умолчанию
Цитата:
Сообщение от CryBaby
например
показатель= 1012312
показатель= 2342314
а если так:
показатель= 1012235628307312
показатель= 2

????


    Вверх
Старый 26.07.2005, 09:59   #11
CryBaby


 
 
Регистрация: 23.01.2004
Сообщений: 4,232
 
По умолчанию
Цитата:
а если так:
показатель= 1012235628307312
показатель= 2

????
Я признаться не рассчитывал на таких ламеров.

Можно же считать пустые разряды за нули при обработке, неправда ли?

от уже ...


    Вверх
Старый 26.07.2005, 10:20   #12
qZ


 
 
Регистрация: 1.09.2003
Сообщений: 1,028
 
По умолчанию
Цитата:
Сообщение от CryBaby
Я признаться не рассчитывал на таких ламеров.

Можно же считать пустые разряды за нули при обработке, неправда ли?

от уже ...
ты меня не понял... ну правда наверное просто я изначально этого не сказал... я ж спросил мож какой еще тип есть... а заморачиватса с обработкой и посимвольным сложением мне влом... и так работает.. а кому сильно надо файлик ручками подправит... и так людям офигительно работу облегчил...


    Вверх
Старый 26.07.2005, 22:55   #13
Arty


 
 
Регистрация: 12.08.2004
Адрес: Комитет ЭУ
Сообщений: 7,033
По умолчанию
Цитата:
Сообщение от qZ
нах?
шоб було.

выше показали


    Вверх
Старый 30.07.2005, 11:08   #14
SAHbKA


 
 
Регистрация: 21.07.2005
Адрес: Терра-третья Планета от С
Сообщений: 5,684
 
По умолчанию
Люди, а ни у кого нет сингулярного разложения матрицы в Делфях? А то скоро надо будет заниматься...


__________________
....ɐwʎ ɔ vǝmоɔ dиw
    Вверх
Старый 31.07.2005, 01:25   #15
esh_p

 
Регистрация: 15.07.2005
Сообщений: 390
По умолчанию
>> Воспользуйтесь например LARGE_INTEGER.
Ему вроде знак не нужен, тогда прямая дорога к unsigned __int64, или тоже мало?
Можно еще с long double, там уже НАМНОГО большие числа, правда точность очень маленькая, но зато можно свободно использовать числа с сотнями нулей


    Вверх

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Харьков Форум > Hi-Tech... > Железо

Быстрый переход


Часовой пояс GMT +2, время: 06:53.


Харьков Форум Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.