Wypisywanie liczb pierwszych.
Ostatnio zmodyfikowano 2013-07-05 17:25
tiger133 Temat założony przez niniejszego użytkownika |
Wypisywanie liczb pierwszych. » 2013-07-05 02:26:32 Witam, napisałem program do wypisywania liczb pierwszych: #include <iostream> using namespace std;
bool p = true; int pierwsza( int c ) { for( int j = 2; j < c; j++ ) { if( c % j == 0 ) p = false; } if( p == true ) { cout << c << " jest pierwsza" << endl; } };
int main() { for( int i = 1; i <= 10; i++ ) pierwsza( i ); } Program wyświetla tylko trzy pierwsze liczby, nie reaguje na zmiany liczby wyliczeń pętli "for(int i = 1 ; i<=10;i++)" Funkcja "pierwsza" sama w sobie działa ale nie mogę podstawiać po kolei argumentów. Nie wiem co robię źle ; ( Jeśli ktoś mógłby mi wytłumaczyć co robię nie tak, to bardzo proszę. Z góry dzięki za odpowiedzi ;) Pozdrawiam, tiger133 |
|
akwes |
» 2013-07-05 04:06:57 Prześledź działanie zmiennej logicznej w Twoim programie. Zastanów się kiedy powinna mieć wartość true, i kiedy jest ustawiana w niej wartość true przy kilkukrotnym użyciu jej. |
|
johny |
» 2013-07-05 07:54:51 p = true; Kolejne iteracje: pierwsza(1); <-- Program w funkcji nie wchodzi do pętli, więc wartość p nie zmienia się. p = true; pierwsza(2); <-- Program w funkcji również nie wchodzi do pętli, więc wartość p się nie zmienia. p = true; pierwsza(3); <-- Pętla w funkcji wykonuje się 1 raz, warunek na zerową resztę nie jest spełniony, więc wartość p się nie zmienia. p = true; pierwsza(4); <-- Przy drugim obiegu pętli w funkcji warunek zostaje spełniony, p = false. I tak do końca już.
Przy kolejnym obiegu nawet jeśli warunek nie zostanie spełniony, to flaga p = false, tak czy siak. A tak w ogóle to zmienne globalne nie są dobrym pomysłem ;p |
|
pekfos |
» 2013-07-05 11:21:09 Na początku funkcji pierwsza() ustawiaj p na true. Najlepiej, jakby to była zmienna lokalna. |
|
tiger133 Temat założony przez niniejszego użytkownika |
» 2013-07-05 17:25:24 Bardzo dziękuje za rozwiązanie problemu ; ) |
|
« 1 » |