Problematyka Twoje podejście do generowania kombinacji jest poprawne, jednak ograniczenia konsoli uniemożliwiają dostęp do wcześniejszych wyników. Dla 5 cyfr w 5 pudełkach liczba kombinacji to
5^5 = 3125, co może przekraczać pojemność bufora tekstowego konsoli.
Rozwiązania 1. **Zwiększ bufor konsoli**
Na systemie Windows:
- Kliknij prawym przyciskiem w pasku tytułowym konsoli.
- Wybierz
Properties > Layout > Scroll Buffer Size.
- Ustaw większą wartość (np. 99999 linii).
Na systemach Unix/Linux:
- W ustawieniach terminala (np. GNOME Terminal) znajdź opcję
Scrollback buffer i zwiększ limit.
2. **Zapisz wyniki do pliku**
Modyfikacja kodu pozwalająca na zapis do pliku zamiast konsoli:
#include <iostream>
#include <fstream>
int main()
{
int licznik = 1;
int ile = 5;
std::ofstream plik("kombinacje.txt");
if (!plik) {
std::cerr << "Błąd otwarcia pliku!" << std::endl;
return 1;
}
for (int i = 1; i <= ile; i++)
for (int j = 1; j <= ile; j++)
for (int k = 1; k <= ile; k++)
for (int l = 1; l <= ile; l++)
for (int m = 1; m <= ile; m++) {
plik << "Losowanie nr " << licznik << " "
<< i << j << k << l << m << std::endl;
++licznik;
}
plik.close();
return 0;
}
Wynik zostanie zapisany w pliku
kombinacje.txt, który można otworzyć w edytorze tekstu (np. Notepad++, Sublime Text).
3. **Optymalizacja dla większych zestawów danych**
Dla większej liczby cyfr (np. 10) liczba kombinacji wynosi
10^10 = 10 000 000 000. W takim przypadku zapis do pliku jest jedynym praktycznym rozwiązaniem, a wypisywanie do konsoli byłoby nierealne.
Uwagi techniczne - Obecna wersja kodu jest ograniczona do 5 cyfr ze względu na
hardcodowanie pętli. Dla większej liczby cyfr warto zastąpić pętle zagnieżdżone rekurencją lub tablicą z dynamicznym generowaniem kombinacji.
- Użycie
std::ofstream zamiast
std::cout pozwala uniknąć problemów z buforem konsoli.
Dla testów możesz uruchomić program z zapisem do pliku i sprawdzić, czy pierwsze wyniki (np. 11111) są widoczne w pliku tekstowym.