Niekompletny output - na gołe oko wykonuje się tylko kilka linijek count <<

0

Oto wyrywek mojego kodu:

int tCyfry[2];
    
    for (int ilosccyfr = 0; ilosccyfr < 3; ilosccyfr++) {
        nLogic = Losuj(9, 0);
        tCyfry[ilosccyfr] = nLogic;
    }
    
    int tCyfryPomieszane[2];
    // tCyfry w innej kolejności!
    for (int ilosccyfr = 0; ilosccyfr < 3; ilosccyfr++) {
        
        // Zarejestruj, ze dany indeks tCyfry zostal juz pomieszany i wyklucz go potem.
        int tCyfryZajete[2];
        // Losuj indeks której cyfry z tCyfry, która ma trafić po kolei do 0, 1 i 2 (indeksy tCyfryPomieszane)
        for (;;) {
            nLogic = Losuj(0, 2);
            if (nLogic == tCyfryZajete[0] || nLogic == tCyfryZajete[1] || nLogic == tCyfryZajete[2]) break;
        }
        // Kolejny indeks (od 0, 1, 2) pomieszanych jest wypełniany cyfrą z prawdziwych tCyfry
        tCyfryPomieszane[ilosccyfr] = tCyfry[nLogic];
        // do zakazanych idzie indeks tej prawdziwej cyfry (czyli nLogic)
        tCyfryZajete[ilosccyfr] = tCyfryZajete[nLogic];
    }
    
    cout << tCyfryPomieszane[0] << tCyfryPomieszane[1] << tCyfryPomieszane[2] << endl;
    
    cout << "Slady palcow sa na cyfrach " << tCyfry[0] << ", " << tCyfry[1] << ", " << tCyfry[2] << "." << endl;
    cout << "Odgadnij kombinacje tych cyfr." << endl << endl;
    
    for (int u = 0; u < 2; u++) {
        unsigned tCyfryWpisane[2];
        bBlednaKomenda = true;
        cout << "\nPodaj 1st cyfre: ";
        cin >> tCyfryWpisane[u];
        
        cout << "\nPodaj 2nd cyfre: ";
        cin >> tCyfryWpisane[u];
        
        cout << "\nPodaj 3th cyfre: ";
        cin >> tCyfryWpisane[u];
        
        if (tCyfryWpisane[0] == tCyfry[0] && tCyfryWpisane[1] == tCyfry[1] && tCyfryWpisane[2] == tCyfry[2]) {
                        bBlednaKomenda = false;
                        break;
        }
        else if (u == 2) {
             cout << "Ochroniarz cie zauwazyl! Walcz, nie ma innej opcji!" << endl;
             Dalej();
             
             bool bKastet = false;
             if (tProops[0] == 6 || tProops[1] == 6 || tProops[2] == 6 || tProops[3] == 6) bKastet = true;
             Walka("Ochroniarz", 60, 54, 89, przezwisko, zycie, walka, wytrzymalosc, 5, bKastet);
        }
        else cout << "Zla kombinacja! Ochroniarz zaraz tu bedzie! Szybko!" << endl << "(pozostalo prob: " << u + 1 << "/3) ";
                             
    }    

I na początku po dojściu do tego fragmentu program crashował, natomiast po zmianie funkcji
Losuj(9, 0)
na
rand() % 9;
kod wykonywał się tylko do momentu pierwszego stringa (wyświetlał pierwszego counta <<) a potem nie było dalszych zaplanowanych reakcji w output konsoli.

Dodatkowo zamieszczam wspomnianą funkcję Losuj:

int Losuj(int skala, int odejmij)
{
    int nLosowana;
    do {
            nLosowana = (rand() % skala + 1) - odejmij;
    } while (nLosowana <= 0);
    
    return nLosowana;
}
0

Wielokrotne przekroczenie zakresu tablicy:

int tCyfry[2];
for (int ilosccyfr = 0; ilosccyfr < 3; ilosccyfr++) {
//                                 ^^^ Tablica ma tylko 2 elementy z indeksami 0, 1

A to: nLogic = Losuj(0, 2) powoduje błąd dzielenia przez 0.

Dalej nie ma co patrzyć, popraw na razie te błędy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1