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

Zmienna logiczna typu Bool.

Ostatnio zmodyfikowano 2017-04-09 22:23
Autor Wiadomość
DrFreem4n
Temat założony przez niniejszego użytkownika
Zmienna logiczna typu Bool.
» 2017-04-09 22:00:59
Witam.
Nie potrafię zrozumieć dlaczego w poniższym programie funkcja "czypierwsza" zawsze zwraca wartość true. Mój tok myślowy napotyka na błąd gdy jestem przy 4:
Reszta z dzielenia 4/2 wynosi zero - wydaję się, że powinno zwrócić false. Jednak program wypisuje wszystkie liczby od 1 do 99.
Dziękuje z góry za wskazanie błędów myślowych.
Pozdrawiam.

C/C++
#include <iostream>
#include <cstdlib>

using namespace std;

bool czypierwsza( int liczba ); //FUNKCJA SPRAWDZAJACA
bool czypodzielna( int liczba, int dzielnik ); //PODFUNKCJA SPRAWDZAJA PODZIELNOSC

int main()
{
    cout << "Program sprawdzi liczby od 1 do 100 i wypisze liczby pierwsze:";
   
    for( int i = 0; i < 100; i++ )
    {
        if( czypierwsza( i ) );
       
        {
            cout << i << endl;
        }
    }
}
// DEFINICJE
bool czypierwsza( int liczba )
{
    for( int i = 2; i < liczba; i++ )
    {
        if( czypodzielna( liczba, i ) )
        {
            return false;
        }
    }
    return true;
}
bool czypodzielna( int liczba, int dzielnik )
{
    return(( liczba % dzielnik ) == 0 );
}
P-160037
carlosmay
» 2017-04-09 22:23:50
Błąd składniowy (tzn. nie błąd, ale zmienia działanie)
C/C++
if( czypierwsza( i ) ); // <-- średnik kończy instrukcję warunkową (instrukcja pusta)

Jedynka nie jest liczbą pierwszą.
P-160038
« 1 »
  Strona 1 z 1