Witam jako że jestem malo doświadczony w kwestii c++ / obiektowosci, a dostalem do napisania program w ktorym z Podanych przy wywołaniu (parametry wywolania) wartosci dla najwiekszej zostaje ona wypisana i dla takiej wartosci tworzy sie Sito Eratostenesa na tablicy bool, później program dla zadanych w parametrach liczb wypisuje "pierwsza" /"nie pierwsza".
Stworzyłem funkcje ktora znajduje największy parametr, dalej w mainie wywolywana jest funkcja Sita na tym parametrze ale mam problem zeby zmusic program do porownania vectora z parametrami z tablica liczb pierwszych od 0 do Maksymalnego parametru.
vector "tab" posiada to co podal uzytkownik i chce sprawdzic czy te elementy znajduja sie w tablicy globalnej ze wszystkimi Pierwszymi do zadanego maksymalnego parametru [ cos takiego **if (tab[i]==Pierwsze[i]) cout << "jest pierwsza" << endl; ** ] wielu kombinacji juz probowalem dostawalem wiele errorow po kilkukrotnym ich zlikwidowaniu program najczesciej nie chcial wypisac nic opr najwiekszeg parametru :X
Wołam/Błagam o pomoc bo nie moge sie przebić glowa przez ten problem.
Zastanawiałem sie nad użyciem wyjątków do obsługi tego ale ostatecznie skapitulowałem, wklejam kod którejś tam ostatniej próby wiec może być trochę namieszane w niektórych miejscach bo próbowałem juz wszystkiego (chyba). Pomocy ! :C
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
int *Pierwsze;
int wybierzNajwieksza(vector<int>tab) {
int max = 0;
int hand = 0;
for (int i = 0; i <tab.size(); i++) {
hand = tab[i];
if (hand > max)
{
max = hand;
}
}
return max;
}
int SitoEratostenesa(int n) {
bool *tablicaLiczb = new bool[n+1];
for (int i = 2; i * i <= n; i++) {
if (tablicaLiczb[i] == true)
continue;
for (int j = 2 * i; j <= n; j += i) {
tablicaLiczb[j] = true;
}
}
for (int i = 2; i <= n; i++) { // przeszukaj liczby od 2 do n
if (tablicaLiczb[i] == false) { // jeśli liczba nie została usunięta ze zbioru
for (int i = 0; Pierwsze[i]<Pierwsze[n+1]; i++) {
Pierwsze[i]=i;
}
}
}
}
int main(int argc, char *argv[]) {
int Maximum;
Pierwsze = new int[Maximum+1];
vector <int> tab;
for (int i=0; i<argc; i++) {
tab.push_back(atoi(argv[i]));
}
Maximum= wybierzNajwieksza(tab);
cout << "Najwiekszy argument z podanych liczb to: " << Maximum << endl;
SitoEratostenesa(Maximum);
for (int i = 0; Pierwsze[i]<Pierwsze[Maximum+1]; i++) {
for ( int i = 0; tab[i]<tab.size(); i++) {
if ( tab[i] == Pierwsze[i])
cout << tab[i] << " jest liczba pierwsza " << endl;
else
cout << tab[i] << " nie jest liczba pierwsza " << endl;
}
}
return 0;
}
Program w tej postaci nie chce pokazac nic wiecej po za najwiekszym parametrem .