Cześć. Mam dość krytyczny problem z kodem i mam nadzieję że dacie mi jakieś wskazówki. Otóż chcę napisać program, który z tablicy losowych liczb( dla przykładu pracuje na dziesięciu elementach) znajdzie ciąg liczb względnie pierwszych(takich, których nwd=1). Program ma wybierać liczby tak długo jak są dostępne (jednak w przykładzie pracuje na trzech okrążeniach w pętli for). Wpadłem na pomysł żeby liczby które nie są z jakąś wylosowaną liczbą względnie pierwsze wyrzucać na koniec tablicy i zmniejszać zakres szukania o 1. Pomysł był super…ale tylko przy pierwszym ‘‘okrążeniu’’ dalej program wyświetla mi duże cyfry(przekroczyłem zakres tabeli).
void losowana(int *tab,int n)
{
int j=1;
int i,k;
int kolejka=0;
for(int a=0;a3;a++)
{
int *t;
t=new int[n];
while(n1)
{
if(kolejka==0)
{
i=rand()%n;
t[a]=tab[i];
cout"Wylosowalem: "tab[i]endl;
int bufor=tab[n-1];
tab[n-1]=tab[k];
tab[k]=bufor;
}
if(kolejka0)
{
k=rand()%n;
if(nwd(t[a],tab[k])==1)
{
t[j]=tab[k];
int bufor=tab[n-1];
tab[n-1]=tab[k];
tab[k]=bufor;
j++;
}
if(nwd(t[a],tab[k])==0)
{
int bufor=tab[n-1];
tab[n-1]=tab[k];
tab[k]=bufor;
}
}
n--;
kolejka++;
}
cout"j: "jendl;
n=j+3;
kolejka=0;
for(int c=0;cj;c++)
{
tab[c]=t[c];
}
for(int c=0;cj;c++)
{
couttab[c]endl;
}
j=1;
delete []t;
}