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

كود الشكل ( رجاء شرحه )

بدأه طموحي كبير في 3 يونيو 2010 · 43 رد · 3,119 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#26

بالنسبه لهذا الكود

#include <iostream>
using namespace std;


int GetNumberOfDigits(int n) {
	int c=0;

	while(n){
            	c++;	
               n=n/10;

           }
	return c;
}


//------------------
int main()
{
	int x ;
	cin >> x;
	cout <<"x= "<<GetNumberOfDigits(x);
	return 0;
}

هذا الشرط ما فهمته

while(n)

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#28
while(n)

اى الشرط صحيح طالما n لا تساوى صفر

name : mohamedyosry

#29

مرحبا ..

اقتباس

int *p; 
int t[20]; 
int i;

b.      for (p=t; p<t+20; p++) *p=-1;

طيب هذا السؤال لاهنتي ما فهمته

المعذرة , ما أنتبهت له :wink: .. ,

البرنامج يسند لعناصر المصفوفة القيمة (-1) , بإستخدام المؤشر ..

b.      for (p=t; p<t+20; p++) *p=-1;

المؤشر يؤشر على أول عنصر في المصفوفة , يعني الـ p صارت قيمته صفر ..

ونشيك هل p أقل من (t+20) يعني أقل من 20 ..

نسند القيمة (-1) ,

إن شاء الله يكون واضح ..

بالتوفيق ,

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

#30
apex كتب:

while(n)

اى الشرط صحيح طالما n لا تساوى صفر

الله يجزاك كل خير و يحقق لك امانيك

طيب ليه ما كتبنا انه لا يساوي الصفر

احس شكلها غريب كذا

واضح تمام التمام يا شراقة الفجر .

فرج الله همومكم و جعل لكم من كل هم فرجا

لاهنتم خليكم قريبن اليوم لان الخوف مسوي عمايله الله يستر من اختبار بكره :(

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#31
طموحي كبير كتب:

void MaxFrequency(int *t, int size, int &max, int &freq){
        int max=t[0], freq=0;
        for(int i=0; i<size; i++)  
                if(t>max)
                        max = t;
        for(int i=0; i<size; i++)
                if(t==max)
                        freq++;
}

void MaxFrequency(int *t, int size, int &max, int &freq){
        max=t[0];
        freq=0;
        for(int i=0; i<size; i++){  
                if(t>max){ 
                        max = t;
                        freq = 0;
                }
                if(t==max) 
                        freq++;
        }
}

البرنامج يبحث عن أكبر قيمة في المصفوفة , ويحسب كم مرة تكررت ..

يمكن تسوينه بطريقتين ..

الأولى : تبحثين أول شي عن أكبر قيمة في المصفوفة ..

و بعدين تشوفين كم مرة تكررت ..

الثانية : تبحثين عن أكبر قيمة و كم مرة تكررت , بإستخدام Loop واحدة ..

إذا مب واضح .. أسألي :happy:

بالتوفيق ,

1

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

#32
طموحي كبير كتب:

طيب ليه ما كتبنا انه لا يساوي الصفر احس شكلها غريب كذا

في البرنامج قيمة n راح تتغير في كل مرة .. إلى أن توصل للصفر ..

while (0)

ما تفرق لو كتبتي كذا :

while(n!=0)

طموحي كبير كتب:

لاهنتم خليكم قريبن اليوم لان الخوف مسوي عمايله الله يستر من اختبار بكره :(

الله يوفقك و ييسر لك :happy: ,

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

#33

الله يجزاك جنة الفردوس و يوفقك في دراستك ، و ييسر لك كل أمورك يارب :)

واضح مرره

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#34

السلام عليكم

عدت من جديد في سؤال متعب اكثر صديقاتي لو تشرحوه بتجيكم داعوت من القلب :)

Exercise # 3  :

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 .



Output samples:-

Enter the binary number that you want to Convert it to the decimal: 398

Error the binary number only contain 0s and 1s.

Please Enter the binary number that you want to Convert it to the decimal: 1001

1001 in base 2 is 9 in base 10

و هذا هو الحل

#include<string>
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;

int decimal, expo=0 ;

void ConvertBinaryToDecimal(int num  , int decimal , int expo)
{
  int digit;

  if ( num > 0 )
  {
        digit = num % 10;
        decimal = decimal + digit * pow(2,expo);
        num = num / 10;
        expo++;
        ConvertBinaryToDecimal(num,decimal,expo);
  }
  else
        cout<<decimal;
}

bool validate(int num)
{
  int digit;

  digit = num % 10;

  while(num > 0)
  {
        if(digit == 0 || digit == 1)
        {
              num = num / 10 ;
              digit = num % 10;
        }
        else
              return false;
  }
  return true;     
}

int main()
{
  int num;

  next:
        cout <<"Enter the binary number that you want to Convert it to the decimal: ";
        cin >> num ;

        if(validate(num))
        {    
              cout << endl << num << " in base 2 is ";
              ConvertBinaryToDecimal(num ,decimal ,expo) ;
              cout << " in base " << "10" << endl;
        }
        else
        {
              cout<<"\nError the binary number only contain 0s and 1s.\n\nPlease ";
              goto next;
        }
  return 0;
}

إذا كان مو واضح السؤال لكم ادخلوا هنا موجود السؤال و الحل

الرباط الخاص بي

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#35

مرحبا طموحي ,

بشرح لك بداية من الـ main , عدلت بالكود تعديل بسيط ..

بما أنك معرفه المتغيرات decimal , expo متغيرات عامة .. ما تحتاجين ترسلينها للدالة ..

