#include <iostream>
#include <windows.h>
#include <string.h>
using namespace std;
// HEX to szesnastkowy
// DEC to dziesietny
int potega(int podstawa, int potega)
{
int wynik = 1;
for(int i=0;i<potega;i++)
{
wynik*=podstawa;
}
return wynik;
}
int Hex2Dec(string a)
{
getline(cin,a);
int dlugosc = a.size();
for(int i=0;i<dlugosc;i++)
{
if(a[i]=='1')
a[i]-=48;
if(a[i]=='2')
a[i]-=48;
if(a[i]=='3')
a[i]-=48;
if(a[i]=='4')
a[i]-=48;
if(a[i]=='5')
a[i]-=48;
if(a[i]=='6')
a[i]-=48;
if(a[i]=='7')
a[i]-=48;
if(a[i]=='8')
a[i]-=48;
if(a[i]=='9')
a[i]-=48;
if(a[i]=='A')
a[i]-=48;
if(a[i]=='B')
a[i]-=48;
if(a[i]=='C')
a[i]-=48;
if(a[i]=='D')
a[i]-=48;
if(a[i]=='E')
a[i]-=48;
if(a[i]=='F')
a[i]-=48;
if(a[i]=='0')
a[i]-=48;
}
int b = dlugosc -1;
int liczba=0;
for(int j=0;j<a.size();j++)
{
liczba+=(a[j]*potega(16,b));
b--;
}
cout << liczba << endl;;
return 0;
}
#define N 100
int dec_zbior[N];
int d=0;
int Dec2Hex(int a)
{
dec_zbior[d]=a%16;
d++;
d/=16;
if(a==0) return 0;
else return Dec2Hex(a);
}
int main()
{
int wybor;
int liczba;
string liczba_string;
bool exit = false;
cout << "teraz nastapi proces przemieniania liczb. Jesli chcesz zakonczyc nacisnij ESC ";
while(exit==false)
{
int liczba=0;
cout << "wybierz ktora przemiane chcesz wykorzystac: " << endl;
cout << "1: DEC to HEX" << endl;
cout << "2: HEX to DEC" << endl;
cin >> wybor;
switch(wybor)
{
case 1:
cout << "podaj liczbe do sprawdzenia: ";
cin>> liczba;
Dec2Hex(liczba);
for(int j=d-1;j>=0;j--)
{
cout << Dec2Hex[j];
}
case 2:
cout << "podaj liczbe do sprawdzenia: ";
cin>>liczba_string;
Hex2Dec(liczba_string);
}
cout << endl << "jesli chcesz wyjsc wcisnij ESC";
if(GetAsyncKeyState(VK_ESCAPE))
{
exit = true;
}
}
return 0;
}
Cześć, wiem że prawdopodobnie można zrobić to o wiele prościej. Ale czy ktoś wskazałbym mi przyczyne dlaczego kod nie działa poprawnie?