Diferente pentru lucrul-cu-nr-mari intre reviziile #7 si #8

Nu exista diferente intre titluri.

Diferente intre continut:

In sfarsit, initializarea unui vector cu altul se face printr-o simpla copiere (se pot folosi cu succes rutine de lucru cu memoria, cum ar fi $FillChar$ in Pascal sau $memmove$ in C). Pentru eleganta, poate fi folosita si atribuirea cifra cu cifra:
== code(c)|
void AtribHuge(Huge H, Huge X)
{ int i;
 
  for (i=0;i<=Xi0s;i++) Hiis=Xiis;
void AtribHuge(Huge H, Huge X) {
  int i;
  for (i = 0; i <= X[0]; ++i) {
    H[i] = X[i];
  }
}
==
Dupa cum se vede, algoritmul seamana foarte bine cu ceea ce s-a invatat la matematica prin clasa a II-a (doar ca atunci nu ni s-a spus ca este vorba de un "algoritm"). Rutina de mai jos compara doua numere uriase $H1$ si $H2$ si intoarce $-1$, $0$ sau $1$, dupa $H1$ este mai mic, egal sau mai mare decat $H2$.
== code(c)|
int Sgn(Huge H1,Huge H2)
{ int i;
 
int Sgn(Huge H1, Huge H2) {
  while (!H1[H1[0]] && H1[0]) H1[0]--;
  while (!H2[H2[0]] && H2[0]) H2[0]--;
  if (H1[0]!=H2[0])
    return H1[0]<H2[0] ? -1 : 1;
  i=H1[0];
  while (H1[i]==H2[i] && i) i--;
  return H1[i]<H2[i] ? -1 : H1[i]==H2[i] ? 0 : 1;
  if (H1[0] < H2[0]) {
    return -1;
  } else if (H1[0] < H2[0]) {
    return +1;
  }
  for (int i = H1[0]; i > 0; --i) {
    if (H1[i] < H2[i]) {
      return -1;
    } else if (H1[i] > H2[i]) {
      return +1;
    }
  }
  return 0;
}
==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.