Využij akce až 30 % zdarma při nákupu e-learningu. Více informací. Zároveň je tento týden sleva až 80 % na e-learning týkající se C# .NET
Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Avatar
Dominik Hurta:17. května 11:07
Console.WriteLine("Číslo v desítkové soustavě: ");
            string vstup = "6378";
            Console.WriteLine(vstup);
            Console.WriteLine("Číselná soustava (2-16): ");
            int soustava_vstup = 16;
            Console.WriteLine(soustava_vstup);

            char[] sestnact = {'A', 'B', 'C', 'D', 'E', 'F'};


            char[] pole = new char[vstup.Length];
            int k = 0;
            int c = 0;
            int d = 0;
            int[] f = new int[vstup.Length];
            for (int i = 0; i < vstup.Length; i++)
            {

                if (i == 0)
                {
                    c = Convert.ToInt32(vstup) / 16;
                    k = Convert.ToInt32(vstup) - (c * 16);
                }
                else
                {
                    c = c / 16;
                    k = d - (c * 16);
                }

                d = c;

                f[i] = k;

            }
            int vystup = 0;
            for (int j = vstup.Length; j > 0; j--)
            {
                vystup = f[j-1];
                if (vystup > 9)
                {

                    switch (vystup)
                    {

                        case 10:
                            vystup = sestnact[0];
                        break;
                        case 11:
                            vystup = sestnact[1];
                        break;
                        case 12:
                            vystup = sestnact[2];
                        break;
                        case 13:
                            vystup = sestnact[3];
                        break;
                        case 14:
                            vystup = sestnact[4];
                        break;
                        case 15:
                            vystup = sestnact[5];
                        break;
                        case 16:
                            vystup = sestnact[6];
                        break;

                    }



                }
                Console.Write(Convert.ToString(vystup));
            }

            Console.ReadKey();

Zkusil jsem: Zkoušel jsem asi už všechno, jak je (char) a (int) ,ale nic z toho nejde.

Chci docílit: Potřebuji aby mi switch nevracel hodnotu v čísle ale v charu. Tento program je o převedení s desítkové soustavy do šestnáctkové.

 
Odpovědět
17. května 11:07
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17. května 12:59

V javascriptu bych si napsal

base16 = '0123456789ABCDEF';
n = 3; hex = base16.charAt(n); document.write(hex);
n = 11; hex = base16.charAt(n); document.write(hex);
base16 = base16.split('') // nebo base16 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'] // nebo se pouziva slovo map jako mapa
n = 3; hex = base16[n]; document.write(hex);
n = 11; hex = base16[n]; document.write(hex);

Jasne, to je jiny jazyk. Ale udivuje mne, ze jsi volil takhle slozitou cestu, pres case.

  1. Jinak, v tom kodu, c, k je float, to ukladas primo do f[i] a float se neda poak pouzit pro case, kdyz je to treba 10.000001 a ne 10. Ale ja v C# neprogramuji, jen tak tipuji.
  2. vystup = f[j-1]; Tam je podobny proclem, na vystup typu char tlacis cislo. Pokud to teda ulozi, jak si predstavuji, pak 0 odpovida charcode 0 a to je jakysi neviditelny znak. A ty bys tam potreboval dostat charcode 32, tusim.
 
Nahoru Odpovědět
17. května 12:59
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Dominik Hurta:17. května 13:58

Už mám řešení trochu složité, ale funguje. :-)

Console.WriteLine("Číslo v desítkové soustavě: ");
            string vstup = "6378";
            Console.WriteLine(vstup);
            Console.WriteLine("Číselná soustava (2-16): ");
            int soustava_vstup = 16;
            Console.WriteLine(soustava_vstup);

            char[] sestnact = {'A', 'B', 'C', 'D', 'E', 'F'};


            char[] pole = new char[vstup.Length];
            int k = 0;
            int c = 0;
            int d = 0;
            int[] f = new int[vstup.Length];
            for (int i = 0; i < vstup.Length; i++)
            {

                if (i == 0)
                {
                    c = Convert.ToInt32(vstup) / 16;
                    k = Convert.ToInt32(vstup) - (c * 16);
                }
                else
                {
                    c = c / 16;
                    k = d - (c * 16);
                }

                d = c;

                f[i] = k;

            }
            Console.WriteLine("Číslo ve zvolené soustavě: ");
            int vystup = 0;
            char vystup1 = ' ';
            for (int j = vstup.Length; j > 0; j--)
            {
                vystup = f[j-1];


                if (vystup > 9)
                {

                    switch (vystup)
                    {

                        case 10:
                            vystup1 = sestnact[0];
                        break;
                        case 11:
                            vystup1 = sestnact[1];
                        break;
                        case 12:
                            vystup1 = sestnact[2];
                        break;
                        case 13:
                            vystup1 = sestnact[3];
                        break;
                        case 14:
                            vystup1 = sestnact[4];
                        break;
                        case 15:
                            vystup1 = sestnact[5];
                        break;
                        case 16:
                            vystup1 = sestnact[6];
                        break;

                    }


                }

                if (vystup > 9)
                {
                    Console.Write(vystup1);
                }
                else
                {
                    Console.Write(vystup);
                }

            }



            Console.ReadKey();

        }
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
17. května 13:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.