Molim sve koji bi mi mogli rijesiti ovaj problem da mi pomognu.Baze iz kojih mi treba konverzija su:2,3,4,5,6,7,8,9,11,12,13,14,15,16.
konverzija brojeva po bilo kojoj bazi u bazu 10
Zaključano
Zakačeno
pozdrav,
generalno algoritam je ovakav:
podelis broj sa bazom - nadjes kolicnik i ostatak
ostatak zapises a kolicnik proglasis novim brojem
ponavljas postupak sve dok kolicnik ne bude nule
tada ostatke procitas sa desna u levo i to ti je rezultat:
evo primer:
broj 111 baza 5
111:5 = 22 ostatak 1
22:5 = 4 ostatak 2
4:5 = 0 statak 4
broj je 421(baza 5)
generalno algoritam je ovakav:
podelis broj sa bazom - nadjes kolicnik i ostatak
ostatak zapises a kolicnik proglasis novim brojem
ponavljas postupak sve dok kolicnik ne bude nule
tada ostatke procitas sa desna u levo i to ti je rezultat:
evo primer:
broj 111 baza 5
111:5 = 22 ostatak 1
22:5 = 4 ostatak 2
4:5 = 0 statak 4
broj je 421(baza 5)
opa, nisam video da se trazi obrnuti postupak. mogu se koristiti dva nacina:
prvi: neka je broj abcdef napisan u sistemu sa osnovom x. konvertovanje u dekadni sistem se izvodi ovako:
((((a * x + b) * x + c) * x + d) * x + e) * x + f
drugi nacin je slican onome koji sam opsao u prvoj poruci:
neka je dat broj N1 sa osnovom X. neka je y broj koji preveden u dekadni sistem iznosi deset ( na primer ako je sistem sa osnovom 5, y = 20 (u sistemu sa osnovom 5).
primentiti postupak koji sam opisao u prdhodnoj poruci. obratiti paznju da se deli u sistemu sa osnovom X. ostatke pretvarati u dekadni sistem.
N1 : y = N2 i ostatak O1
N2 : y = N3 i ostatak O2
...
Nn : y = 0 i ostatak On
ostatke O1, O2, ..., On konvertovati u dekadni sistem, i zapisati ih obrnutim redom
O1(osnova X) = D1 (osnova 10)
...
On(osnovca X) = Dn (osnova 10)
trazeni broj je Dn...D1D0.
prvi: neka je broj abcdef napisan u sistemu sa osnovom x. konvertovanje u dekadni sistem se izvodi ovako:
((((a * x + b) * x + c) * x + d) * x + e) * x + f
drugi nacin je slican onome koji sam opsao u prvoj poruci:
neka je dat broj N1 sa osnovom X. neka je y broj koji preveden u dekadni sistem iznosi deset ( na primer ako je sistem sa osnovom 5, y = 20 (u sistemu sa osnovom 5).
primentiti postupak koji sam opisao u prdhodnoj poruci. obratiti paznju da se deli u sistemu sa osnovom X. ostatke pretvarati u dekadni sistem.
N1 : y = N2 i ostatak O1
N2 : y = N3 i ostatak O2
...
Nn : y = 0 i ostatak On
ostatke O1, O2, ..., On konvertovati u dekadni sistem, i zapisati ih obrnutim redom
O1(osnova X) = D1 (osnova 10)
...
On(osnovca X) = Dn (osnova 10)
trazeni broj je Dn...D1D0.
izmenjeno 1 put, poslednji put DarkMan 27.10.2005. u 23:52
Izmene poruke
- DarkMan27.10.2005. u 23:52zapis iz teksta poruke
Ili mozes da koristis vec gotovu funkciju strtoul (definisana u header-u stdlib.h):
Mali primer:
Code:
unsigned long strtoul(
const char *nptr,
char **endptr,
int base
);
Parameters:
nptr Null-terminated string to convert.
endptr Pointer to character that stops scan.
base Number base to use.
Return Value
strtoul returns the converted value, if any, or ULONG_MAX on overflow.
strtoul returns 0 if no conversion can be performed.
Errno is set to ERANGE if overflow or underflow occurs.
unsigned long strtoul(
const char *nptr,
char **endptr,
int base
);
Parameters:
nptr Null-terminated string to convert.
endptr Pointer to character that stops scan.
base Number base to use.
Return Value
strtoul returns the converted value, if any, or ULONG_MAX on overflow.
strtoul returns 0 if no conversion can be performed.
Errno is set to ERANGE if overflow or underflow occurs.
Mali primer:
Code:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
printf("(hex) FF = (dec) %d", strtol("FF", NULL, 16));
printf("press any key...");
getch();
return 0;
}
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
printf("(hex) FF = (dec) %d", strtol("FF", NULL, 16));
printf("press any key...");
getch();
return 0;
}