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
Ahoj potřeboval bych poradit s jedním algoritmem
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

Co to nějak ošetřit podle toho, kde se znak nachází v ascii tabulce?
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
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í
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