Advertisement
ntamas

számkonverzió

Mar 24th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.78 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace szamkonverzio
  7. {
  8.   class Program
  9.   {
  10.     static bool helyes(string szam, int szalap1)
  11.     {
  12.       int k = 0;
  13.       char[] tomb = szam.ToCharArray();
  14.       for (int i = 0; i < tomb.Length; i++)
  15.       {
  16.         if (!eleme(szalap1, tomb[i]))
  17.         {
  18.           return false;
  19.         }
  20.         if ((65 <= tomb[i] && tomb[i] <= 70) || (97 <= tomb[i] && tomb[i] <= 102) || (48 <= tomb[i] && tomb[i] <= 57))
  21.         {
  22.           k++;
  23.         }
  24.       }
  25.       if (k == tomb.Length)
  26.       {
  27.         return true;
  28.       }
  29.       else
  30.       {
  31.         return false;
  32.       }
  33.     }
  34.     static bool helyes3(string szam)
  35.     {
  36.       int k = 0;
  37.       char[] tomb = szam.ToCharArray();
  38.       for (int i = 0; i < tomb.Length; i++)
  39.       {
  40.         if (48 <= tomb[i] && tomb[i] <= 57)
  41.         {
  42.           k++;
  43.         }
  44.       }
  45.       if (k == tomb.Length)
  46.       {
  47.         return true;
  48.       }
  49.       else
  50.       {
  51.         return false;
  52.       }
  53.     }
  54.     static bool helyese(int szalap1)
  55.     {
  56.       if (2 > szalap1 || szalap1 > 16)
  57.       {
  58.         Console.WriteLine("A számrendszer alapja min. 2, max. 16 lehet!");
  59.         return false;
  60.       }
  61.       return true;
  62.     }
  63.     static int kartoszamjegy(char karakter, int szalap1)
  64.     {
  65.       int szjegy;
  66.       if (65 <= karakter && karakter <= 70)
  67.       {
  68.         szjegy = Convert.ToInt16(karakter - 55);
  69.       }
  70.       else if (97 <= karakter && karakter <= 102)
  71.       {
  72.         szjegy = Convert.ToInt16(karakter - 87);
  73.       }
  74.       else if (48 <= karakter && karakter <= 57)
  75.       {
  76.         szjegy = Convert.ToInt16(karakter - 48);
  77.       }
  78.       else
  79.       {
  80.         Console.WriteLine("Érvénytelen karaktert írtál be!");
  81.         return -1;
  82.       }
  83.       return szjegy;
  84.     }
  85.     static bool eleme(int szalap1, char karakter)
  86.     {
  87.       int szjegy = kartoszamjegy(karakter, szalap1);
  88.       if (szjegy == -1)
  89.       {
  90.         return false;
  91.       }
  92.       else
  93.       {
  94.         if (szjegy > szalap1 - 1)
  95.         {
  96.           Console.WriteLine("A számrendszer alapja nem engedi meg a karakter használatát!");
  97.           return false;
  98.         }
  99.         else
  100.         {
  101.           return true;
  102.         }
  103.       }
  104.     }
  105.     static char[] dec2akarmi(ref List<int> lista, int hanyados, int szalap2)
  106.     {
  107.       int maradek;
  108.       do
  109.       {
  110.         maradek = hanyados % szalap2;
  111.         hanyados /= szalap2;
  112.         lista.Add(maradek);
  113.       } while (hanyados != 0);
  114.       char[] szam2 = new char[lista.Count];
  115.       for (int i = lista.Count - 1; i >= 0; i--)
  116.       {
  117.         if (lista[i] > 9)
  118.         {
  119.           szam2[(lista.Count - 1) - i] = Convert.ToChar(lista[i] + 55);
  120.         }
  121.         else
  122.         {
  123.           szam2[(lista.Count - 1) - i] = Convert.ToChar(lista[i] + 48);
  124.         }
  125.       }
  126.       lista.Clear();
  127.       return szam2;
  128.     }
  129.     static int akarmi2dec(int szalap1, string szamkar)
  130.     {
  131.       int szam=0, szjegy;
  132.       char[] tomb = szamkar.ToCharArray();
  133.       int utolsoelem = tomb.Length - 1;
  134.       for (int i = utolsoelem; i >= 0; i--)
  135.       {
  136.         szjegy = kartoszamjegy(tomb[utolsoelem - i], szalap1);
  137.         if (szjegy != -1)
  138.         {
  139.           szam += szjegy * (int)Math.Pow(szalap1, i);
  140.         }
  141.         else
  142.         {
  143.           return -1;
  144.         }
  145.       }
  146.       return szam;
  147.     }
  148.     static void Main(string[] args)
  149.     {
  150.       int szam, szalap1=0, szalap2=0, hanyados;
  151.       string szam3, szamkar, alap1, alap2;
  152.       List<int> lista = new List<int>();
  153.       do
  154.       {
  155.         Console.Write("Írja be a konvertálandó szám számrendszerének alapját: ");
  156.         alap1 = Console.ReadLine();
  157.         if(helyes3(alap1))
  158.         {
  159.           szalap1 = Convert.ToInt16(alap1);  
  160.         }
  161.       }while(!helyese(szalap1));
  162.       do
  163.       {
  164.         Console.Write("Írja be az átalakítandó számot: ");
  165.         szamkar = Console.ReadLine();
  166.       }while(!helyes(szamkar, szalap1));
  167.       szam = akarmi2dec(szalap1, szamkar);
  168.       if (szam != -1)
  169.       {
  170.         Console.WriteLine("A szám tizes számrendszerben: {0}", szam);
  171.       }
  172.       do
  173.       {
  174.         Console.Write("Írjon be egy decimális számot: ");
  175.         szam3 = Console.ReadLine();
  176.       }while(!helyes3(szam3));
  177.       do
  178.       {
  179.         Console.Write("Írja be az új számrendszer alapját: ");
  180.         alap2 = Console.ReadLine();
  181.         if (helyes3(alap2))
  182.         {
  183.           szalap2 = Convert.ToInt16(alap2);
  184.         }
  185.       }while (!helyese(szalap2));
  186.       hanyados = Convert.ToInt32(szam3);
  187.       char[] szam2 = dec2akarmi(ref lista, hanyados, szalap2);
  188.       foreach (char akarmi in szam2)
  189.       {
  190.         Console.Write(akarmi);
  191.       }
  192.       Console.ReadKey();
  193.     }
  194.   }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement