Witam, mam pewien problem, poniżej wklejam kod do programu, problem polega na tym, że funkcja szukaj_c wypisuje złe c. W tablicy "pierwsze" znaduje sie 5 liczb - 2,3,5,7,11 w tablicy "czynniki" znajdują się 3 liczby - 2,2,3 - sprawdzałem tablice wypisują własnie te liczby i zarówno zmienna "ile" - mowiaca ile jest liczb w tablicy "pierwsze" jak i zmienna "ilosc_czynnikow" mowiaca ile jest liczb w tablicy "czynniki" też jest wypisywana dobrze. Funkcja szukaj_c "leci" po tablicach i szuka liczby ktora znajduje sie w tablicy "pierwsze" a nie znajdue sie w talblicy "czynniki" i kiedy znajdzie jest break. Jednak po odpaleniu programu w konsoli pojawia sie: nasze c: 3, nasze c:3 , tak dwa razy. Probowalem juz na pare sposobów, zmieniac void na int i zwracać wartość potem jeszcze inaczej i caly czas mam ten problem. Chodzi o to zeby funkcja szukaj_c znalazła c, powinna znaleźć liczbe - 5 i poźniej ta 5 powinna byc podstawiona to wzoru na końcu kodu. Bardzo proszę o pomoc.
#include <iostream>
using namespace std;
int c;
void szukaj_c(int m,int ile,int x_max,int ilosc_czynnikow,int czynniki[],int pierwsze[]) //TUTAJ FUNKCJA SZUKAJ_C //
{
int i = 0;
int j = 0;
do
{
if (pierwsze[i] != czynniki[j])
{
c = pierwsze[i];
break;
}
i++;
j++;
} while (i != ile || j != ilosc_czynnikow);
cout << "Nasze c: " << c << endl;
}
int szukaj_a(int m,int ab)
{
int u = 1, w;
while (u < m)
{
w = m / u;
if (m%u == 0)
{
while (ab <= m + 1)
{
if ((ab - 1) % w == 0 && ab>m)
{
cout << "Nasze a: " << ab << endl;
return ab;
break;
}
ab++;
}
}
ab = 1;
u++;
}
}
int main()
{
int x_max, m;
int ilosc_czynnikow = 0;
int ile = 0;
cout << "Podaj x_max: ";
cin >> x_max;
m = x_max + 1;
int* czynniki = new int[m / 2];
int* pierwsze = new int[m];
cout << "M(zakres) wynosi: " << m << endl;
cout << "Rozklad na czynniki pierwsze liczby " << m << ": ";
int k = 2;
int i = 0;
while (m>1)
{
while (m%k == 0) //dopóki liczba jest podzielna przez k
{
cout << k << " ";
m /= k;
czynniki[i] = k;
i++;
ilosc_czynnikow++;
}
++k;
}
cout << endl;
unsigned int lp, p, d;
bool t;
m = x_max + 1;
ile = 0;
int l = 0;
lp = 0;
p = 2;
cout << "Liczby pierwsze z zakresu od 0 do m: ";
for (int i = 0; i < m - 1; i++)
{
t = true;
for (d = 2; d <= p / 2; d++)
if (p % d == 0)
{
t = false;
break;
}
if (t)
{
cout << p << " ";
pierwsze[l] = p;
l++;
ile++;
}
p++;
}
cout << endl;
szukaj_c(m, ile, x_max, ilosc_czynnikow, czynniki,pierwsze); //TUTAJ WYWOLANIE FUNKCJI//
cout << "Nasze c: " << c << endl;
int ab = 1;
szukaj_a(m,ab);
int *x;
x = new int[m];
x[0] = 0;
int *wyniki;
wyniki = new int[m];
cout << "x[0]=0" << endl;
for (int i = 1; i < m; i++)
{
x[i] = ((ab*x[i - 1]) + c) % m; //TUTAJ MA BYC PODSTAWIONE ZNALEZIONE C//
cout << "x[" << i << "] = " << x[i] << endl;
wyniki[i] = x[i];
}
int r = 10, s = 7, m2 = 128;
cout << endl;
cout << "-------------------" << endl;
cout << " PUNKT NR 2 " << endl;
cout << "-------------------" << endl;
for (int i = 1; i <= r;i++)
{
wyniki[i] = (wyniki[(r - s + i) % r] + wyniki[i]) % m2;
cout << "Fib[" << i << "] = " << wyniki[i] << endl;
}
system("pause");
return 0;
}