29. august 2003 - 22:04Der er
6 kommentarer og 1 løsning
få et loop til at tælle meget højt
Hej igen
Jeg sad og legede lidt med C++ og stødte så ind i et problem. Jeg har brug for på en eller anden måde at få et loop til at tælle fra 0 til 70^10 (meget stort tal) men jeg kender ikke noget til variabler der kan indeholde så stort et tal (må ikke være som potens)
Jeg tror ikke at det vil være smart at bruge floating point til en løkke. Man kunne meget nemt risikere en uendelig løkke (for store floating point kunne x+1 godt være x).
int og long int er det samme på de fleste moderne compilere.
En mulighed er den dobbelt løkke.
Men den mest generelle løsning må være en 64 bit integer.
De fleste moderne compilere understøtter en sådan. Typisk hedder den long long int.
Eksempel:
#include <iostream> #include <cmath>
using namespace std;
int main() { for(long long int i = 0; i < (long long int)pow(70.0,10.0); i++) { cout << (double)i << endl; } return 0; }
inttypes.h indeholder de følgende typer: int8_t er en 8-bit heltalstype med fortegn int16_t er en 16-bit heltalstype med fortegn int32_t er en 32-bit heltalstype med fortegn int64_t er en 64-bit heltalstype med fortegn Og så findes de tilsvarende heltalstyper uden fortegn uint8_t, uint16_t, uint32_t og uint64_t, samt intptr_t er en heltalstype med fortegn, stor nok til at indeholde en pointer. uintptr_t er en heltalstype uden fortegn, stor nok til at indeholde en pointer.
Så uint64_t er altså en heltalstype for 64-bit heltal uden fortegn. Du kan altså smide tal mellem 0 og 2^64 - 1 (18446744073709551615) ind i en uint64_t. Heldigvis er 70^10 = 2824752490000000000, så der er altså plads til det tal i en uint64_t (og i en int64_t for den sags skyld).
Synes godt om
Ny brugerNybegynder
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.