Avatar billede ti6701 Nybegynder
15. januar 2001 - 18:21 Der er 5 kommentarer og
1 løsning

store (hel)tal

Jeg kunne godt bruge lidt hjælp eller i det mindste et godt råd. Jeg har brug for at repræsentere tal (heltal) større end 32 måske også 64 bit (unsigned) kan klare.

Jeg har ledt med lys og lygte overalt i alle søge maskiner for at finde et eller library eller andet der kan inkluderes i mit program (C). Hvis nogen kan komme med gode råd eller måske lige frem med et link ville jeg være meget taknemmelig.

Avatar billede beaviz Nybegynder
15. januar 2001 - 19:35 #1
Hvilke operationer skal du udføre på tallene?
Avatar billede ti6701 Nybegynder
15. januar 2001 - 21:20 #2
OK, godt spørgsmål.
Division og modolus operationer.
Avatar billede soepro Nybegynder
16. januar 2001 - 08:55 #3
Jeg vil i så fald foreslå dig at lave din egen datatype til formålet. Ved at overloade de forskellige operationer, kan du sikre dig at du kan regne på tallene sammen med de alm. datatyper - det er i så fald kun dine overloads der begrænser hvad du kan.

Princippet kunne være noget i denne her stil (syntaksen er nok ikke helt korrekt):

class largeInt
{
  private:
  char digits[128];
  public:
  largeInt(void);
  largeInt(int s);
  largeInt& operator +(largeInt& addTo);
  char* operator << (ostream& s);
};   
largeInt::largeInt(void)
{
  for (int idx = 0; idx < 128; digits[idx++] = \'0\');
}; 
largeInt::largeInt(int s)
{
  for (int idx = 127; s > 0 && idx >= 0; idx--)
  {
    digits[idx] = \'0\' + s % 10;
    s /= 10;
  };
  for (;idx > 0; digits[--idx] = \'0\')
}
largeInt& largeInt::operator + (largeInt& addTo)
{
  int carry = 0;
  int subtotal = 0;
  for (int idx = 127; idx >= 0; idx--)
  {
    subtotal  = carry + digits[idx]-\'0\' + addTo.digits[idx]-\'0\';
    carry      = subtotal / 10;
    digits[idx] = subTotal % 10;
  };
}

char* largeInt::operator << (ostream& s)
{
  s << digits;
Avatar billede borrisholt Novice
17. januar 2001 - 08:25 #4
Avatar billede mtilsted Nybegynder
18. januar 2001 - 16:57 #5
Til 64bit kan bruges typen
long long Min64BitVar
Avatar billede borrisholt Novice
08. februar 2001 - 14:19 #6
ti6701>> Hvis du kunne bruge tilsendte må du meget gerne lukke efter dig ....

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester