dzielenie z resztą (prawda, fałsz)
Ostatnio zmodyfikowano 2014-03-24 17:26
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. #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. |
|
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. |
|
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: #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; } |
|
MrPoxipol |
» 2014-03-24 15:47:42 |
|
OczkoSX |
» 2014-03-24 15:49:10 #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 ;) |
|
alixir |
» 2014-03-24 17:26:15 A nie prościej zmienić w funkcji? Wtedy wynik zawsze jest taki jakiego oczekujemy. return !( liczba % dzielnik ); |
|
« 1 » |