Wednesday, April 29, 2015

Integer Complemet of a Number or Once Complemet of a Integer

This was a program given to me in an interview unfortunately I was not able to complete it in very short time hence I am writing this code here so that this may help any one ;-)

C++ Source :

#include<iostream>
#include<conio.h>
#include<string>

using namespace std;

int GetIntegerComplement(int nInputNum)
{
int nRemider = 0, nCompRem = 0, nSum = 0, nCompSum=0, nTempNum;
int nPos=1;
string strComp="";
char ChArray[2];
size_t Size = 1;
nTempNum = nInputNum;
do
{
nRemider = nTempNum % 2;

if (nRemider == 0)
{
nCompRem = 1;

}
else
{
nCompRem = 0;
}

nSum = nSum + (nPos*nRemider);
nCompSum = nCompSum + (nPos*nCompRem);
_itoa(nCompRem,ChArray,10);
strComp = strComp + string(ChArray);
nTempNum = nTempNum / 2;
nPos = nPos * 10;

} while (nTempNum>0);

cout << "\n The Binary equivalent of " << nInputNum << " is " << nSum;

int nIntComp = 0;

nPos = 0;
nRemider = 0;

while (nCompSum > 0)
{
nRemider = nCompSum % 10;

nIntComp = nIntComp + pow(2,nPos)*nRemider;

nCompSum = nCompSum / 10;

nPos++;

}

reverse(strComp.begin(),strComp.end());

cout << "\n The complement Binary equivalent" << " is " << strComp;

return nIntComp;
}

void main()
{
int nNumber;
cout << "\n Enter a number to Convert to Binary";
cin >> nNumber;
cout << "\n The Integer complement of " << nNumber << " is " << GetIntegerComplement(nNumber);

_getch();
}


C# Source:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DecimalOnceComplement
{
    class Program
    {

        static int GetIntegerComplement(int nInputNum)
        {
           int nRemider = 0, nCompRem = 0, nSum = 0, nCompSum=0, nTempNum;
           int nPos=1;
           string strComp="";
           nTempNum = nInputNum;
        do
           {
           nRemider = nTempNum % 2;

           if (nRemider == 0)
           {
           nCompRem = 1;

           }
           else
           {
           nCompRem = 0;
           }

               nSum = nSum + (nPos*nRemider);
               nCompSum = nCompSum + (nPos*nCompRem);
                        strComp = strComp + nCompRem.ToString();
               nTempNum = nTempNum / 2;
               nPos = nPos * 10;

          } while (nTempNum>0);

           Console.WriteLine(" The Binary equivalent of {0} is {1}",nInputNum,nSum);

           int nIntComp = 0;

           nPos = 0;
           nRemider = 0;

          while (nCompSum > 0)
          {
           nRemider = nCompSum % 10;

           nIntComp = nIntComp + (int)(Math.Pow(2,nPos))*nRemider;

           nCompSum = nCompSum / 10;

           nPos++;

       }

               strComp = ReverseString(strComp);

        Console.WriteLine( " The complement Binary equivalent is {0}",strComp);

       return nIntComp;
       
        }

        public static string ReverseString(string s)
        {
            char[] arr = s.ToCharArray();
            Array.Reverse(arr);
            return new string(arr);
        }

        static void Main(string[] args)
        {
            int nNumber;
            string strInput;
            Console.WriteLine(" Enter a number to Convert to Binary:");
            strInput = Console.ReadLine();
            nNumber = Convert.ToInt32(strInput);
            Console.WriteLine(" The Integer complement of {0} is {1}" ,nNumber,GetIntegerComplement(nNumber));

            Console.ReadLine();
        }
    }
}


Out Put :



Monday, April 27, 2015

Friend function in C++ vs internal function in C#

There is no friend function in C# instead you can achieve same functionality using internal keyword

C++ Source :

#include<iostream>
#include<conio.h>
#include<string>

using namespace std;

class access
{
// String Variable declared as internal
public:
void SetName(string Name);
friend void print(access objAcess);
private:
string name;


};

void access::SetName(string Name)
{
name = Name;
}

