Witam mam zadanie zamienic z 10 na 16 system, zamienilem na binarny i dalej nie mam pojecia jak to zrobic, jakies porady ?:)

- Rejestracja:ponad 19 lat
- Ostatnio:2 miesiące
2
Jak zamieniłeś na binarny to dalej z górki każde 4 bita to cyfra szesnastkowa.
Tu masz z każdego na każdy: http://forum.4programmers.net/1005274
edytowany 1x, ostatnio: _13th_Dragon

- Rejestracja:ponad 15 lat
- Ostatnio:około 2 godziny
2
Jak masz poprawny binarny to już "kaszka z mleczkiem". Tak jak napisał @_13th_Dragon
- screenshot-20191014121355.png (19 KB) - ściągnięć: 202

racja,
poprawny binarny
jest tu słowem kluczowym :D

- Rejestracja:około 8 lat
- Ostatnio:4 minuty
- Postów:4884
1
Możesz też użyć tego:
#include<iostream>
#include<string>
using namespace std;
void decimal_to_any() {
int a=0, base = 0;
cout<< "Convert integer to any base up to 16 \n";
cout<< "Enter base (2 - 16): \n";
cin >> base;
cout << "\n";
cout<< "Enter integer to converse: \n";
cin >> a;
cout << "\n";
string letters ="0123456789ABCDEF";
int rest;
int c = 0;
char b[sizeof(a)<<3];
do {
rest = a % base;
b[c]=rest;
a=a / base;
c++;
}
while (a!=0);
for(int i= c-1 ; i >= 0;i--)
cout << letters[b[i]];
}
To tylko nieco zmieniony kod z tego wątku: https://4programmers.net/Forum/C_i_C++/320885-konwersjazamiana_z_systemu_dziesietnego_na_szesnastkowyheksadecymalny?p=1556927#id1556927
EDIT: Wersja rekurencyjna, w pseudokodzie (Python), //
- dzielenie w integerach, w C/C++
można zastąpić przez /
:
def dec_to_any(n,base):
"""convert decimal n to base, base: 2 - 16"""
conv_string = "0123456789ABCDEF"
if n < base:
return conv_string[n]
else:
return dec_to_any(n // base, base) + conv_string[n % base]
EDIT2 wersja rekurencyjna w C++
:
string decimal_to_any(int n, int base) {
string conv_string = "0123456789ABCDEF";
if (n < base){
char c = conv_string[n];
string str(1, c);
return str;
}
else
return decimal_to_any2(n / base, base) + conv_string[n % base];
}
edytowany 4x, ostatnio: lion137
Zobacz pozostałe 4 komentarze

Trochę matematyki:
char b[(int)(log(a)/log(base)+1)]
. Poza tym http://forum.4programmers.net/1101404

Kod , który podałem, to poprawiony czyjś kod, rekurencyjnie byłoby bardziej elegancko. Zedytowałem post, dodałem rekurencyjną wersję w pseudokodzie (Python).

Wg mnie nie warto cytować brzydkie kody

Yhm, wrzucam więc rekurencyjny (edycja postu) konwerter w
C++

return string(1,conv_string[n]);
- Zamiast 3-ch wierszy.