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

++c ... المحاضرة ( 8 )

مغلق
بدأه BjarneStudent في 14 ديسمبر 2007 · 22 رد · 3,056 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

وددت القول بأن لغة السي++ تحتاج الكثير من التمارين , على الأقل ما يستطيع نضرك الوقوع عليه.

لغة البرمجة هذه ليس ككل اللغات , عليك أن تعرف بأنك تتعلم أقوى وأوسع وأسرع لغة برمجة

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

إذا أردت ان تتمكن من هذه اللغة , الإكتفاء بالتعلم النظري ( الحفظ دون الفهم ) لا يجدي أبداااا , عليك

بالتمارين ثم التمارين بقدر ما تستطيع.

إن شاء الله , سوف تكون هذه المحاضرة تمارين للمحاضرات السابقة.

سوف نتاول على الأقل مجموعتين من التمارين..

وآمل من لديه تمرين أو اكثر في نفس مواضيع المحاضرات السابقة ( 1-7 ) أن يقوم بطرحها.

المجموعة الأولى :

1stGroup.zip

المجموعة الثانية :

2ndGroup.zip

قبل البدء في مناقشة اسئلة المجموعات , سوف نطرح سؤالين اعداديين كالتالي :

السؤال الأول

ماذا يطبع الكوديين التاليين ...

الكود الأول

1  // Exercise 4.12: ex04_12.cpp
2  // What does this program print?
3  #include <iostream>
4  using std::cout;
5  using std::endl;
7  int main()
8  {
9	 int y; // declare y
10	 int x = 1; // initialize x
11	 int total = 0; // initialize total
12
13	 while ( x <= 10 ) // loop 10 times
14	 {
15		y = x * x; // perform calculation
16		cout << y << endl; // output result
17		total += y; // add y to total
18		x++; // increment counter x
19	 } // end while
20
21	 cout << "Total is " << total << endl; // display result
22	 return 0; // indicate successful termination
23  } // end main

الكود الثاني

 1  // Exercise 4.22: ex04_22.cpp
2  // What does this program print?
3  #include <iostream>
4  using std::cout;
5  using std::endl;
6
7  int main()
8  {
9	 int row = 10; // initialize row
10	 int column; // declare column
11
12	 while ( row >= 1 ) // loop until row < 1
13	 {
14		column = 1; // set column to 1 as iteration begins
15
16		while ( column <= 10 ) // loop 10 times
17		{
18		   cout << ( row % 2 ? "<" : ">" ); // output
19		   column++; // increment column
20		} // end inner while
21
22		row--; // decrement row
23		cout << endl; // begin new output line
24	 } // end outer while
25
26	 return 0; // indicate successful termination
27  } // end main

ملاحظة : تتبع اسطر البرنامج بدون تنفيذه على المترجم , فالفائدة اولا واخيرا تمرينك على حل البرامج

السؤال الثاني

مضروب العدد هو حاصل ضرب تعداده

مثلا , مضروب الخمسة( !5 ) سوف يكون 5 * 4 * 3 * 2 * 1 = 120

ايضا , مضروب الثلاثة ( !3 ) سوف يكون 3 * 2 * 1 = 6

هناك ثوابت رياضية وهي ان مضروب الصفر يكون واحد دائما , وكذلك مضروب الواحد يساوي واحد.

اكتب برنامجا يقوم بحساب قيمة e

e = 1/1! - 3/3! + 5/5! -7/7! +n/!n

عند مناقشة المجموعات , لن يتم كتابة برنامج كامل , بل سوف يتم مناقشة اجزاء من البرنامج تمثل

مفاتيح الحل لكتابة برنامج كامل.

اسعد في تلقي تساؤلاتكم , فلا ترددو في أبداء أي سؤال.

المحاضرة القادمة سوف تكون اجازة العيد الأضحى , لذلك سوف نتوقف لنستأنف في الجمعة التي تليها.

تم تعديل هذه المشاركة بواسطة BjarneStudent في 17 ديسمبر 2007 في 17:56

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#2

ماشاء الله اسلوب جميل للمناقشه.

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

→ y=? ,x=1 ,total=0
→ test (x<=10) : yes → y=x*x=1*1=1 → print y =1 → total=total +y =0 +1 =1 → x=x+1→ x=2
→ test (x<=10) : yes → y=x*x=2*2=4 → print y =4 → total=total +y =1 +4 =5 → x=x+1→ x=3
→ test (x<=10) : yes → y=x*x=3*3=9 → print y =9 → total=total +y =5 +9 =14 → x=x+1→ x=4 
→ test (x<=10) : yes → y=x*x=4*4=16 → print y =16 → total=total +y =14+16 =30 → x=x+1→ x=5 
→ test (x<=10) : yes → y=x*x=5*5=25 → print y =25 → total=total +y =30+25 =55 → x=x+1→ x=6
→ test (x<=10) : yes → y=x*x=6*6=36 → print y =36 → total=total +y =55+36 =91 → x=x+1→ x=7 
→ test (x<=10) : yes → y=x*x=7*7=49 → print y =49 → total=total +y =91+49 =140 →x=x+1 → x=8 
→ test (x<=10) : yes → y=x*x=8*8=64 → print y =64 → total=total +y =140+64 =204 → x=x+1→ x=9 
→ test (x<=10) : yes → y=x*x=9*9=81 → print y =81 → total=total +y =204+81 =285 →x=x+1 →x=10
→ test (x<=10) : yes → y=x*x=10*10=100 →print y=100 → total=total +y =285+100=385 →x=x+1 →x=11
→ test (x<=10) : No → jump while
→ print total =385

تم تعديل هذه المشاركة بواسطة arabi2013 في 14 ديسمبر 2007 في 21:05

tvquran_6.gif

#3

طريقة رائعة في التتبع

كما اشكر لك حضورك الرائع

شكرا جزيلا

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#4

تمت اضافة المجموعة الثانية من التمارين

اتمنى أن ارى اسئلة ومناقشات وأفكار حول التمارين

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#5

الوصول الى الهدف ليس بالشيئ الهين + من طلب المعالي سهر الليالي .

أخي BjarneStudent وددت لو أبدأمعك لكن صادفتني مشكلة و هي أنا المتغير string لا يتعرف عليه المترجم .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#6

السلام عليكم ,, أريد أن احل السؤال الثاني :D .

السؤال الثاني

اقتباس
مضروب العدد هو حاصل ضرب تعداده

مثلا , مضروب الخمسة( !5 ) سوف يكون 5 * 4 * 3 * 2 * 1 = 120

ايضا , مضروب الثلاثة ( !3 ) سوف يكون 3 * 2 * 1 = 6

هناك ثوابت رياضية وهي ان مضروب الصفر يكون واحد دائما , وكذلك مضروب الواحد يساوي واحد.

اكتب برنامجا يقوم بحساب قيمة e

e = 1/1! - 3/3! + 5/5! -7/7! +n/!n

double fact(double n)
{
if(n<=1)
return 1;
return n*fact(n-1);
}

void Q2()
{
int n;
cin>>n;
double e =0;
double sign=1; 
for( double i= 1.0;i<=n;i+=2.0)
{
e = e + (sign)*( i / fact(i) );
sign *= -1;
}

حيث الدالة fact تحسب المضروب .. باستخدام Recursion .

والدالة Q2 تستفيد من fact لحساب المطلوب من السؤال .

- لاحظت ان البسط يزداد بمقدار 2 والمقام عبارة عن مضروب البسط

- لاحظت ان الاشارة تتغير في كل مرة . لذلك استخدمت الضرب في سالب واحد لمحاكاة المطلوب

الكود لم اترجمه , يعني ممكن يصير خطأ ,,

هل حلي صحيح :)

وهل توجد طريقة افضل ...

تم تعديل هذه المشاركة بواسطة الشمري في 21 ديسمبر 2007 في 08:30

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7
SIFE-C كتب:
الوصول الى الهدف ليس بالشيئ الهين + من طلب المعالي سهر الليالي .

أخي BjarneStudent وددت لو أبدأمعك لكن صادفتني مشكلة و هي أنا المتغير string لا يتعرف عليه المترجم .

اخي SIFE-C , في التمارين لم نتعامل مع سلاسل رمزية ( string ) , هل وضحتي لي , أين المشكلة في أي تمرين ؟

وأكون لك من الشاكرين.

الشمري كتب:
السلام عليكم ,, أريد أن احل السؤال الثاني :D .

السؤال الثاني

double fact(double n)
{
if(n<=1)
return 1;
return n*fact(n-1);
}

void Q2()
{
int n;
cin>>n;
double e =0;
double sign=1; 
for( double i= 1.0;i<=n;i+=2.0)
{
e = e + (sign)*( i / fact(i) );
sign *= -1;
}

حيث الدالة fact تحسب المضروب .. باستخدام Recursion .

والدالة Q2 تستفيد من fact لحساب المطلوب من السؤال .

- لاحظت ان البسط يزداد بمقدار 2 والمقام عبارة عن مضروب البسط

- لاحظت ان الاشارة تتغير في كل مرة . لذلك استخدمت الضرب في سالب واحد لمحاكاة المطلوب

الكود لم اترجمه , يعني ممكن يصير خطأ ,,

هل حلي صحيح :)

وهل توجد طريقة افضل ...

حل رائع وملاحظات جميله

لكن , قمت بإستخدام تقنيات لم نقوم بشرحها وهي ( for loop والـ recursion ,والدوال المستقلة ) ,وكل هذا سوف نشرحة في المحاضرة القادمة. لذلك يلاحظ على الكود أنه قصير نوعا ما.

والمطلوب في هذه التمارين , الحل بالتقنيات التي تعلمناها ( خلال نفس الدالة , أو نفس الصنف class , وبإستخدامة حلقة التكرار while , وبدون استخدام الإستدعاء الذاتي recursion).

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#8

السلام عليكم:

بالنسبه للكود الثاني للسؤال الاول :

هناك دالتين تكرار كل واحده تتكرر عشرة مرات مع ملاحظه

ان الداله الثانيه تنفذ عشر مرات قبل العوده للداله الاولى.

والشرط

cout << ( row % 2 ? "<" : ">" );

اذا كانت مثلا

cout<<(6%2؟ "<":">")

يطبع

">"

لان الناتج صفر وهذا معناه الشرط لم يتحقق

cout<<(7%2؟ "<":">")

يطبع

"<"

لان الناتج لايساوي صفر ومعناه صحيح الشرط

------------------------------------------------------------------------------------

السؤال الثاني:

واجهتني مشكله قسمه عدد صغير على كبير الناتج دائما صفر فماهو الحل.؟

tvquran_6.gif

#9

عرفت المشكله ساضيف الحل قريبا ان شاء الله

tvquran_6.gif

#10

السلام عليكم هذا البرنامج الثاني

#include <iostream>
using std::cout;
using std::endl;
using std::cin ;
int main()
 {
    int n=0;
 int b=1;
 double e=0;
 double t=0;
 double u=1;
 int i=1;
 cout<<"Enter N"<<endl;
 cin>>n;
  while(i<=n)
 {

        u*=i;
  t=b*static_cast<double> (i)/u;
   e+=t;
   b--;
   if(b==-2)
    b=1;
     i++;
 }

    cout<<endl;
    cout<<"e="<<e;
    return 0;
  }
tvquran_6.gif

#11

بالنسبه للسؤال الرابع من المجموعه الاولى :

اكتب برنامج يقرأ مجموعة من الأعداد الصحيحة .

هل افترض انه مثلا يطلب عشره ارقام ؟ مثلا.

tvquran_6.gif

#12
اقتباس
وأكون لك من الشاكرين

من المفروض أنا من يكون لك من الشاكرين ،أما المشكلة كانت في المحاضرتين 2 و 3 عند تنفيذ الأكواد حيث يصدر لي المترجم أخطاء .

تم تعديل هذه المشاركة بواسطة SIFE-C في 22 ديسمبر 2007 في 15:58

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#13

اخي SIFE-C:

استاذنا قال في البدايه نستخدم نفس الكومبايلر من اجل التسهيل على الجميع.

لكن نحن الى الان نستخدم السي القياسيه.

فقط بدل <string> <string.h>

ان شاء الله تمشي معك.

وبالتوفيق.

tvquran_6.gif

#14

بالتأكيد أنا أنفذ ما طلبه و المترجم هو VC6

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#15
arabi2013 كتب:
السلام عليكم:

بالنسبه للكود الثاني للسؤال الاول :

هناك دالتين تكرار كل واحده تتكرر عشرة مرات مع ملاحظه

ان الداله الثانيه تنفذ عشر مرات قبل العوده للداله الاولى.

والشرط

cout << ( row % 2 ? "<" : ">" );

اذا كانت مثلا

cout<<(6%2؟ "<":">")

يطبع

">"

لان الناتج صفر وهذا معناه الشرط لم يتحقق

cout<<(7%2؟ "<":">")

يطبع

"<"

لان الناتج لايساوي صفر ومعناه صحيح الشرط

------------------------------------------------------------------------------------

رائع

arabi2013 كتب:
السلام عليكم هذا البرنامج الثاني

#include <iostream>
using std::cout;
using std::endl;
using std::cin ;
int main()
{
int n=0;
int b=1;
double e=0;
double t=0;
double u=1;
int i=1;
cout<<"Enter N"<<endl;
cin>>n;
while(i<=n)
{

u*=i;
t=b*static_cast<double> (i)/u;
e+=t;
b--;
if(b==-2)
b=1;
i++;
}

cout<<endl;
cout<<"e="<<e;
return 0;
}

مفاتيح الحل هي في ايجاد المظروب خلال نفس حلقة التكرار , وإيجاد كسر مختلف الإشارة كل مرة ( مرة سالب ومرة موجب )

لو افتراضنا أن الـ n = 5 وتتبعنا الكود السابق , نجد أن دوراته بهذا الشكل

الدورة الأولى عندما :

i = 1 , b = 1

========================

u = u * i --> u = 1 * 1 ---> u = 1

t = b * i/u ----> t = 1 * 1/1 ---> t = 1

e = e + t ----> e = 0 + 1 ---> e = 1

الدورة الثانية عندما :

i = 2 , b = 0

========================

u = u * i --> u = 1 * 2 ---> u = 2

t = b * i/u ----> t = 0 * 2/2 ---> t = 0

e = e + t ----> e = 1 + 0 ---> e = 1

الدورة الثالثة عندما :

i = 3 , b = -1

========================

u = u * i --> u = 2 * 3 ---> u = 6

t = b * i/u ----> t = -1 * 3/2 ---> t = -3/6 ---> t = -1/2

e = e + t ----> e = 1 - 1/2 ---> e = 0.5

الدورة الرابعة عندما :

i = 4 , b = 1

========================

u = u * i --> u = 6 * 4 ---> u = 24

t = b * i/u ----> t = 1 * 4/24 ---> t = 4/24 ---> t = 1/6

e = e + t ----> e = 1/2 + 1/6 ---> e = 2/3

الدورة الخامسة عندما :

i = 5 , b = 0

========================

u = u * i --> u = 5 * 24 ---> u = 120

t = b * i / u ----> t = 0 * 5 / 120 ---> t = 0

e = e + t ----> e = 2/3 + 0 ---> e = 2/3

هكذا سوف تكون قيمة الـ e تساوي 2/3 = 0,6667 ومن المفترض أن تكون 13/24 = 0,54267

وهي بالطبع نتيجة خاطئة , لأن هناك خلل في إيجاد المضروب وقيمة الكسر في كل مرة.

SIFE-C كتب:
من المفروض أنا من يكون لك من الشاكرين ،أما المشكلة كانت في المحاضرتين 2 و 3 عند تنفيذ الأكواد حيث يصدر لي المترجم أخطاء .

اذا كانت المشكلة ليست في هذه المحاضرة , ارجو منك وضع السؤال في مكانه ( أي المحاضرتين , 3 أو 2 ) , من أجل الموضوعية

وأن توضح المشكلة بشكل أدق ( تضع الكود الذي ينتج خطأ عند تنفيذه ) , ولا تخف , فأنا متابع جميع المواضيع في الدورة

والمسألة على ما يبدو أنها بسيطة , ولا تستدعي القلق.

سعيد بمتابعتك

arabi2013 كتب:
بالنسبه للسؤال الرابع من المجموعه الاولى :

اكتب برنامج يقرأ مجموعة من الأعداد الصحيحة .

هل افترض انه مثلا يطلب عشره ارقام ؟ مثلا.

اذا لم يحدد من السؤال , اختر الطريقة التي تعجبك , سواء كان بحارس ( sentinel ) أو عن طريق عداد محدد.

آآسف للتجاوز.

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#16

هذا تصحيح الكود ان شاء الله يكون صحيح:

int main()
{
int n=0;
int b=-1;
double e=0;
double t=0;
double u=1;
int i=1;
cout<<"Enter N"<<endl;
cin>>n;
while(i<=n)
{
u*=i;

if(i%2==1)
{
b*=-1;
t=b*(i/u);
e+=t;

}
i++;


}

cout<<e<<endl;

return 0;
}
tvquran_6.gif

#17
arabi2013 كتب:
هذا تصحيح الكود ان شاء الله يكون صحيح:

int main()
{
int n=0;
int b=-1;
double e=0;
double t=0;
double u=1;
int i=1;
cout<<"Enter N"<<endl;
cin>>n;
while(i<=n)
{
u*=i;

if(i%2==1)
{
b*=-1;
t=b*(i/u);
e+=t;

}
i++;


}

cout<<e<<endl;

return 0;
}

رائع اخي عربي , اقصر كود رأيته يستخدم لحل هذه المسألة, وهذا مهم في هندسة البرمجيات

لوافترضنا أن قيمة n = 7 . لاحظت في طريقتك التالي :

e = 1/1 + 2/2 - 3/6 + 4/24 + 5/120 + 6/720 - 7/5040

تقوم بحساب قيمة الكسر ( اثناء ذلك يتم تغيير الإشارة ) عندما تكون الـ i فردية عن طريق الشرط التالي

if(i%2==1)
{
b*=-1;
t=b*(i/u);
e+=t;

}

وبهذه الطريقة استغنيت عن عبارة تكرار while المستقلة لعمل مضروب للمقام.

في الكود التالي , طريقة اخرى للحصول على e , وفيها استخدمنا عبارة الإختيار الثلاثة ( :? ) كوسيلة

 


while ( i <= n) {
  while ( ++j <= i )
   fact *= j;

  counter % 2  ? e += ( i / fact ) : e -= ( i / fact );

  counter++;

  fact = 1;
  j=0;
  i += 2;
}

وعند الإنتهاء من عمل البرنامج دائما ما نقوم بغسيل الكود ( احتياطات لإحتمالات بديهية , واضافة التعليقات على الكود واعادة ترتيبة )

الإحتمالات البديهية في كودنا هذا على سبيل المثال :

وضع اختبار أنه اذا ادخلت قيمة تساوي الصفر أو اقل , تطبع رسالة تنبيهية على الشاشة.

وضع اختبار أن القيمة الزوجية لـ N غير مقبولة.

وهكذا ..

تم تعديل هذه المشاركة بواسطة BjarneStudent في 25 ديسمبر 2007 في 20:05

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#18

نأخذ التمرين الأول من المجموعة الأولى , لنرى ماهي افكار الحل المناسبة لحله

كتب برنامج يقوم بتحويل العدد الثنائي ( الاعداد تحتوي على الصفر والواحد فقط , مثلا 1011 , 1110 , 10010 ) إلى عدد عشري.

على سبيل المثال : يستقبل البرنامج العدد الثنائي 1101 , ثم يحوله إلى العدد العشري 13.

( مساعدة , طريقة التحويل تكون كالتالي : 1*1 + 0*2 + 1*4 + 1*8 = 1 + 0 + 4 + 8 = 13 )

يؤخذ في عين الإعتبار , ان خانات العدد الثنائي غير محدده ( من الممكن ان تكون اربعة أو اكثر أو اقل ).

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#19

السلام عليكم.

الحمدلله ان الكود كان صحيح.

اشكرك اخي BjarneStudent على مجهود الكبير معنا.

وأن شاءالله نطلع اساتذه في السي على يدك.

وسوف اكتب الكود التالي ان شاء الله.

tvquran_6.gif

#20

هذا الكود لايجاد قيمه العدد الباينري من ثمان خانات فاقل.

الكود طويل شوي لكن نشوف افضله منه ان شاء الله.

int main()
 {
   int i;
   cout<<"Enter I:";
   int a1,a2,a3,a4,a5,a6,a7,a8;
   cin>>i;
   a1=(i%10       <1?0:1);
   a2=(i%100      <10?0:1);
   a3=(i%1000     <100?0:1);
   a4=(i%10000    <1000?0:1);
   a5=(i%100000   <10000?0:1);
   a6=(i%1000000  <100000?0:1);
   a7=(i%10000000 <1000000?0:1);
   a8=(i%100000000<1000000?0:1);
   a1*=1;
   a2*=2;
   a3*=4;
   a4*=8;
   a5*=16;
   a6*=32;
   a7*=64;
   a8*=128;
   cout<<a1+a2+a3+a4+a5+a6+a7+a8<<endl;
   return 0;
  }
tvquran_6.gif

#21
arabi2013 كتب:

هذا الكود لايجاد قيمه العدد الباينري من ثمان خانات فاقل.

الكود طويل شوي لكن نشوف افضله منه ان شاء الله.

int main()
{
int i;
cout<<"Enter I:";
int a1,a2,a3,a4,a5,a6,a7,a8;
cin>>i;
a1=(i%10 <1?0:1);
a2=(i%100 <10?0:1);
a3=(i%1000 <100?0:1);
a4=(i%10000 <1000?0:1);
a5=(i%100000 <10000?0:1);
a6=(i%1000000 <100000?0:1);
a7=(i%10000000 <1000000?0:1);
a8=(i%100000000<1000000?0:1);
a1*=1;
a2*=2;
a3*=4;
a4*=8;
a5*=16;
a6*=32;
a7*=64;
a8*=128;
cout<<a1+a2+a3+a4+a5+a6+a7+a8<<endl;
return 0;
}

المطلوب في الكود تحويل عدد ثنائي غير محدد الخانات

هذا الكود ينطبق فقط على الثمان خانات.

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#22

هذا التمرين بطريقه اخرى:

#include<iostream>
using namespace std;
int main()
{
int a;
int b=0;
int c=1;
cout<<"Number = ";
cin>>a;
while(a>0)
{
b+=(a%10)*c;
a/=10;
c*=2;
}
cout<<endl<<b<<endl;
}

تم تعديل هذه المشاركة بواسطة arabi2013 في 31 ديسمبر 2007 في 19:02

tvquran_6.gif

#23
arabi2013 كتب:

هذا التمرين بطريقه اخرى:

#include<iostream>
using namespace std;
int main()
{
int a;
int b=0;
int c=1;
cout<<"Number = ";
cin>>a;
while(a>0)
{
b+=(a%10)*c;
a/=10;
c*=2;
}
cout<<endl<<b<<endl;
}

الحل بسيط وقصير ورائع أخي عربي

اشكرك جزيل الشكر.

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

هذا الموضوع مغلق.

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