Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rozmiar tablicy

Ostatnio zmodyfikowano 2014-03-08 23:49
Autor Wiadomość
BrutalxD
Temat założony przez niniejszego użytkownika
Rozmiar tablicy
» 2014-03-06 04:08:43
Witam,
Czy jest jakiś sposób, żeby pomieścić więcej niż 6433 sudoku w pamięci programu(żebym miał dostęp do każdego)? Jeśli przekraczam tę wartość to program przestaje działać, kompiluje się ale się wyłącza po otworzeniu okna. Jak narazie próbowałem używać tablicy 3-wymiarowej(z czego 1 wymiar to licznik sudoku, 2 i 3 to wiersze i kolumny) i struktury i mieści tyle samo.
Proszę o pomoc.

P-105720
Monika90
» 2014-03-06 12:29:36
Prawdopodobnie tworzysz tę tablicę na stosie, stos ma ograniczony rozmiar. Mozna zwiększyć rozmiar stosu, podając odpowiednie flagi kompilacji. Ale lepiej użyć wektora struktur.
C/C++
struct Sudoku
{
    char plansza[ 9 ][ 9 ];
};

std::vector < Sudoku > tab( 99999 );
P-105731
michal11
» 2014-03-06 20:57:00
I tak nie przekroczysz pewnej granicy zajęcia pamięci. Na win7 jest to bodajże 2GB
P-105773
BrutalxD
Temat założony przez niniejszego użytkownika
» 2014-03-06 21:02:48
Nie znam się jeszcze na vektorach i nie wiem dokładnie gdzie to wkleić, ale próbowałem przed deklaracja struktury i po i między funkcjami xD i i tak nic nie dało, crashuje się nadal. Próbowałem też tak jak ty masz i nic. Gdzie to wkleić?


unsigned const N=6300;
Rozwiazania tablica[N];



struct Rozwiazania
{
unsigned sudoku[9][9];
};
P-105774
Monika90
» 2014-03-06 21:29:59
Może masz błąd gdzie indziej. U mnie działa coś takiego:
C/C++
#include <vector>

struct Sudoku
{
    char plansza[ 9 ][ 9 ];
};

int main()
{
    std::vector < Sudoku > tab( 1000000 );
    tab[ 999999 ].plansza[ 8 ][ 8 ] = 9;
}

To tworzy milion Sudoku i zajmuje 77 MiB. Jak widzisz, elementy Sudoku są typu char, a nie unsigned, dzięki temu zajmują 4 razy mniej pamięci.
P-105776
michal11
» 2014-03-06 21:54:55
Ok, myślałem, że ta struktura jest bardziej rozbudowana. W takim razie mój komentarz jest tylko czysto informacyjny dla osób którym będzie się wywalał duży program i będą szukali błędów w kodzie.
P-105780
BrutalxD
Temat założony przez niniejszego użytkownika
» 2014-03-06 22:35:35
Pomijając ten "char", gdzie mam błąd bo, ciągle ograniczenie ponizej 6500 tablic sudoku.

C/C++
#include<vector>

using namespace std;

struct Rozwiazania
{
    unsigned sudoku[ 9 ][ 9 ];
};

main()
{
    vector < Rozwiazania > tab( 1000000 );
    tab[ 999999 ].sudoku[ 8 ][ 8 ] = 9;
    Rozwiazania tablica[ 999999 ];
}


  Jak usunę wers z "Rozwiazania tablica[999999]" to wyskakuje mi błąd
C/C++
znak = getch();
switch( znak )
{
case 'r': rozwiazywanie( tablica, ilosc ); break; //tutaj
case 'g': generowanie( tablica, ilosc ); break; // i tutaj
case 27: break;
default: cout << "Nieprawidlowy klawisz!\n"; break;
}
}
//477 48 C:\Users\Kamil\Desktop\Paweł\Programy\MOJE\Test.cpp [Error] cannot convert 'std::vector<Rozwiazania>' to //Rozwiazania*' for argument '1' to 'void rozwiazywanie(Rozwiazania*, unsigned int&)'
P-105784
MrPoxipol
» 2014-03-06 22:46:20
Kompilator powiedział co masz źle (Staraj się uważnie czytać to co Ci mówi kompilator) ;)
P-105786
« 1 » 2
  Strona 1 z 2 Następna strona