#include
#include
#include
int Dicimal_to_binair ( int number ) {
int rest = 0 ;
int bin_form =0;
int i = 0;
while( number != 0 ) {
rest = number%2;
number/=2;
if( rest != 0 ) bin_form += ceil( pow(10,i) );
i++ ;
}
return bin_form ;
}
int main()
{
int user_num = 0 ;
printf("please insert a number : \n");
scanf("%d",&user_num);
printf("The Binairi form of your number is : %d \n",Dicimal_to_binair ( user_num ) );
return 0;
}
int Dicimal_to_octal ( int number ) {
int rest = 0 ;
int oct_form =0;
int i = 0;
while( number != 0 ) {
rest = number%8;
number/=8;
oct_form += rest*ceil( pow(10,i) );
i++ ;
}
return oct_form ;
}
وفي 25 اغسطس 2009 05:38 م، ظهر شبح ابتسامة على وجه عبد اللطيف حاجي علي وهو يقول:
1. الإجراء الذي كتبته يأخذ ويعيد قيمة من نوع int وهو محدود نوعاً ما. فمثلأً لا يمكن تمثيل الأعداد الكبيرة نسبياً في نظام العد الثنائي باستخدام هذا النوع (كمثال حاول تحويل القيمة 1500 باستخدام برنامجك. هل تستطيع تعليل لماذا لا نستطيع تمثيل هذا العدد ثنائياً باستخدام النوع int مع أن حجمه 32 بت؟) كما أن تطوير هذا البرنامج لتحويل بقية الأسس أمر شبه مستحيل باستخدام هذا النوع.-2 147 483 648 to 2 147 483 647
أما في 25 اغسطس 2009 05:38 م، فقد تنهد عبد اللطيف حاجي علي بارتياح وهو يرد:
أقترح أن تستخدم مصفوفة من المحارف (character array) أو إذا كان لديك المعرفة الكافية بالـ C++ فاستخدم std::string بحيث يدخل المستخدم سلسلة من المحارف و تقوم بتحويلها إلى سلسة أخرى من المحارف (أتمنى أن تكون هذه النقطة واضحة)في 25 اغسطس 2009 05:38 م، غمغم عبد اللطيف حاجي علي باستغراب قائلاً:
2. حاول الابتعاد قدر الإمكان عن استخدام إجراءات رياضية معقدة وبطيئة مثل pow أو ceil. هذا لا يؤثر طبعاً على الحل من الناحية الرياضية أو الوظيفية بل يؤثر عليه من ناحية سرعة الأداء. 6 5 4 3 2 1 0
Binair Number : 1 1 0 1 1 0 0
القاعدة تقول :N = some(Ai*B^i)
المشكلة هي تخزين رقم كل خانة و العدد الذي تحتويه.في 26 آب 2009 12:15 ص، غمغم انس باستغراب قائلاً:
لان 1024 يعطي 10000000000 .بتاريخ 26 آب 2009 12:15 ص، قطب انس حاجبيه بشدة وهو يقول:
كنت اظن ان الامر يمكن معالجته بشكل محدود باستعمال الكلمة المفتاحية unsigned لكن النتيجة غريبوفي 26 آب 2009 12:15 ص، أعرب انس عن رأيه بالموقف كالآتي:
النوع الامثل هو Double و ذلك لحجمه الضخم .في 26 آب 2009 12:15 ص، قال انس بهدوء وتؤدة:
خصوصا الدالة Ceil استعملتها لان البرنامج كان يعطي نتيجة غريبة جدا عند pow(10,2)qكان يعطي 99في 26 آب 2009 12:15 ص، عقد انس حاجبيه بتفكير وقال:
القاعدة تقول :N = some(Ai*B^i)N = sum(Ai^B^i)
وفي 26 آب 2009 12:15 ص، قال انس متحمساً:
المشكلة هي تخزين رقم كل خانة و العدد الذي تحتويه.وفي 26 آب 2009 12:15 ص، ظهر شبح ابتسامة على وجه انس وهو يقول:
هناك شيئ اخر اود ان تشرحه لي، طريقة القسمة ليست الطريقة الوحيدة للتحويل الى النظام الثنائي هناك طريقة تعمل بمبدا الطرح لم استوععبها فهل يمكنك شرحها من فضلك ؟