Zamiana systemów liczbowych-wczytanie danych

0

Chce napisać program, któremu podam kilka liczb. Będą to liczby albo w systemie dziesiątkowym albo w szesnastkowym czyli np. 5, 68, 0x44, 2, 0x5. Program ma zamienić daną liczbę na drugi system czyli jeśli jest w systemie szesnastkowym to na dziesiątkowy i na odwrót. Z zamianą sobie poradzę ale jak wczytać te zmienne. Najlepiej do tablicy, tylko chcę by była to tablica intów a nie stringów. By wczytać takiego inta np 0x44 mogę dodać do cin>>hex ale co wtedy z tymi liczbami dziesiątkowymi?

0

A twoim zdaniem liczba 54 jest w systemie dziesiętnym, szesnastkowym, ósemkowym, dwunastkowym czy jakim?
Liczby szesnastkowe muszą być poprzedzone zawsze 0x ?

0

Jeżeli umiesz posługiwać się tablicą char, to po prostu do takiej wczytujesz swoją liczbę. Jeśli drugi znak wczytanej liczby to x, ustawiasz system na szesnastkowy, inaczej na dziesiętny i używasz funkcji itoa (ale nie jestem pewny, czy będzie w twoim kompilatorze). Potem drukujesz liczbę normalnie.

0

No miej więcej tak robiłem wczytałem liczby do tablicy stringów jeśli na drugim miejscu był 'x' to zamieniałem liczbę na dziesiątkową a jak nie to na szesnastkową. Wszystko działa poprawnie tylko wymagania mojego wykładowcy są chyba inne liczby mam wczytać do intów... dziesiątkową mogę wpisać tak:cin>>a; szesnastkową tak: cin>>hex>>a; tylko jak to pogodzić przecież będę programowi podawał raz 0x44 a raz 44 a nie da się ustawić warunku by raz wczytywał liczby przez cin a raz przez cin>>hex...

0

scanf pozwala na wczytanie liczby niezależne od systemu (zdaje się przez %i). Podejrzewam, że cin ma coś takiego domyślnie. Printf też pozwala wypisywać liczby w różny sposób %d - dziesiętna ze znakiem, %u - dziesiętna bez znaku, %x - szesnastkowa bez znaku, itd. W cout też można zmieniać format, ale to już sam musiz sobie doszukać.

1

Wczytaj liczbę przez cin jako string, a później sprawdź czy to hex czy nie, parsuj do inta (najprościej chyba da się przez stringstream, nie używam streamów więc nie wiem) i wypisuj. Któraś z tych części wymaga dalszego wytłumaczenia/przykładu?

0

mozna, tylko musisz to wczytac jako string i sprawdzic czy jest 0x , i wtedy instrukcja switch wczytujesz albo hex albo dziesietnie.

0

mozna, tylko musisz najpierw wczytac to jako string, sprawdzic czy wystepuje 0x czy tez nie, a potem przekonwertowac to warunkiem na odpowiedni typ.
poczytaj o sprintf - z tego potem wyciagniesz co trzeba.

0

mozna, tylko musisz najpierw wczytac to jako string, sprawdzic czy wystepuje 0x czy tez nie, a potem przekonwertowac to warunkiem na odpowiedni typ.
poczytaj o sprintf - z tego potem wyciagniesz co trzeba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1