main()
{
  int num;

  next:
        cout <<"Enter the binary number that you want to Convert it to the decimal: ";
        cin >> num ;

        if(validate(num))
        {
              cout << endl << num << " in base 2 is ";
              ConvertBinaryToDecimal(num ) ;
              cout << " in base " << "10" << endl;
        }
        else
        {
              cout<<"\nError the binary number only contain 0s and 1s.\n\nPlease ";
              goto next;
        }
  return 0;
}

تطلبين من المستخدم يدخل الرقم بشرط يكون Binary .. الدلة validate . راح تستقبل الرقم ..

و ترجع true لو كان Binary و بتطبع التحويل إلى decimal , لو غير كذا بترجع false .. و بتطبع للمستخدم رسالة , يجب عليك إدخال الرقم بالنظام الثنائي , و تطلب منه إدخال الرقم مرة اخرى ,

هذا عمل الدالة الرئيسية .. ,

الدالة validate ,

bool validate(int num)
{
  int digit;

  digit = num % 10;

  while(num > 0)
  {
        if(digit == 0 || digit == 1)
        {
              num = num / 10 ;
              digit = num % 10;
        }
        else
              return false;
  }
  return true;     
}

عرف متغير digit يأخذ أول خانة من الرقم المرسل و يشيك هل هو 1 أو 0

إذا نعم

num = num /10 ;

عشان أتحلص من الرقم اللي سبق وشيكت عليه ,

              digit = num % 10;

وأقول أن digit يساوي الخانة الأولى من الرقم بعد ما قسمته على 10 ..

إلى أن يصبح قيمة الـ num بصفر , و ترجع بـ true ..

مفهوم عمل هالدالة ؟

دالة التحويل ConvertBinaryToDecimal , راح تستقبل الرقم المدخل ..

 if ( num > 0 )
  {
        digit = num % 10;
        decimal = decimal + digit * pow(2,expo);
        num = num / 10;
        expo++;
        ConvertBinaryToDecimal(num);
  }

نشيك هل الرقم أكبر من الصفر ؟ إذا نعم ,

المتغير digit يحمل الخانة الأولى من الرقم بالنظام الثنائي ,

و المتغير decimal , بيكون الرقم بالنظام العشري ,

بنقول أن

  decimal = decimal + digit * pow(2,expo);

هذي آلية التحويل من النظام الثنائي إلى العشري ,

و بعده نبي نتخلص من الخانة الأولى .

 num = num / 10;

بقسمه الـ num على 10 .. ونزيد الـ expo بواحد ..

ونرد نرسل الرقم بعد ما قسمته على 10 إلى الدالة نفسها (إستدعاء ذاتي )

        ConvertBinaryToDecimal(num);

وهكذا إلى أن تصبح قيمة الـ num أقل من الصفر ...

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

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

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 7 يونيو 2010 في 17:40

1

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

#36

طيب هذا سؤال ان شاء الله الاخير

طيب هذا سؤال وحده من صديقاتي

void fun(int a[], int size, int i)
{if(i==size)

return;
else
cout<<a;
fun(a[],size,i+1)
}

هذي فنكشن طباعة الأري بالريكيرجن

 for(int i=0; i<size;i++
couta;

ليت تشيكون عليه وتشوفون اذا فيه خطا ولا لا

ومشكورررين

تم تعديل هذه المشاركة بواسطة طموحي كبير في 7 يونيو 2010 في 23:17

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#37

مرحبا طموحي ,

الكود صحيح , لكن فيه خطأ بسيط .. وأعتذر لو كان خطأ مطبعي :wink: ..

fun(a[],size,i+1)

التصحيح :

fun(a,size,i+1) ;

موفقين جميعًا :happy: ,

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

#38

اممم

ثقلت عليك بس

طيب هذا البرنامج كيف راح احوله الى for

#include <iostream>
using std::cout; 
using std::endl;

int whatIsThis( int [], int ); // function prototype

int main()
{
   const int arraySize = 10;
   int a[ arraySize ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

   int result = whatIsThis( a, arraySize );

   cout << "Result is " << result << endl;

   return 0; // indicates successful termination
} // end main

// What does this function do?
int whatIsThis( int b[], int size )
{
   if ( size == 1 ) // base case
      return b[ 0 ];
   else // recursive step
      return b[ size - 1 ] + whatIsThis( b, size - 1 );
} // end function whatIsThis

هنا

int whatIsThis( int b[], int size )
{
   if ( size == 1 ) // base case
      return b[ 0 ];
   else // recursive step
      return b[ size - 1 ] + whatIsThis( b, size - 1 );
} // end function whatIsThis

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#39
int whatIsThis( int b[], int size )
      {
      int result=0 ;
      for(int i= 0 ; i< size ; ++i)   result+=b;
      return  result ;
      }

إن شاء الله يكون وآضح .. ,

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

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

#40

الله يوفقك يارب و يسعدك ما ادري وش اكتب لك من كلمات شكر

لكن ما لك إلا الدعاء سواء مني او صديقاتي

الله يفرح قلبك ، و يرزقك جنه الفردوس يارررررب

:ty: اد الدنييييا

تم تعديل هذه المشاركة بواسطة طموحي كبير في 8 يونيو 2010 في 00:58

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#41

لا شكر ع واجب :P ,

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

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 8 يونيو 2010 في 00:51

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

#43
اقتباس
أبشركم نجحت بالبرمجه

الله يجزاكم كل خير على مساعدتكم لي

مبارك عليك :wub:

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