Witam !
Zadanie polega na tym, że dopóki nie wpiszę -1, program ma wyświetlać liczbę. Jeśli wpiszę liczbę dziesiętną ma wyświetlić szesnastkową i odwrotnie.
Przykład:
Wejście:
4
7
44
0x80685
-1
Wyjście
0x4
0x7
0x2C
525957
Oto mój kod:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
string liczba;
string przerwij = "-1";
void change_system_number(string liczba);
int main()
{
cin >> liczba;
while (liczba != przerwij)
{
change_system_number(liczba);
liczba = "";
cin >> liczba;
}
return 0;
}
void change_system_number(string liczba)
{
if (liczba[1] == 'x') // hex to dec
{
int l_hex = stoi(liczba, 0, 16);
cout << l_hex << endl;
liczba = "";
l_hex = 0;
}
else //dec to hex
{
int l_hex = atoi(liczba.c_str());
cout << hex << "0x" << l_hex << endl;
liczba = "";
l_hex = 0;
}
liczba = "";
}
Problem:
Jeśli zamienię pierwszy raz liczbę 16 na 10 to działa dobrze, później wpisuję serię liczb dziesiętnych i też jest spoko. Problem jest wtedy, gdy chcę zamienić liczbę 16 na 10 raz jeszcze. Wyświetla mi się wtedy sama końcówka, po 0x...