Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wypisywanie liczb pierwszych.

Ostatnio zmodyfikowano 2013-07-05 17:25
Autor Wiadomość
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:
C/C++
#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 );
   
    /** co ciekawe jak wpisze:
    *  pierwsza(1);
    *  pierwsza(2);
    *  pierwsza(3);
    *  itd.
    *  program nie ma problemu z wyświetleniem.
    */
}
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
P-87021
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.
P-87022
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
P-87023
pekfos
» 2013-07-05 11:21:09
Na początku funkcji pierwsza() ustawiaj p na true. Najlepiej, jakby to była zmienna lokalna.
P-87033
tiger133
Temat założony przez niniejszego użytkownika
» 2013-07-05 17:25:24
Bardzo dziękuje za rozwiązanie problemu ; )
P-87057
« 1 »
  Strona 1 z 1