Avatar billede needs Nybegynder
20. november 2003 - 23:14 Der er 6 kommentarer og
1 løsning

Fil skrivning af med Mega long long array

Her er en lille gåde jeg håber nogen kan løse. Jeg vil kunne skrive og læse min. 1 mio. long long til og fra en fil. Dette skal kunne gøre mange gang i løbet af programmet levetid. Med dette forsøgs program gives der en fejlmeddelse når man køre programmet. Jeg bruger .net 2003:

#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int main(void)
{
    long long base[100000];
    long long base1[100000];
    long long base2[100000];
    long long base3[100000];
    long long base4[100000];
    long long base5[100000];
    long long base6[100000];
    long long base7[100000];
    long long base8[100000];
    long long base9[100000];


    ifstream loadf("Baseprimes.bpf");

    for (long long i = 0; i<100000; i++)
        loadf >> *(base + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base1 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base2 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base3 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base4 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base5 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base6 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base7 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base8 + i);
    for (long long i = 0; i<100000; i++)
        loadf >> *(base9 + i);
    loadf.close();
    FILE *fbase = fopen("rimes.bpf", "wb");
    fwrite(base, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 100000 is: " << base[99999] << endl;
    fwrite(base1, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 200000 is: " << base1[99999] << endl;
    fwrite(base2, sizeof(long long), 1000000, fbase);
    cout << endl << "Prime # 300000 is: " << base2[99999] << endl;
    fwrite(base3, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 400000 is: " << base3[99999] << endl;
    fwrite(base4, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 500000 is: " << base4[99999] << endl;
    fwrite(base5, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 600000 is: " << base5[99999] << endl;
    fwrite(base6, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 700000 is: " << base6[99999] << endl;
    fwrite(base7, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 800000 is: " << base7[99999] << endl;
    fwrite(base8, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 900000 is: " << base8[99999] << endl;
    fwrite(base9, sizeof(long long), 100000, fbase);
    cout << endl << "Prime # 1000000 is: " << base9[99999] << endl;
    fclose(fbase);
    FILE *rimes = fopen("rimes.bpf", "rb");
   
    fread(base2, sizeof(long long), 100000, rimes);
    fclose(rimes);
    cout << endl << endl << "Prime # 100000 (read) is: " << base2[99999] << endl;
    cin >> base2[456]; //Så jeg lige kan se mit output
   
    return 0;
}
Avatar billede arne_v Ekspert
20. november 2003 - 23:19 #1
Hvad fejl får du ?
Avatar billede needs Nybegynder
21. november 2003 - 08:11 #2
Arne_v >> "An exception 'System.StackOverflowException' has occurred in (filenavn)...
Avatar billede arne_v Ekspert
21. november 2003 - 08:17 #3
Kan du prøve at erstatte:

long long base[100000];

med:

long long *base = new (long long)[100000];

?
Avatar billede arne_v Ekspert
21. november 2003 - 08:21 #4
Eller prøv at builde med stack size 16000000  ...

(/F16000000 command line)
Avatar billede segmose Nybegynder
21. november 2003 - 10:32 #5
needs: hvorfor laver du ikke din base sådan
long long base[10][100000]; // uden for funktion for at ligge den i heap.
eller
long long base[1000000]; // uden for funktion for at ligge den i heap.
eller
long long *base = new (long long)[1000000];

hvilket ville reducere din kode med næsten en faktor 10, fx.

for (int i = 100000; i <= 1000000; i+= 100000)
  cout << endl << "Prime #" << i << " is: " << base[i-1] << endl;
Avatar billede arne_v Ekspert
30. november 2003 - 22:54 #6
needs>

Er du kommet videre ?
Avatar billede needs Nybegynder
02. marts 2006 - 14:43 #7
Hm.. lukker ingen løsninger fundet..
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