Program u c++u

adsi

Početnik
Poruka
10
ja bi zamolio nekog ko zna da mi napiše kod za program u c++u, jer ja ga ne mogu shvatiti nikako, koji kada upišemo broj sa bazom 10 pretvara u broj sa bilo kojom drugom bazom od 2 do 16, npr.
broj 55 sa bazom 10 u broj sa bazom 8 ili 5....
 
u majku mu.....e sad si me zainteresovao. dobices kod za par sati (ako uspem, mada nije tesko)

a jel znas ti matematicki postupak prebacivanja brojeva iz jednog u drugi brojevni sistem?
 
Evo ti uputsvo

Za pretvaranje decimalnih u druge sisteme ides ovako uzmes decimalni broj i djelis sa bazom novog brojevnog sistema i pamtis ostatke (ako su veci od 10 onda ides A, B, C i td za brojeve 10, 11, 12, ...). Rezultat tog djeljenja opet djelis sa bazom i td... Sve dok ne dodjes do nule za rezultat. Na kraju samo obrnes redosljed zapamcenih ostataka i to ti je broj u novom sistemu! (npr za broj 5 prebacis u ternarni sistem ides ovako: 5:3 = 1(2), 1:3 = 0(1). Dakle broj 5 u ternarnom sistemu je 12)

Za obrnuto pretvaranje uzmes broj u nekom sistemu baze n... i ides redom sa desna na lijevo uzimas vrijednost cifre (ako je cifra 1 vrijednost joj je 1 ako je cifra A vrijednosto joj je 10, B je 11, i td....) i pomnozis je sa eksponentom broja n na onu potenciju koja je to cifra po redu sa lijeve strane pocevsi da je najdesnja cifra na poziciji 0... I na kraju saberes sve ove vrijednosti i imas decimalni broj! (npr. broj 12 u ternarnom sistemu (baza n = 3) ces prebnaciti u decimalni ovako: 2*3^0 + 1*3^1 = 2*1 + 1*3 = 2 + 3 = 5)
__________________
 
Evo ga za normalno pretvaranje, a za obrnuto kad nadjem vremena, bilo je izazovno ;-)
Kod:
//HEX brojevi Miljan Sucur
#include <iostream>
using namespace std;

void func(float br,float bz)
{
	int rez,len,z = 0;
	unsigned int num;
	int brj[20];
	char b[20];
	char c[20];
	string niz;
	rez = br/bz;
	num = br - (rez * bz);
	brj[z] = num;
	z++;
	while(!(rez <= 0))
	{
		len = rez;
		rez = len/bz;
		num = len - (rez * bz);
		brj[z] = num;
		z++;
	}
for(int i = 0;i <= z; i++)
{
	if(brj[i] == 0)
		b[i] = char('0');
	if(brj[i] == 1)
		b[i] = char('1');
	if(brj[i] == 2)
		b[i] = char('2');
	if(brj[i] == 3)
		b[i] = char('3');
	if(brj[i] == 4)
		b[i] = char('4');
	if(brj[i] == 5)
		b[i] = char('5');
	if(brj[i] == 6)
		b[i] = char('6');
	if(brj[i] == 7)
		b[i] = char('7');
	if(brj[i] == 8)
		b[i] = char('8');
	if(brj[i] == 9)
		b[i] = char('9');
	if(brj[i] == 10)
		b[i] = char('A');
	if(brj[i] == 11)
		b[i] = char('B');
	if(brj[i] == 12)
		b[i] = char('C');
	if(brj[i] == 13)
		b[i] = char('D');
	if(brj[i] == 14)
		b[i] = char('E');
	if(brj[i] == 15)
		b[i] = char('F');

}
for(int i = z-1; i >= 0; i--)
{
cout << b[i];
}
cout << "\n\n\n";

}

int main()
{
float broj, baza, rezultatf;
int rezultati,ostatak;
cout << "Unesite broj: ";
cin >> broj;
cout << "Unesite bazu: ";
cin >> baza;
func(broj,baza);
system("PAUSE");

}
 
Evo jednog elegantnijeg rešenja:

#include <stdio.h>
void main()
{
int c[100],n,m,i,j;
scanf ("Uneti broj i osnovu u koju se konvertuje: %d%d\n",&n,&m);
i=0;
while (n>0) {
c[i++]=n%m;
n=n/m;
}
printf ("\n");
for (j=i-1;j>=0;j--)
if (c[j]>9)
printf ("%c",c[j]+55);
else
printf ("%d",c[j]);
}
 

Back
Top