#include <stdio.h>
#include <math.h>



//محاوله فقط لحل السؤال والتوفيق من الله
//برنامج لتحويل أي عدد الى أي نظام أعداد
//كتبه السهم الناري


//دالة التحويل الى النظام العشري 
void ConvertDicamel( int temp[32],int size,int base );

//الدالة تقوم بعملية التحويل لأي نظام أعداد
void ConvertAnyNumber();





int main()
{
	
	ConvertAnyNumber();  //استدعاء دالة التحويل إلى أي عدد

	
	return 0;
}


//دالة التحويل الى النظام العشري 
void ConvertDicamel( int temp[32],int size,int base )
{
	int i;
	double sum = 0;

	for( i=0; i<size; i++ )
	{
		sum += temp[i] * pow(base,i) ;
	}

	printf("\n\t Desmal = %.2f \n\n",sum );


}


//الدالة تقوم بعملية التحويل لأي نظام أعداد
void ConvertAnyNumber()
{
	
	int Number ;
	int AX[32];    // هذه المصفوفة تعمل كأنها مسجل مكون من 32 بت تستخدم لقلب العدد أي عكس ناتج العدد بعد الحصول عليه ويمكن أن نمثل بها عدد كبير جدا
	int i = 1,j = 0;
	int Base;
	int Temp[32];
	
	printf("\n\t Enter Number : ");
	scanf("%d",&Number);
	printf("\n\t Enter Base : ");
	scanf("%d",&Base);


	while( i == 1 )
	{

		AX[j] = Number % Base;
		//printf("%d",x%2);
		Number = Number / Base;
		j++;

		if( Number == 0 )
		{ 
			i = 0;
			break;
		}
	}

	
	printf("\n");
	i = 0;
	printf("\t ");
	
	for( i=j-1; i>=0; i-- )
	{
		Temp[i] = AX[i];      // مصفوفة مؤقتة لأرسال العدد إلى الدالة لتحويله الى  عدد بالنظام العشري
		printf("%d",AX[i] );  //اطبع العدد المراد تحويله
	}

	printf("\n\n\n");

	ConvertDicamel(Temp,j,Base);  //استدعاء الدالة لتحويل الرقم إلى عشري
}

