• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++, zamiana pozycyjnych systemow liczbowych

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
386 wizyt
pytanie zadane 28 sierpnia 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
#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?

komentarz 28 sierpnia 2019 przez MetGang Nałogowiec (34,380 p.)
Nie działa poprawnie, gdyż zawiera w sobie błąd.
komentarz 29 sierpnia 2019 przez jankustosz1 Nałogowiec (33,050 p.)

@martin1724, Mógłbyś wytłumaczyć sens tego?

        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;

 

komentarz 29 sierpnia 2019 przez jankustosz1 Nałogowiec (33,050 p.)
W sensie nie ważne co tam jest i tak odejmujesz 48. W przypadku litery od A do F powinieneś odjąć 'A' i dodać 10

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 429 wizyt
0 głosów
2 odpowiedzi 36,227 wizyt
pytanie zadane 29 października 2016 w C i C++ przez Steefler Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 180 wizyt
pytanie zadane 12 sierpnia 2022 w C i C++ przez Noizz00 Użytkownik (870 p.)

90,818 zapytań

139,493 odpowiedzi

313,553 komentarzy

60,311 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...