void print(access objAcess)
{
cout << "\nMy name is " << objAcess.name;
}

void main( )
{
access objAcess;
objAcess.SetName("Sreeyush");
print(objAcess);
 
_getch();

}


C# source :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InternalKeywordEx
{
    class access
    {
        // String Variable declared as internal
        private string name;
        internal void print()
        {
            Console.WriteLine("\nMy name is " + name);
        }

        internal void SetName(string Name)
        {
            name = Name;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            access objAcess = new access();

            objAcess.SetName("Sreeyush");

            objAcess.print();

            Console.ReadLine();


        }
    }
}


static in C++ vs Static class in C#

There is no static class in c++ like in C# , instead we can declare static members and fuctions inside a class in c++

C++ Source :

#include<iostream>
#include<conio.h>
#include<string>

using namespace std;

class TemperatureConverter
{
public :
static double CelsiusToFahrenheit(std::string temperatureCelsius)
{
// Convert argument to double for calculations.
std::string::size_type sz;
double celsius = std::stod(temperatureCelsius, &sz);

// Convert Celsius to Fahrenheit.
double fahrenheit = (celsius * 9 / 5) + 32;

return fahrenheit;
}

static double FahrenheitToCelsius(std::string temperatureFahrenheit)
{
// Convert argument to double for calculations.
std::string::size_type sz;
double fahrenheit = std::stod(temperatureFahrenheit, &sz);

// Convert Fahrenheit to Celsius.
double celsius = (fahrenheit - 32) * 5 / 9;

return celsius;
}
};

void main()
{
cout<<"Please select the convertor direction\n";
cout << "1. From Celsius to Fahrenheit.\n";
cout << "2. From Fahrenheit to Celsius.\n";
cout << ":";

string selection;
int selectionType;
cin >> selection;
double F, C = 0;

if (selection.compare("1") == 0)
{
selectionType = 1;
}
else if (selection.compare("2") == 0)
{
selectionType = 2;
}
else
{
selectionType = 3;
}

std::string value;

switch (selectionType)
{

case 1:
cout<<"Please enter the Celsius temperature:";
cin >> value;
F = TemperatureConverter::CelsiusToFahrenheit(value);
printf("Temperature in Fahrenheit:%0.2f",F);
break;

case 2:
cout << "Please enter the Fahrenheit temperature:";
cin >> value;
C = TemperatureConverter::FahrenheitToCelsius(value);
printf("Temperature in Celsius:%0.2f", C);
break;

default:
cout << "Please select a convertor.";
break;
}

// Keep the console window open in debug mode.
cout <<"\nPress any key to exit.";
_getch();
}



C# source :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StaticClassSln
{

    public static class TemperatureConverter
    {
        public static double CelsiusToFahrenheit(string temperatureCelsius)
        {
            // Convert argument to double for calculations.
            double celsius = Double.Parse(temperatureCelsius);

            // Convert Celsius to Fahrenheit.
            double fahrenheit = (celsius * 9 / 5) + 32;

            return fahrenheit;
        }

        public static double FahrenheitToCelsius(string temperatureFahrenheit)
        {
            // Convert argument to double for calculations.
            double fahrenheit = Double.Parse(temperatureFahrenheit);

            // Convert Fahrenheit to Celsius.
            double celsius = (fahrenheit - 32) * 5 / 9;

            return celsius;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please select the convertor direction");
            Console.WriteLine("1. From Celsius to Fahrenheit.");
            Console.WriteLine("2. From Fahrenheit to Celsius.");
            Console.Write(":");

            string selection = Console.ReadLine();
            double F, C = 0;

            switch (selection)
            {
                case "1":
                    Console.Write("Please enter the Celsius temperature: ");
                    F = TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine());
                    Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F);
                    break;

                case "2":
                    Console.Write("Please enter the Fahrenheit temperature: ");
                    C = TemperatureConverter.FahrenheitToCelsius(Console.ReadLine());
                    Console.WriteLine("Temperature in Celsius: {0:F2}", C);
                    break;

                default:
                    Console.WriteLine("Please select a convertor.");
                    break;
            }

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
}