Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace szamkonverzio
- {
- class Program
- {
- static bool helyes(string szam, int szalap1)
- {
- int k = 0;
- char[] tomb = szam.ToCharArray();
- for (int i = 0; i < tomb.Length; i++)
- {
- if (!eleme(szalap1, tomb[i]))
- {
- return false;
- }
- if ((65 <= tomb[i] && tomb[i] <= 70) || (97 <= tomb[i] && tomb[i] <= 102) || (48 <= tomb[i] && tomb[i] <= 57))
- {
- k++;
- }
- }
- if (k == tomb.Length)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- static bool helyes3(string szam)
- {
- int k = 0;
- char[] tomb = szam.ToCharArray();
- for (int i = 0; i < tomb.Length; i++)
- {
- if (48 <= tomb[i] && tomb[i] <= 57)
- {
- k++;
- }
- }
- if (k == tomb.Length)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- static bool helyese(int szalap1)
- {
- if (2 > szalap1 || szalap1 > 16)
- {
- Console.WriteLine("A számrendszer alapja min. 2, max. 16 lehet!");
- return false;
- }
- return true;
- }
- static int kartoszamjegy(char karakter, int szalap1)
- {
- int szjegy;
- if (65 <= karakter && karakter <= 70)
- {
- szjegy = Convert.ToInt16(karakter - 55);
- }
- else if (97 <= karakter && karakter <= 102)
- {
- szjegy = Convert.ToInt16(karakter - 87);
- }
- else if (48 <= karakter && karakter <= 57)
- {
- szjegy = Convert.ToInt16(karakter - 48);
- }
- else
- {
- Console.WriteLine("Érvénytelen karaktert írtál be!");
- return -1;
- }
- return szjegy;
- }
- static bool eleme(int szalap1, char karakter)
- {
- int szjegy = kartoszamjegy(karakter, szalap1);
- if (szjegy == -1)
- {
- return false;
- }
- else
- {
- if (szjegy > szalap1 - 1)
- {
- Console.WriteLine("A számrendszer alapja nem engedi meg a karakter használatát!");
- return false;
- }
- else
- {
- return true;
- }
- }
- }
- static char[] dec2akarmi(ref List<int> lista, int hanyados, int szalap2)
- {
- int maradek;
- do
- {
- maradek = hanyados % szalap2;
- hanyados /= szalap2;
- lista.Add(maradek);
- } while (hanyados != 0);
- char[] szam2 = new char[lista.Count];
- for (int i = lista.Count - 1; i >= 0; i--)
- {
- if (lista[i] > 9)
- {
- szam2[(lista.Count - 1) - i] = Convert.ToChar(lista[i] + 55);
- }
- else
- {
- szam2[(lista.Count - 1) - i] = Convert.ToChar(lista[i] + 48);
- }
- }
- lista.Clear();
- return szam2;
- }
- static int akarmi2dec(int szalap1, string szamkar)
- {
- int szam=0, szjegy;
- char[] tomb = szamkar.ToCharArray();
- int utolsoelem = tomb.Length - 1;
- for (int i = utolsoelem; i >= 0; i--)
- {
- szjegy = kartoszamjegy(tomb[utolsoelem - i], szalap1);
- if (szjegy != -1)
- {
- szam += szjegy * (int)Math.Pow(szalap1, i);
- }
- else
- {
- return -1;
- }
- }
- return szam;
- }
- static void Main(string[] args)
- {
- int szam, szalap1=0, szalap2=0, hanyados;
- string szam3, szamkar, alap1, alap2;
- List<int> lista = new List<int>();
- do
- {
- Console.Write("Írja be a konvertálandó szám számrendszerének alapját: ");
- alap1 = Console.ReadLine();
- if(helyes3(alap1))
- {
- szalap1 = Convert.ToInt16(alap1);
- }
- }while(!helyese(szalap1));
- do
- {
- Console.Write("Írja be az átalakítandó számot: ");
- szamkar = Console.ReadLine();
- }while(!helyes(szamkar, szalap1));
- szam = akarmi2dec(szalap1, szamkar);
- if (szam != -1)
- {
- Console.WriteLine("A szám tizes számrendszerben: {0}", szam);
- }
- do
- {
- Console.Write("Írjon be egy decimális számot: ");
- szam3 = Console.ReadLine();
- }while(!helyes3(szam3));
- do
- {
- Console.Write("Írja be az új számrendszer alapját: ");
- alap2 = Console.ReadLine();
- if (helyes3(alap2))
- {
- szalap2 = Convert.ToInt16(alap2);
- }
- }while (!helyese(szalap2));
- hanyados = Convert.ToInt32(szam3);
- char[] szam2 = dec2akarmi(ref lista, hanyados, szalap2);
- foreach (char akarmi in szam2)
- {
- Console.Write(akarmi);
- }
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement