Witam,
Napisałem krótki program w c++, który losuje liczby bez powtórzeń, wpisuje je do tablicy i sortuje. Problem pojawia się przy wyświetlaniu liczb.Otóż im większe i w pętli for (gdy wypełnia tablice ) tym rzadziej wyświetla się tablica. Dla i==1 praktycznie zawsze się wyświetla, dla i==10 mniej więcej co drugi raz, a dla i==20 nigdy... Dlaczego tak się dzieje? Czym jest to spowodowane?
#include <iostream>
#include <conio.h>
#include <ctime>
#include <cstdlib>
int los, i, k, j;
//int t_multi_komp[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int t_multi_komp[20];
using namespace std;
int main()
{
srand(time(NULL)); // Generator liczb losowych
los = rand() % 79 + 1; // 79 - zakres liczb losowych
t_multi_komp[0] = los; // wartość komórki 0, bo później musi do czegoś porównywać
// ******** pozostała część tablicy *******
for (i = 1; i < 10; i++) // wypełnianie dalszej części tablicy od komórki 1 // PROBLEMY Z WYSWIETLANIEM
{ // IM WIEKSZE i TYM RZADZIEJ TABLICA SIE WYSWIETLA
// docelowe i==20
los = rand() % 79 + 1;
for (k = 0; k < i; k++) // sprawdzanie możliwych powtórzeń
{ // do tej pory wpisanych dlatego k<i
if (t_multi_komp[k] == los)
k--; // przy powtórce cofnij licznik
else
t_multi_komp[i] = los;
}
}
for (i = 0; i < 20; i++)
for (j = 1; j < 20 - i; j++) //pętla wewnętrzna
if (t_multi_komp[j - 1] > t_multi_komp[j]) //zamiana miejscami
swap(t_multi_komp[j - 1], t_multi_komp[j]);
cout << "\n\n\t\t\t Liczby komputera \n\n";
for (i = 0; i < 20; i++) {
if (i == 10)
cout << "\n";
cout << " " << t_multi_komp[i] << "\t\a";
}
getch();
return 0;
}