Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.82 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConverterApplication
  4. {
  5.     abstract class Converter
  6.     {
  7.         protected String code = ""; // Tu zmieniłem na protected. Nie ma sensu brać jako public
  8.         protected int value; // dodałem nowe pole, które przechowuje wartość wejściową. Jest chronione, bo nikt, prócz klas dziedziczących nie może widzieć jej wartości
  9.  
  10.         protected Converter(int value) // Tu jest ciekawostka. Jak będziesz dziedziczyć klasę, to klasa bazowa Converter wymusi na tobie wygenerowanie konstruktowa
  11.         {
  12.             this.value = value;
  13.         }
  14.  
  15.         public abstract String convert(); // stąd wywaliłem argument. Wartość mamy w polu {value}
  16.         protected abstract String reverse(String x); // Tu też dałem na protected. Nie wykorzystujesz jej na zewnatrz
  17.     }
  18.  
  19.     class BinConverter : Converter
  20.     {
  21.  
  22.         public BinConverter(int value) : base(value) {}
  23.  
  24.         public override String convert()
  25.         {
  26.             while (value > 0)
  27.             {
  28.                 int y = value % 2;
  29.                 code += y;
  30.                 value /= 2;
  31.             }
  32.             return reverse(code);
  33.         }
  34.  
  35.         protected override String reverse(String x)
  36.         {
  37.             code = "";
  38.             long c = long.Parse(x);
  39.  
  40.             for (int i = 0; i < x.Length; i++)
  41.             {
  42.                 long y = c % 10;
  43.                 code += y;
  44.                 c /= 10;
  45.             }
  46.             return code;
  47.         }
  48.     }
  49.  
  50.     class OctConverter : Methods
  51.     {
  52.         public OctConverter(int value) : base(value) {}
  53.  
  54.         public override String convert()
  55.         {
  56.             while (value > 0)
  57.             {
  58.                 int y = value % 8;
  59.                 code += y;
  60.                 value /= 8;
  61.             }
  62.             return reverse(code);
  63.         }
  64.  
  65.         protected override String reverse(String x)
  66.         {
  67.             code = "";
  68.             int c = int.Parse(x);
  69.  
  70.             for (int i = 0; i < x.Length; i++)
  71.             {
  72.                 int y = c % 10;
  73.                 code += y;
  74.                 c /= 10;
  75.             }
  76.             return code;
  77.         }
  78.     }
  79.  
  80.     class HexConverter : Converter
  81.     {
  82.         // Tu dałem na private. Nie potrzeba tego upubliczniać. Nigdzie tego nie wykorzystujesz
  83.         private static String[] hex =
  84.         { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
  85.  
  86.         public HexConverter(int value) : base(value) {}
  87.  
  88.         public override String convert()
  89.         {
  90.             while (value > 0)
  91.             {
  92.                 int y = value % 16;
  93.                 code += hex[y];
  94.                 value /= 16;
  95.             }
  96.             return reverse(code);
  97.         }
  98.  
  99.         protected override String reverse(String x)
  100.         {
  101.             code = "";
  102.             for (int i = x.Length; i > 0; i--)
  103.             {
  104.                 char ch = x[i - 1];
  105.                 code += ch;
  106.             }
  107.             return code;
  108.         }
  109.     }
  110.  
  111.     class Program
  112.     {
  113.         static void Main(string[] args)
  114.         {
  115.             int x = int.Parse(Console.ReadLine());
  116.             Console.WriteLine("Number: "+x);
  117.  
  118.             Methods bin = new Bin();
  119.             Methods oct = new Oct();
  120.             Methods hex = new Hex();
  121.            
  122.             eqSign(12);
  123.             Console.WriteLine("Bin : " + bin.convert(x));
  124.             Console.WriteLine("Oct : " + oct.convert(x));
  125.             Console.WriteLine("Hex : " + hex.convert(x));
  126.             eqSign(12);
  127.            
  128.             myFooter();
  129.         }
  130.        
  131.         static void eqSign(int x)
  132.         {
  133.             while (x != 0)
  134.             {
  135.                 Console.Write("=");
  136.                 x--;
  137.             }
  138.             Console.WriteLine();
  139.         }
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement