Saturday, March 31, 2018

Divide a number without using division operator

Code:

using System;
using System.Collections.Generic;
public class SQLScientist
{
    static public void Main()
    {
        Console.WriteLine("Input");
        Console.Write("Dividend: ");
        int a = Convert.ToInt32(Console.ReadLine());
        Console.Write("Divisor: ");
        int b = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Output");
        Division(a, b);
        Console.ReadKey();
    }
    static int Division(int a, int b)
    {
        string aStr = a.ToString();
        int aStrLen = aStr.Length;
        string dividendStr = "";
        string quotient = "";
        int dividend;
        Dictionary dicDivisor = new Dictionary();
        int temp = 0;
        for (int i = 1; i < 10; i++)
        {
            temp += b;
            dicDivisor.Add(i, temp);
        }
        for (int i = 0; i < aStrLen; i++)
        {
            dividendStr += aStr.Substring(i, 1);
            dividend = Convert.ToInt32(dividendStr);
            if (dividend < b)
            {
                quotient += "0";
            }
            else
            {
                for (int j = 1; j < 10; j++)
                {
                    if (dividend < dicDivisor[j])
                    {
                        dividendStr = (dividend - dicDivisor[j - 1]).ToString();
                        quotient += (j - 1).ToString();
                        break;
                    }
                }
            }
        }
        Console.WriteLine("Reminder: " + dividendStr);
        Console.WriteLine("Quotient: " + Convert.ToInt32(quotient));
        return Convert.ToInt32(dividendStr);
    }
}

Output:

Input
Dividend: 10021
Divisor: 5
Output
Reminder: 1
Quotient: 2004