IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Dominik Hurta:17.5.2021 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.5.2021 11:07
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17.5.2021 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.5.2021 12:59
Avatar
Dominik Hurta:17.5.2021 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.5.2021 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.