-
float binarny(float licz)
dlaczego przyjmujesz liczbę zmiennoprzecinkową? Nie twierdzę, że nie jest to możliwe do zamiany - tylko z całą pewnością nie na Twój poziom. Zacznij od int
ów.
-
a potem za pomocą funkcji if
if
nie jest funkcją - nie używaj słów, których znaczenia nie znasz.
-
dokonać konwersacji.
konwersację to możesz dokonać z nauczycielem na temat tego zadania :P Liczby między systemami możesz konwertować
.
-
szukałam podobnych tematów (...)
jakie hasła wpisywałaś w Google? Pytam serio - ponieważ naprawdę ciężko jest nie trafić na setki przykładowych kodów choćby wpisując int to binary c++
.
Tak czy siak.
Zacznijmy od sensownej nazwy funkcji - będzie ona zamieniać liczbę naturalną na system binarny - integer to binary
-> int to bin
-> int2bin
(lub bardziej w javowym stylu: integerToBinary
, jak tam kto woli). Powstaje nam zatem:
std::string int2bin(unsigned int num) {
}
Zwróć uwagę, że przyjmujemy liczbę naturalną (unsigned int
), a zwracamy ciąg znaków. Wynika to bezpośrednio z tego, że wszystkie liczby zapisywane w komputerze są tak czy siak za pomocą systemu binarnego (tylko że cout
czy printf '%d'
zamieniają je na dziesiętny), zatem potrzebujemy funkcji, która przyjmie nam liczbę, a zwróci jej reprezentację w odpowiednim systemie, tak abyśmy mogli to wyświetlić.
Luźno napisane będzie to wyglądać tak:
std::string int2bin(unsigned int num) {
std::string result;
do {
result += (num % 2 == 0) ? '0' : '1';
num /= 2;
} while (num > 0);
return std::string(result.rbegin(), result.rend());
}
I teraz tak - ponieważ coś czuję, że przyda się kilka wyjaśnień:
-
(num % 2 == 0) ? '0' : '1'
to tzw. ternary operator
- zamiennik instrukcji warunkowej if
; w internecie bez problemu znajdziesz przykłady i wywody na jego temat, zatem nie będę się duplikował.
- Podobnie jak na kartce po przeliczeniu liczby należy ją czytać od końca, tak samo nasza funkcja musi odwrócić przygotowaną liczbę, czym zajmuje się
return std::string(result.rbegin(), result.rend());
Pozostało więc tylko przetestować:
http://ideone.com/QksyQB
https://www.wolframalpha.com/input/?i=123456+in+binary
... czyli działa ;-)
@_13th_Dragon kiedyś wrzucał funkcyjkę konwertującą dowolną liczbę na systemy od 2-32, z tego co pamiętam, może zauważy to i podrzuci linka ;-) too late, za długo pisałem posta :P