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

Zamiana z systemu 2 na 16 c++

Cloud VPS
0 głosów
1,519 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez adamus Użytkownik (860 p.)

Witam jak moge napisac program z zamiany liczby w systemie 2 na 16 ? Do tej pory udalo mi sie tylko zrobic z 16 na 2 i nie wiem jak zabrac sie za odwrotna sytuacje. Tutaj kod z 16 na 2.

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
	int i,j,pom;
	string x, zbior="0123456789ABCDEF";
	do
	{
		cout<< "Podaj liczbe w systemie 16 ";
		cin>> x;
		for(i=0;i<x.size();i++)
		{
			for(j=0;j<zbior.size();j++)
			{
				if(x[i]==zbior[j])
					{
						pom++;
						break;
					}
			}
		}
	}while(x[i]==zbior[j]);
	for(i=0;i<x.size();i++)
	{
		switch(x[i])
		{
		case '0': 
			cout<< "0000 "; 
			break; 
		case '1': 
			cout<< "0001 "; 
			break; 
		case '2': 
			cout<< "0010 "; 
			break; 
		case '3': 
			cout<< "0011 "; 
			break;
		case '4': 
			cout<< "0100 "; 
			break;
		case '5': 
			cout<< "0101 "; 
			break;
		case '6': 
			cout<< "0110 "; 
			break; 
		case '7': 
			cout<< "0111 "; 
			break; 
		case '8': 
			cout<< "1000 "; 
			break; 
		case '9': 
			cout<< "1001 "; 
			break; 
		case 'A': 
			cout<< "1010 "; 
			break; 
		case 'B': 
			cout<< "1011 "; 
			break; 
		case 'C': 
			cout<< "1110 "; 
			break; 
		case 'D': 
			cout<< "1101 "; 
			break; 
		case 'E': 
			cout<< "1110"; 
			break; 
		case 'F': 
			cout<< "1111 "; 
			break; 
		}
	}
	getch();
	return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 18 listopada 2018 przez sefir Dyskutant (8,560 p.)
wybrane 19 listopada 2018 przez adamus
 
Najlepsza
Zamianę na szesnastkowy robisz podobnie. Czytaj kolejne 4 bity i w switchu zamieniaj na wersję szesnastkową. W for zamiast i++ daj i+=4
komentarz 18 listopada 2018 przez adamus Użytkownik (860 p.)
tak sam towrzyłem
komentarz 18 listopada 2018 przez adamus Użytkownik (860 p.)
to mozesz opisac jak sie od poczatku za to zabrac bo jakos tego nie widze..
komentarz 18 listopada 2018 przez sefir Dyskutant (8,560 p.)
1 stwórz tablicę liczb dwójkowych

2 w petli for sprawdz ktora liczba dwójkowa jest równa wartości x.substr(i,4), wtedy zwróć index tego elementu z tablicy

3 zwroc wartosc z tablicy zbior o tym indeksie

4 doklej to do stringa wynikowego
komentarz 18 listopada 2018 przez adamus Użytkownik (860 p.)
okej a casemi bym tego nie zrobil?
komentarz 18 listopada 2018 przez sefir Dyskutant (8,560 p.)
Nie, bo w switchu nie możesz sprawdzać stringa, co jest strasznie głupie :P
0 głosów
odpowiedź 18 listopada 2018 przez Maciej Złotorowicz Gaduła (4,230 p.)
Jeżeli chcesz to robić tą metodą to zamianę w drugą stronę można wykonać praktycznie tak samo - wystarczy rozpoznawać po 4 bity z liczby i przypisywać im kolejne cyfry w hexie:
1111 1000
   F      8
Wyizolować 4 znaki ze stringa można tym: http://www.cplusplus.com/reference/string/string/erase/
komentarz 18 listopada 2018 przez adamus Użytkownik (860 p.)
To od czego tak dokładniej zacząc ?
komentarz 19 listopada 2018 przez Maciej Złotorowicz Gaduła (4,230 p.)
możesz np pobierać do bufora 1 4 znaki ze stringa (następnie przy użyciu earse wytnij 4 pierwsze znaki) rozpoznaj swich'em jaka kombinacja jest w buforze i wyświetl odpowiadający jej znak.

Podobne pytania

0 głosów
3 odpowiedzi 444 wizyt
pytanie zadane 29 sierpnia 2017 w Offtop przez Badzonor Obywatel (1,410 p.)
0 głosów
2 odpowiedzi 1,244 wizyt
0 głosów
2 odpowiedzi 1,087 wizyt
pytanie zadane 30 października 2017 w Egzaminy zawodowe przez Zawisza czarny Obywatel (1,720 p.)

93,481 zapytań

142,414 odpowiedzi

322,758 komentarzy

62,894 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...