الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح هذا االكود وهذا السوال

بدأه سرمد الليل في 20 مايو 2010 · 4 رد · 748 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد احد يشرح لى هذا الاكود وهذا السوال المطلوب من السوال

الكود الاول :

#include<iostream>

using namespace std;

int length(int);

int count=0;

int main()

{

int n;

cout<<" \tEnter a number ";//prompt message to enter an integer suppose the user enter 12345

cin>>n;

cout<<" \tThe length of "<< n <<" is "<<length(n)<<endl;

return 0;

} // End of main

int length(int num )

{

if (num==0)

return 0;

else

{

num/=10;

return 1+ length(num);

}

}

الكود الثانى :

#include <iostream>

using namespace std;

int main ()

{

int first_value = 5, second_value = 10;

int * p1, * p2;

p1 = &first_value;

p2 = &second_value;

*p1 = 10;

*p2 = *p1;

p1 = p2;

*p1 = 25;

cout << "first value is " << first_value << endl;

cout << "second value is " << second_value << endl;

cout << "value of p1 is " << *p1 << endl;

cout << "value of p2 is " << *p2<< endl;

return 0;

}

والسوال اللذى اوريد شرحه هو :

Write a C++ program that ask user to enter the number in decimal then convert it to the binary and vise versa .

Be sure that your program have the following :

1- Recursive function that convert from binary to decimal.

2- Validate function that check if the binary number entered by the user contain only 0s and 1s .

How Convert from binary to decimal :

To convert binary into decimal is very simple and can be done as shown below:

Say we want to convert the 4 bit value 1001 into a decimal value, we can use a formula like that below:

128 64 32 16 8 4 2 1

1 0 0 1

As you can see, we have placed the numbers 1, 2, 4, 8, 16, 32, 64, 128 (powers of two) in reverse numerical order, and then written the binary value below.

To convert, you simply take a value from the top row wherever there is a 1 below, and then add the values together.

For instance, in our example we would have 8 + 1 = 9 .

Because we know binary is base 2 then the above could be written as:

1*23 + 0*22 + 0*21 + 1*20 = 9 .

#2

أخي ضعه في tag الخاصة بالأكواد ليظهر جيدا

تم تعديل هذه المشاركة بواسطة Sk-iNsP في 20 مايو 2010 في 13:23

لاتيأس أبدا مادمت تسعى إلى النجاح .

#3

السلام عليكم ورحمة الله وبركاته .. ,

بالنسبة للكود الأول .. راح يحسب لك الطول للرقم المدخل .. ,

يعني لو ادخل 1230 بيطبع لك ان الطول يساوي 4 .. ,

الـ main أتوقع أنها واضحة , بشرح لك الدالة .

int length(int num ) 
{
if (num==0) 
return 0;
else
{
num/=10;
return 1+ length(num); 
}
}

راح تستقبل الرقم المدخل , لوكان 0 بيكون الراجع 0 .. ,

غير كذا , لو كان المدخل 6453 .. ,

راح أقسم العدد على 10 و بيكون الراجع 1 + بسوي إستدعاء ذاتي للدالة و بتستقبل العدد بعد القسمة 645

راح أقسم العدد على 10 وبيكون الراجع 1+ بسوي إستدعاء ذاتي للدالة و بتستقبل العدد بعد القسمة 64

راح أقسم العدد على 10 وبيكون الراجع 1+ بسوي إستدعاء ذاتي للدالة و بتستقبل العدد بعد القسمة 6

راح أقسم العدد على 10 و بيكون الراجع 1 + بسوي إستدعاء لكن ما راح يقسم لأن العدد صار 0 ,,

الناتج بيكون 4 ,

اتمنى يكون وآضح .. ,

وهذا نفس الكود لكن بدون إستخدام الـ Recursion .,

int length(int num ) 
{
if (num==0) 
return 0;
while(num!=0)
{
count++;
num/=10;
}
return count ; 
}

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#4
int first_value = 5, second_value = 10;
int * p1, * p2;

p1 = &first_value; 
p2 = &second_value;

عرفنا متغيرين , و مؤشرين ,

قلنا أن المؤشر p1 يؤشر على المتغير الأول , والـ p2 يؤشر على المتغير الثاني ..

*p1 = 10;

معناته أن القيمة اللي المؤشر p1 يؤشر عليها تساوي 10 , يعني ان المتغير الأول تغيرت قيمته إلى 10

*p2 = *p1;

القيمة اللي المؤشر p2 يؤشر عليها راح تآخذ القيمة اللي المؤشر p2 يؤشر عليها ,

يعني أن كلا المتغيرين first_value , second_valueقيمتهم أصبحت 10 ,

p1 = p2;

هنا التعامل مع العناوين , بيصبح كلا المؤشرين يؤشران على نفس المتغير اللي هو , second_value

المتغير first_value ما له مؤشر يؤشر عليه ..

*p1 = 25;

غيرنا بقيمة الـ second_value و أصبحت 25 ,

cout << "first value is " << first_value << endl;
cout << "second value is " << second_value << endl;
cout << "value of p1 is " << *p1 << endl;
cout << "value of p2 is " << *p2<< endl;

عند الطباعة ,

راح يطبع لنا 10 قيمة المتغير الأول ..

والبقية كلها 25 ..

أتمنى يكون وآضح ..

بالتوفيق :happy: ,

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#5

الله يجزاكم خير بس هذا السوال مافهمته وش المطلوب منه

والسوال اللذى اوريد شرحه هو :

Write a C++ program that ask user to enter the number in decimal then convert it to the binary and vise versa .

Be sure that your program have the following :

1- Recursive function that convert from binary to decimal.

2- Validate function that check if the binary number entered by the user contain only 0s and 1s .

How Convert from binary to decimal :

To convert binary into decimal is very simple and can be done as shown below:

Say we want to convert the 4 bit value 1001 into a decimal value, we can use a formula like that below:

128 64 32 16 8 4 2 1

1 0 0 1

As you can see, we have placed the numbers 1, 2, 4, 8, 16, 32, 64, 128 (powers of two) in reverse numerical order, and then written the binary value below.

To convert, you simply take a value from the top row wherever there is a 1 below, and then add the values together.

For instance, in our example we would have 8 + 1 = 9 .

Because we know binary is base 2 then the above could be written as:

1*23 + 0*22 + 0*21 + 1*20 = 9 .

مواضيع مشابهة