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

Pętla z cin dla dużych ilości danych, zawieszenie programu

Ostatnio zmodyfikowano 2016-10-20 22:23
Autor Wiadomość
Remdel
Temat założony przez niniejszego użytkownika
Pętla z cin dla dużych ilości danych, zawieszenie programu
» 2016-10-20 19:09:38
Witam, mam program który musi m.in. być w stanie wczytać do 1999 liczb (1 lub 0) oddzielonych spacjami. Konkretniej dla liczby n wczytuje w n-1 wierszy rosnącą ilość jedynek lub zer np.
3
0
0 0
Używam do tego strumienia wejścia, a pętla (w uproszczeniu) wygląda następująco:
C/C++
for( int i = 1; i < n; i++ )
for( int a = 0; a < i; a++ )
     cin >> m;

Działa ona jednak do momentu aż liczba wprowadzanych w jednej linii numerów jest gdzieś w okolicach 260, potem program "zapycha się".
Przerobienie danych wejściowych na liczby oddzielone enterami nie rozwiązuje problemu.
Z czego wynika problem i jak mogę go rozwiązać?
P-152679
michal11
» 2016-10-20 19:38:34
Pokaż więcej kodu bo na 90% gdzieś indziej robisz jakiś błąd.
P-152681
Remdel
Temat założony przez niniejszego użytkownika
» 2016-10-20 19:50:52
C/C++
int main()
{ ios_base::sync_with_stdio( 0 );
    bool ** miasta;
    bool m;
    cin >> n;
    miasta = new bool *[ n ]; /**tworzenie tablicy n na n**/
    for( int i = 0; i < n; i++ )
         miasta[ i ] = new bool[ n ];
   
    for( int i = 0; i < n; i++ ) /**wypelnianie tablicy zerami**/
    for( int a = 0; a < n; a++ )
         miasta[ i ][ a ] = 0;
   
    int suma = 0, ilosc = 0;
    for( int i = 1; i < n; i++ ) /**wypelnianie tablicy znanymi danymi (macierz sasiedztwa)**/
    for( int a = 0; a < i; a++ )
    {
        cin >> m;
        ilosc++;
        miasta[ i ][ a ] = m;
        if( m == 1 )
        { miasta[ a ][ i ] = 0; suma++; }
        else
             miasta[ a ][ i ] = 1;
       
    }

Wartości ilość i suma są wykorzystane w dalszej części kodu, mogę jednak z nich zrezygnować, jeśli są związane z problemem.
P-152683
mateczek
» 2016-10-20 20:13:08
to jest jakieś zadanie na spoju czy co ?? bo chyba nie wklepujesz takiej tablicy ręcznie ?? 260*260 to jest 67600 elementów do wklepania :P
P-152684
michal11
» 2016-10-20 20:15:51
Czekaj, chcesz powiedzieć, że wpisywałeś ręcznie 260 zer lub jedynek w konsoli ?
P-152685
Remdel
Temat założony przez niniejszego użytkownika
» 2016-10-20 20:54:24
To zadanie na tegoroczną Olimpiadę Informatyczną. Robię sobie dane testowe przez program generujący same zera (w odpowiednich ilościach) a potem je wklejam. Program zawiesza się jednak zarówno przy moim wklejaniu jak i przy ich testach (działających w systemie plik.in).
PS możesz zwracać się do mnie w rodzaju żeńskim (wiem, że płeć nie wynika z nicku) ;)
Poza tym nie wpisuję pełnej macierzy (połowa wypełnia się sama, jako odbicie, ponieważ jest to graf skierowany). Dane w uproszczeniu wyglądają +/- tak
1
0 1
0 1 1
0 0 0 0
1 0 1 0 0

Itd. aż do ilości liczb w linii odpowiadającej n-1.
P-152690
michal11
» 2016-10-20 22:23:08
Program się zawiesza czy wyłącza ? Dostajesz jakiś błąd ? Jeżeli tak to go wklej. Próbowałaś odpalać pod debuggerem ? Skoro dane i tka generujesz do pliku to po co wklejać je do konsoli ? Nie możesz od razu wczytywać z tego pliku ?
P-152698
« 1 »
  Strona 1 z 1