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

dzielenie z resztą (prawda, fałsz)

Ostatnio zmodyfikowano 2014-03-24 17:26
Autor Wiadomość
filipbaza
Temat założony przez niniejszego użytkownika
dzielenie z resztą (prawda, fałsz)
» 2014-03-24 14:09:37
Kłaniam się. :)

Nie rozumiem co zrobiłem źle.
Cel jest taki aby po wczytaniu dwóch liczb, wyświetlało czy jedna dzieli drugą bez reszty (prawda-1) czy nie dzieli(fałsz-0.
Program wyświetla odwrotnie czyli gdy się dzielą bez reszty wyświetla 0 a gdy nie 1.

C/C++
#include <iostream>
#include<cstdlib>
#include<math.h>

using namespace std;

bool podzielna( int liczba, int dzielnik )
{
    return liczba % dzielnik;
}
int main()
{
    int liczba, dzielnik;
    cin >> liczba;
    cin >> dzielnik;
    podzielna( liczba, dzielnik ) == 0;
    cout << podzielna( liczba, dzielnik ) << endl;
    return 0;
}

Gdy zamienię "==" na "!=" nic to nie daje.
P-107125
alixir
» 2014-03-24 14:26:37
return liczba % dzielnik;

Funkcja nie zwraca ci prawdy tak jak byś tego oczekwał.
Weźmy pod uwagę np. 4%2
Wynikiem tego działania jest 0 - czyt. resztą z dzieleni liczby 4 przez 2 jest liczba 0.
A ponieważ zero odpowiada fałszowi dlatego masz mylne wyniki.
P-107126
filipbaza
Temat założony przez niniejszego użytkownika
» 2014-03-24 15:05:28
Wiem jak to zrobić bez użycia: bool( int liczba, int dzielnik)
ale niestety muszę tego użyć.
Gdybyś mógł to mnie nakieruj na odpowiednią drogę, co mam zmienić lub czego użyć.

Próbowałem w tę stronę ale wtedy jest błąd:
C/C++
#include <iostream>
#include<cstdlib>
#include<math.h>
using namespace std;
bool podzielna( int liczba, int dzielnik );
int main()
{
    int liczba, dzielnik;
    cin >> liczba;
    cin >> dzielnik;
    if( liczba % dzielnik == 0 )
    {
       
        podzielna( liczba, dzielnik ) = true;
        cout << podzielna( liczba, dzielnik ) << endl;
    }
    else { podzielna( liczba, dzielnik ) = false;
        cout << podzielna( liczba, dzielnik ) << endl;
    }
    return 0;
}
P-107128
MrPoxipol
» 2014-03-24 15:47:42
P-107130
OczkoSX
» 2014-03-24 15:49:10
C/C++
#include <iostream>
#include<cstdlib>
#include<math.h>

using namespace std;

bool podzielna( int liczba, int dzielnik )
{
    return liczba % dzielnik;
}
int main()
{
    int liczba, dzielnik;
    cin >> liczba;
    cin >> dzielnik;
    if( podzielna( liczba, dzielnik ) ) cout << "Wynik z reszty nie jest równy 0!";
   
    return 0;
}

Prawie, że miałeś dobrze ;)
P-107131
alixir
» 2014-03-24 17:26:15
A nie prościej zmienić w funkcji? Wtedy wynik zawsze jest taki jakiego oczekujemy.

return !( liczba % dzielnik );
P-107132
« 1 »
  Strona 1 z 1