infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Stanescu Malin Octavian din Decembrie 29, 2010, 18:51:47



Titlul: struct, union sau class pentru numere > long
Scris de: Stanescu Malin Octavian din Decembrie 29, 2010, 18:51:47
ma ajuta cineva cu struct-uri pentru numere > long
am incercat o implementare in permutari 3 dar dupa ce am facut cateva inmultiri numerele din struct deveneau negative.

am initializat struct-ul, am facut un carry si am folosit % pentru a pune numai 4 zecimale intr-un int.
mentioneza ca inmultirile si adunarile le-am efectuat pe un long. Inmultirile maxime posibile erau 9999*1000.

Codul sursa:
Cod:
struct toolong{
int tx[1000];
};

Cod:
toolong facto(int x){
toolong y;
int i;
if(x == 0){
y.tx[0] = 1;
for(i = 1; i<1000; i++){
y.tx[i] = 0;
}
}
else {
long carry, rx;
y = facto(x-1);
for(i=0; i<1000; i++){
rx = y.tx[i]*x + carry;
y.tx[i] = rx%10000;
carry = rx/10000;
}
}
return y;

}
si in functia principala tot cu carry si rx (si tot long).
La iesire obtin ceva gen 0310014344123-858993460-858993460-858993460-858993460-858993460-858993460...
-858993460 ma duce cu gandul ca nu este initializat
 ](*,)


Titlul: Răspuns: struct, union sau class pentru numere > long
Scris de: Sima Cotizo din Decembrie 29, 2010, 19:32:00
Exista un articol foarte bun scris de Mircea Pasoi despre asta: link (http://infoarena.ro/multe-smenuri-de-programare-in-cc-si-nu-numai). Uita-te la sectiunea "numere mari".


Titlul: Răspuns: struct, union sau class pentru numere > long
Scris de: Simoiu Robert din Decembrie 29, 2010, 20:21:19
Am si eu in STL scrisa o sursa cu numere mari, poate te ajuta. http://infoarena.ro/utilizator/SpiderMan ( Mirrors, al 4-lea rand ) .