Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 11. 12. 2011 14:33 — Editoval itcrowd (11. 12. 2011 14:48)

itcrowd
Příspěvky: 28
Reputace:   
 

Převod čísel c#

Ahoj potřeboval bych poradit s jedním algoritmem

Code:

   Console.WriteLine("Zadejte číslo: ");
            string cislo = Console.ReadLine();
            int vysledek = 0;
            char[] pole = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
            int[] pole_cisla = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
   
            for (int k = 0; k < cislo.Length; k++)  
            {
                vysledek = vysledek * 16 + cislo[k] - '0';
            }
            Console.WriteLine(vysledek);
            Console.ReadLine();

Bohužel nevím jak převést symboly A-F na příslušné hodnoty 10-15 tak, aby program správně převáděl.
Děkuji za pomoc

Offline

 

#2 11. 12. 2011 14:39 — Editoval Pavel Brožek (11. 12. 2011 14:41)

Pavel Brožek
Místo: Praha
Příspěvky: 5694
Škola: Informatika na MFF UK
Pozice: Student
Reputace:   194 
 

Re: Převod čísel c#

Co to nějak ošetřit podle toho, kde se znak nachází v ascii tabulce?

Code:

int cifra = (cislo[k] > '9') ? (cislo[k] - 'A' + 10) : (cislo[k] - '0');
vysledek = vysledek * 16 + cifra;

Nevím jestli to je správně, ale snad by měla být jasná myšlenka.

Offline

 

#3 11. 12. 2011 14:45

itcrowd
Příspěvky: 28
Reputace:   
 

Re: Převod čísel c#

↑ Pavel Brožek: Děkuji, tohle mě nenapadlo

Offline

 

#4 11. 12. 2011 14:58 — Editoval itcrowd (11. 12. 2011 14:59)

itcrowd
Příspěvky: 28
Reputace:   
 

Re: Převod čísel c#

Code:

    Console.WriteLine("Zadejte číslo: ");
            string cislo = Console.ReadLine();
            int vysledek = 0;
            char[] pole = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
            int[] pole_cisla = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };

            for (int k = 0; k < cislo.Length; k++)
            {
                int cifra = (cislo[k] > '9') ? (cislo[k] - 'A' + 10) : (cislo[k] - '0');
                vysledek = vysledek * 16 + cifra;
                
            }
            Console.WriteLine(vysledek);
            Console.ReadLine();

Po přidání

Code:

 int cifra = (cislo[k] > '9') ? (cislo[k] - 'A' + 10) : (cislo[k] - '0');
                vysledek = vysledek * 16 + cifra;

mi program stejně nepřevádí správně

Oprava: Zadával jsem malá písmena, vše funguje jak má

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson