Prevod z hexadecimalnej sustavy – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prevod z hexadecimalnej sustavy – C / C++ – Fórum – Programujte.comPrevod z hexadecimalnej sustavy – C / C++ – Fórum – Programujte.com

 

street punk+1
Návštěvník
1. 2. 2012   #1
-
0
-

Zadanie: Vstupom je pole znakov. Výstupom je číslo -1, ak obsahuje iné znaky ako hexadecimálne číslice. Inak je výstupom číslo (int), ktoré je zapísané v danom reťazci v 16-kovej sústave od najvyššej číslice. Príklad: f("1A") vráti 26
 

Takže zatial mám
 

int hexadecimalne_cislo(char pole[], int dlzka)
{
	int i, j;
	int pom;
	int dlzka_sustavy;
	char sustava[] = "0123456789ABCDEF"; //znaky hexadecimalnej sustavy

	dlzka_sustavy = strlen(sustava);

	for(i = 0; i < dlzka; i++) //cyklus na zistenie, ci su znaky hexadecimalne
	{
		if(islower(pole[i])) //zmeni male pismena na velke
			pole[i] = toupper(pole[i]);

		for(j = i; j < dlzka_sustavy; j++)
		{
			if(pole[i] != pole[j]) //ked sa nejaky znak nezhoduje so znakom sustavy vrati -1 a vyskoci z funkcie
			{
				return -1; 
				exit(0);
			}
		}
	}

	for(i = dlzka - 1; i > 0; i--) //cyklus na prevedenie do dekadickej sustavy (desiatkovej)
	{

	}

}

Problém je pri prevádzaný. Nieviem ako spraviť, že keď mi narad príde nejaké písmeno, aby počítalo s hodnotou, akú mu priradím. Respektíve, ako priradiť k tomu písmenu hodnotu. Kedže do poľa som už priradil písmeno, tak už hodnotu k tomu priradiť nemôžem. Má sa to robiť bez  štruktúr.

Nahlásit jako SPAM
IP: 188.112.113.–
liborb
~ Redaktor
+18
Guru
1. 2. 2012   #2
-
0
-

Když už používáš ty str... funkce ...nestačilo by za to pole znaků přidat nulový znak a použít funkci strtol s base = 16. No když by byl nějaký endptr, tak vrátit -1 jinak to co vrátí strtol?

Nahlásit jako SPAM
IP: 78.80.52.–
street punk+1
Návštěvník
1. 2. 2012   #3
-
0
-

No moc som nepochopil. A tie funkcie vôbec nepoznám. Nevieš hodiť dajaký príklad a bez skratiek (endptr..) ?

Nahlásit jako SPAM
IP: 188.112.113.–
KIIV
~ Moderátor
+43
God of flame
1. 2. 2012   #4
-
0
-

char je v pocitacich 8bitove cislo... dela se to tak, ze pokud mas cislovku odecte se znak '0' a vyjde ti 0-9 pokud mas 'A' - 'F' odectes 'A' a prictes 10 ... (+10 protoze nechces mit A=0 ale 10)

dale exit(0) po returnu muzes rovnou smazat, nikdy se k nemu nema sanci dostat

pole co predavas bys mohl spis predat jako obycejny retezec... nemusis pak resit kraviny jako jeho delku

taky tam mas zbytecne hodne cyklu... zjistit nespravne znaky jde i behem prevodu... vesmes musi stacit cyklus jediny a v nem par vetvi podle toho jestli jsi v 0-9 A-F a-f  nebo neco jinyho

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
liborb
~ Redaktor
+18
Guru
1. 2. 2012   #5
-
0
-
Nahlásit jako SPAM
IP: 78.80.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 79 hostů

Podobná vlákna

Prevod z 10 do 2 sústavy — založil Eddy777

Ciselne sustavy — založil devilfish

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý