موقع طلبة جامعة البحرين

يمكنك تصفح الموقع كزائر ولكن ندعوك لتسجيل عضوية خاصة بك لتحصل على كافة الصلاحيات مثل تنزيل ملفات المكتبة وقراءة تعليقات هيئة التدريس وغيرها. يمكنك الحصول على عضوية مجانية بالضغط على زر تسجيل. إذا قمت بالتسجيل مسبقا فيمكنك الضغط على زر دخول.

تسجيل دخول
  • قسم المكتبة الجامعية مغلق مؤقتا بعد الاستهداف التي تعرضت له بعض خدمات أمازون في البحرين، جاري استرجاع الملفات ونقلها إلى سيرفرات جديدة وسيتم بعدها اعادة افتتاح المكتبة

الدراسة الجماعية لمقرر ITCS104 - ITCS112 الفصل الثاني 2014 - 2015

Blue Castle

اا Moderator - I.T. College اا
طاقم الإدارة
تاريخ التسجيل
19 أبريل 2013
المشاركات
1,638
المجموعة
ذكر
الدفعة الدراسية
2012
الكلية
كلية تقنية المعلومات
التخصص
Computer Science
السلام عليكم و رحمة الله و بركاته

تم فتح هذا الموضوع لمناقشة مقرر ITCS102 - ITCS104 - ITCS112

قسم المقرر في المكتبة الجامعية
https://www.uob-bh.com/forum/downloads.php?do=cat&id=3

لأي إستفسارات أو مساعدة تتعلق بهذه المقررات الرجاء طرحها هنا

بالتوفيق للجميع :smile2:
 
السلام عليكم...

احد عنده تست سابق بس مايكون مال هالسنتين 2014-2013 ، إذا احد عنده ياليت يحطه ، ومشكورين..
 
ابي حل هاي الاسايمنت ضروري

السلام عليكم ... ابي حل حق هاي الاسايمنت 104


Classes
Write the definition of a classnamed BankAccount which includes data members and the prototype of thefunction members as described below:
The data members of the class BankAccountare: AccountNumber (long), Name (string), and Balance (float).

The class BankAccount containsthe following member functions:
1. ReadAccountInfo(): to read all the data members.
2. Withdraw which is used to withdraw acertain amount X from the Account. It should check that the balance in theaccount is at least equal to X (i.e. X or more) before it allows the withdrawaland reduce the Balance by X.
3. Deposit which is used to Deposit a certain amount Y into theAccount. It should of course increase the Balance by Y.
4. IsAccountEmpty which returns true if the Balance is less thanor equal to zero.
Otherwise it returns false.
5. DisplayAccountDetails that prints (on the screen) all the information aboutthe Account.

Writea main program to declare MyAccount as an object of type BankAccount.
1. set MyAccount with yourname and account number and 100BD in balance.(use the function ReadAccountInfo())
2. Deposit 500BD in MyAccount
3. Print your account details
4. Withdraw 150BD from MyAccount
5. print your account details again.
6. Call the function IsAccountEmptyand output an appropriate message.











 
السلام عليكم ... ابي حل حق هاي الاسايمنت 104


Classes
Write the definition of a classnamed BankAccount which includes data members and the prototype of thefunction members as described below:
The data members of the class BankAccountare: AccountNumber (long), Name (string), and Balance (float).

The class BankAccount containsthe following member functions:
1. ReadAccountInfo(): to read all the data members.
2. Withdraw which is used to withdraw acertain amount X from the Account. It should check that the balance in theaccount is at least equal to X (i.e. X or more) before it allows the withdrawaland reduce the Balance by X.
3. Deposit which is used to Deposit a certain amount Y into theAccount. It should of course increase the Balance by Y.
4. IsAccountEmpty which returns true if the Balance is less thanor equal to zero.
Otherwise it returns false.
5. DisplayAccountDetails that prints (on the screen) all the information aboutthe Account.

Writea main program to declare MyAccount as an object of type BankAccount.
1. set MyAccount with yourname and account number and 100BD in balance.(use the function ReadAccountInfo())
2. Deposit 500BD in MyAccount
3. Print your account details
4. Withdraw 150BD from MyAccount
5. print your account details again.
6. Call the function IsAccountEmptyand output an appropriate message.











عليكم السلام
أختي الأسايمنت ما فيه شي مجرد كلاسس بتكون فيها لبرايفت الاسم ، رقم الحساب ، و البلنس و الببلك بكون فنكشنات المطلوبة و بعدين تكتبين المين مثل ما هو مطلوب ، اذا ممكن تحطين الحل الي كتبتينه يكون أفضل لان ما يصير اعطيش الحل جاهز
 
عليكم السلام
أختي الأسايمنت ما فيه شي مجرد كلاسس بتكون فيها لبرايفت الاسم ، رقم الحساب ، و البلنس و الببلك بكون فنكشنات المطلوبة و بعدين تكتبين المين مثل ما هو مطلوب ، اذا ممكن تحطين الحل الي كتبتينه يكون أفضل لان ما يصير اعطيش الحل جاهز

خيو لو اني اعرف الجواب وما احتاج مساعده جان ماحطيت ليكم السؤال :RpS_unsure:
 
خيو لو اني اعرف الجواب وما احتاج مساعده جان ماحطيت ليكم السؤال :RpS_unsure:
أدري أختي بس مو من حقي أحط جواب أسايمنت بالكامل بدون ما أشوف على الأقل محاولة الي حط السؤال بحيث أني اشوف أخطاءه و أوضحها و أعطيه الجواب النهائي ، بالإضافة ان لكلاسس داخل اياكم في تستت 2 و البارتكل كوز فكأني أضرش أكثر مما أفيدش اذا عطيتش الجواب دايركت ، اذا كانتين مو فاهمة لكلاسس أقدر أحط شرح مبسط لمفهومه بحيث أنه يساعدش على فهمه و المحاولة في الأسايمنت
 
عليكم السلام
أختي الأسايمنت ما فيه شي مجرد كلاسس بتكون فيها لبرايفت الاسم ، رقم الحساب ، و البلنس و الببلك بكون فنكشنات المطلوبة و بعدين تكتبين المين مثل ما هو مطلوب ، اذا ممكن تحطين الحل الي كتبتينه يكون أفضل لان ما يصير اعطيش الحل جاهز

أدري أختي بس مو من حقي أحط جواب أسايمنت بالكامل بدون ما أشوف على الأقل محاولة الي حط السؤال بحيث أني اشوف أخطاءه و أوضحها و أعطيه الجواب النهائي ، بالإضافة ان لكلاسس داخل اياكم في تستت 2 و البارتكل كوز فكأني أضرش أكثر مما أفيدش اذا عطيتش الجواب دايركت ، اذا كانتين مو فاهمة لكلاسس أقدر أحط شرح مبسط لمفهومه بحيث أنه يساعدش على فهمه و المحاولة في الأسايمنت

اني كنت غايبه في دا الجبتر عشان جدي اني موفاهمه
 
اني كنت غايبه في دا الجبتر عشان جدي اني موفاهمه
لكلاسس عبارة عن نوع من البرميتر أو بالأصح مكتبة جديدة أحنا ننشأها لغرض معين هو شبيه بلستركجر بس الفرق بينهم ان لستركجر عنده بس ال private أو ما نسميه بالبرميتر ، بس ما عنده الجزء المتعلق بالفنكشنات public فنقدر نقول ان لكلاسس يتكون من جزئيين أساسيين ال private و ال public :
شكل لكلاسس بكون بهاذي الطريقة :
كود:
class [COLOR=#ff0000]nameOfClass[/COLOR] {
private : 
// place of parameters of class 
public : 
// place of functions of class  
};
ال private يحتوي على البرميتر الأساسية للكلاسس على سبيل المثال خل ناخذ المثال الأول من تيتوريل لكلاسس :
https://drive.google.com/file/d/0By6IydPqj2WAYU50YndJMThrc1E/view?usp=sharing
السؤال طالب ان أحنا نسوي كلاسس اسمه dataType و انه لازم يحتوي على ثلاث اشياء ( البرميتر الخاص بال private ) : اليوم ، الشهر و السنة و لازم نحدد نوع كل واحد مثل لستركجر أحيانا السؤال يذكر الانواع و احياناً ما يذكر احنا نستنتج نوعهم بنفسنا من خلال المكتوب مثل هذا المثال ما ذكر بس المعروف ان اليوم و الشهر و السنة تكون أرقام بدون كسور و أرقام ما تتعد ال 4 أرقام فبنستخدم النوع int و بتكون طريقة كتابتنا للكلاسس بهاذي الطريقة :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
};
حالياً كتبنا بس البريمتر الخاصة بلكلاسس و هاذي البرميتر بنسخدمتها في الفنكشنات الخاص بال public في لكلاسس ، نجي نكمل السؤال ، السؤال يذكر ان الديفولت برميتر لهذا لكلاسس هي day = 1 , month =1 , year = 2000 بما معناه ان في حال المستخدم ما دخل معلومات للبريمتر المنشئ بنوع هذا لكلاسس فبتكون قيم البرميتر المنشئ هاذي القيم ، يمكن الصورة تكون مشوشة شوي بس انشاء الله بعد ما يكتمل لكلاسس و نكتب المين بتتوضح الصورة ، بالإضافة ذكر ان ال day لازم يكون من 1 الى 31 فقط و ال month من 1 الى 12 و ال year من 2000 الى 2100 فلازم نراعي هاذي الشي خلال كتابة فنكشن الإدخال ( ال set ) هذا يعتبر افشنت أو مثل ما نقول الاشياء الي ممكن تأدي الى خطأ في البرنامج في حال المستخدم دخل غير هاذي القيم ، هو عادةً مو مطلوب عليكم الا اذا طلب السؤال نفسه بس اذا ما طلب فعادي ما تسوين هذا الشي ، نجي الحين لل public ، السؤال ذكر ان عندنا 5 فنكشنات set ، print ، return the data ( get) , increment one day بالإضافة الى ال constructor و destructor نبدء بفنكشن ال set الفنكشن عبارة عن فنكشن لإدخال المعلومات فما ترجع شي فنوعها دائماً راح يكون void و راح تنكتب بهاذي الطريقة :
كود:
void setDateType( int d , int m , int y );
لاحظي اني في برميتر الفنكشن كتبت فقط الحروف الأولى من كل برميتر مثل ال day كتبت بس d و ال month كتبت بس m و ال year كتبت بس y لانه في حال كتبت الاسم بالكامل في إحتمال يصير عندنا خطأ عند إستخدام الفنكشن يصير ايرور بسبب التشابه بين اسم البرميتر في لبرايفت
و داخل لكلاسس بتكون بهاذي الطريقة :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
public: 
void setDateType( int d , int m , int y ); 
};
نجي للفنكشن الي بعدها ال print هي فنكشن تطبع المعلومات فقط ، فهي ما ترجع اي شي فبتكون من نوع void بالإضافة ان أحنا ما نحتاج ندخل برميتر فيها فبتكون بهاذي الطريقة :
كود:
void print();
و في لكلاسس :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
public: 
void setDateType( int d , int m , int y ); 
void print(); 
};
باقي الفنكشنات بتنحط بمثل الطريقة فبتجنب اكتبهم في كل مرة و بكتبهم بالكامل بعد توضيح كل الفنكشنات
نجي لفنكش return the data أو مثل ما نسميها فنكشن ال get مثل ما ذكر السؤال فنكشن لترجيع قيم البرمتر المدخلة لها طريقتين في الكتابة بس يعتمد على السؤال نفسه هل يبغى ان احنا نرجع كل البرميتر مرة وحدة او كل واحد بروحه اذا كان كلهم فلازم نكتبها ك void اذا كل وحدة بروحها فبنكتبها حسب نوعها :
بالنسبة لل void فلازم كل البرميترس بتكون باي رفرنس فبنكتبها بهاذي الطريقة :
كود:
void getDataType([COLOR=#ff0000] int [/COLOR][COLOR=#0000ff]&[/COLOR][COLOR=#ff0000] d[/COLOR] , [COLOR=#ff0000]int [/COLOR][COLOR=#0000ff]&[/COLOR][COLOR=#ff0000] m[/COLOR] , [COLOR=#ff0000]int [/COLOR][COLOR=#0000ff]&[/COLOR][COLOR=#ff0000] y[/COLOR] );
في حال نبغى نكتب كل وحدة بروحها بينكتبون بهاذي الطريقة :
كود:
int getDay(); 
int getMonth(); 
int getYear();
السؤال ما حدد اذا يبغي فنكشن وحدة أو عدة فنكشنات فعندش الخيار لإستخدام اي من الطريقتين بس في حال السؤال قال function فقط فأنتين لازم تستخدمين ال void و اذا ذكر functions فلازم تستخدمين الطريقة الثانية أو تستخدمين الطريقة الأولى بس تقسمينهم كل واحد بروحه بهاذي الطريقة :
كود:
void getDay(int& d); 
void getMonth( int & m );
void getYear( int & y ) ;
الفنكشن الي بعدها هي increment one day فنكشن تزيد الايام يوم واحد و ما ترجع اي شي فبكون نوعها void و ما بتكون فيها اي برميتر مجرد بنحط استيتمنت تزيد الايام 1 داخل الفنكشن و بتكون بهاذي الطريقة :
كود:
void incrementDay();
بعدين نجي للكونستركتر و الدستركتر نبدأ بال constructor دائماً بكون أسمه مثل اسم لكلاسس بس تختلف كتابته من حالة الى حالة في حالته العادية بكون مكتوب فقط اسمه بهاذي الطريقة :
كود:
dataType();
في حال السؤال ذكر ديفولت برميتر مثل السؤال المذكرور فبنعرف بين القوسين البرميتر المذكورة في لبرايفت بنفس الطريقة الي عرفناهم ابها في ال set بالإضافة ان أحنا بنساويهم ب قيم الديفوت المذكورة في السؤال بهاذي الطريقة :
كود:
dataType( [COLOR=#ff0000]int d[/COLOR] = [COLOR=#0000ff]1[/COLOR] , [COLOR=#ff0000]int m[/COLOR] = [COLOR=#0000ff]1[/COLOR] , [COLOR=#ff0000]int y [/COLOR]= [COLOR=#0000ff]2000[/COLOR] );
بالنسبة للدستركتور ( destructor ) فبنكتبها بهاذي نفس اسم لاكسس dataType بس بنضيف قبلها هاذي الإشارة ~ و نقدر نكتب هاذي الأشارة من الكيبورد اذا ضغطنا shift + حرف ال ذ في الكيبورد بس لازم تكون اللغة بالأنجلينزي بتكون طريقة كتاباته بهاذي الطريقة :
كود:
[COLOR=#0000ff]~[/COLOR]dataType();
في النهاية لكلاسس بكون مكتوب جدي :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
public: 
void setDateType( int d , int m , int y ); 
void print(); 
void getDataType( int & d , in & m , int & y ); 
int getDay(); 
int getMonth(); 
int getYear(); 
void incrementDay(); 
 dataType( int d = 1 , int m = 1 , int y = 2000 ); 
~dataType();
};
هذا لكلاسس بس في النهاية يبقى علينا فنكشنات لكلاسس لأن أحنا بس كتبنا ادخل لكلاسس لبروتتايب الخاص بهم و ما كتبناهم كامل
نجي للفنكشن الأولى ال set و لازم نراعي الافشنت الي ذكرها السؤال لحدود الارقام للأيام و الشهور و السنين فبنستخدم الاف ستيتمنت في هاذي الحالة بهاذي الطريقة
كود:
[COLOR=#0000ff]void[/COLOR][COLOR=#ff0000] dataType::[/COLOR][COLOR=#0000ff]setDateType( int d , int m , int y[/COLOR] [COLOR=#0000ff]){[/COLOR]
// For Day 
if ( d >= 1 && d <=31 )
day = d ; 
// For month 
if ( m >= 1 && m <=12 )
month = m ; 
// For year 
if ( y >= 2000 && y <=2100 )
year = y ; 
}
لاحظي بروتوتايب الفنكشن الي باللون الأزرق بتشوفين اني حطيت نوع الفنكشن في البداية void بعدها كتبت
كود:
dataType::
هذا المكتوب هو عبارة عن إشارة بشكل ان هاذي الفنكشن هي نفسها فنكشن ال set الموجودة في لكلاسس و ان هذا ال implement مالها و خلال كتابتنا لكل فنكشن بنكتب النوع في البداية سواء كان void او اي شي ثاني بعدها اسم لكلاسس تتبعها لغلوبل ::و لازم يكونون ملتصقين باسم الفنكشن مثل ما شفنا في فنكشن ال set باقي الفنكشنات كلها بتكون بهاذي الطريقة ب ال constructor , ال destructor فقط بنكتب اسم لكلاس و لغلوبل ملاصق ليهم ، نجي لفنكشن ال get بتكون بهاذي الطريقة :
كود:
void dataType::getDataType( int & d , int & m , int & y ){
// For Day 
if ( day >= 1 && day <=31 )
d = day ; 
// For month 
if ( month >= 1 && month <=12 )
m = month ; 
// For year 
if ( year >= 2000 && year <=2100 )
y = year ;
لاحظي داخل هاذي الفنكشن ان احنا قلبنا كل شي مكان البرميتر الاساسي في لكلاسس day , month , year حطينا البرميتر المدخلة من الفنكشن d , m , y على عكس فنكشن ال set ، هل هذا غلط ، لا مو غلط في حال كانت فنكشن ال get من نوع void دائماً نقلبهم السالفة فيها تفصيل شوي بس أفضل ما أذكره لانه يمكن تختلط الأمور عليش ، انزين في حال كان هناك عندة فنكشنات لل get و نوعهم هو نوع البرميتر المرجع فشلون بنكتبهم و شون بكون الامبلمنت مالهم ؟ بطبق على اول فنكشن getDay بهاذي الطريقة :
كود:
[COLOR=#0000ff]int[/COLOR] [COLOR=#ff0000]dataType::[/COLOR]getDay(){
[COLOR=#008000]return day;[/COLOR] 
}
لاحظي مثل ما ذكرت سابقاً نوع الفنكشن في البداية بعدها اسم لكلاسس و لغلوبل ملاصق للفنكشن ، نجي لل implement ، لاحظي داخل الفنكشن مجرد سوينا رتيرن للبرميتر الي نبغيه هاذي الطريقة الثانية بس ما نكتب d مثل ال void لازم نكتب اسم البرميتر بالكامل الموجود في لبرايفت day
باقي الفنكشنات مثل الشي :
كود:
int dataType::getMonth(){
return month; 
}
كود:
int dataType::getYear(){
return year; 
}
نجي لفنكشن لبرنت و مثل الي قلناه سابقاً ينطبق عليها
كود:
void dataType::print(){
cout << " Day : " << day << " Month : " << month << " Year : " << year << endl ;
}
لاحظي ال implement مال فنكشن ل print مجرد سي أوت للبرميتر و دائماً تنكتب بهاذي الطريقة ، نجي لفنكشن increment day بنكتبها بهاذي الطريقة :
كود:
void dataType::incrementDay(){
day+=1 ; 
}
مجرد نخلي اليوم يزيد 1 ، نجي لل contractor
كود:
 [COLOR=#008000]dataType::[/COLOR]dataType( int d = 1 , int m = 1 , int y = 2000 ){
[COLOR=#0000ff]day[/COLOR] = [COLOR=#ff0000]d[/COLOR] ; 
[COLOR=#0000ff]month[/COLOR] = [COLOR=#ff0000]m[/COLOR] ; 
[COLOR=#0000ff]year[/COLOR] = [COLOR=#ff0000]y[/COLOR] ; 
}
لاحظي اني ساويت البرميتر في لبروتوتايب بالبرايفت برميتر في لكلاسس بحيث انها تعطيها الديفولت فاليو ، بالإضافة لاحظي لبروتوتايب مجرد كتبت نوع لكلاسس و لغلوب قبل الكونستركتر ، نجي لل destructor :
كود:
[COLOR=#008000]dataType::[/COLOR]~dataType(){
// Empty we don't write anything
}
مثل الشي ينطبق على ال destructor بالنسبة للبروتوتايب مجرد نضيف اسم لكلاسس و لغلوبل و في الكتابة ما ننسى هاذي الإشارة ~ ، بالإضافة لاحظي داخل ال destructor مجرد كتبت كومنت انه فاضي ، بس هذا مو معناته انه ماله استخدام له استخدام بتتعلمونه لما تاخذون البوينتر و بالتحديد الداينمك اريه بس في الوقت الحالي مجرد تكتبون كومنت انه فاضي ، ملاحظة أخيرة لكلاسس ينكتب مكان ما ينكتب ال struct بين using namespace std ; و المين ، بالإضافة ان الامبلمنت ماال فنكشنات الببلك بينكتب بعد في هاذي المنطقة

هذا كل شي يتعلق بلكلاسس اذا في شي مو مفهوم تقدرين تسألين عنه ، بالنسبة للأسايمنت اذا كان التسليم الليلة فبسويه و برفعه على المنتدى و بعدين حاولي تحلينه بنفسش ، بس اذا بعده في وقت أفضل تحاولين فيه و اذا في أخطاء بعدلها و عذراً على الإطالة و التأخر في الرد
 
التعديل الأخير:
لكلاسس عبارة عن نوع من البرميتر أو بالأصح مكتبة جديدة أحنا ننشأها لغرض معين هو شبيه بلستركجر بس الفرق بينهم ان لستركجر عنده بس ال private أو ما نسميه بالبرميتر ، بس ما عنده الجزء المتعلق بالفنكشنات public فنقدر نقول ان لكلاسس يتكون من جزئيين أساسيين ال private و ال public :
شكل لكلاسس بكون بهاذي الطريقة :
كود:
class [COLOR=#ff0000]nameOfClass[/COLOR] {
private : 
// place of parameters of class 
public : 
// place of functions of class  
};
ال private يحتوي على البرميتر الأساسية للكلاسس على سبيل المثال خل ناخذ المثال الأول من تيتوريل لكلاسس :
https://drive.google.com/file/d/0By6IydPqj2WAYU50YndJMThrc1E/view?usp=sharing
السؤال طالب ان أحنا نسوي كلاسس اسمه dataType و انه لازم يحتوي على ثلاث اشياء ( البرميتر الخاص بال private ) : اليوم ، الشهر و السنة و لازم نحدد نوع كل واحد مثل لستركجر أحيانا السؤال يذكر الانواع و احياناً ما يذكر احنا نستنتج نوعهم بنفسنا من خلال المكتوب مثل هذا المثال ما ذكر بس المعروف ان اليوم و الشهر و السنة تكون أرقام بدون كسور و أرقام ما تتعد ال 4 أرقام فبنستخدم النوع int و بتكون طريقة كتابتنا للكلاسس بهاذي الطريقة :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
};
حالياً كتبنا بس البريمتر الخاصة بلكلاسس و هاذي البرميتر بنسخدمتها في الفنكشنات الخاص بال public في لكلاسس ، نجي نكمل السؤال ، السؤال يذكر ان الديفولت برميتر لهذا لكلاسس هي day = 1 , month =1 , year = 2000 بما معناه ان في حال المستخدم ما دخل معلومات للبريمتر المنشئ بنوع هذا لكلاسس فبتكون قيم البرميتر المنشئ هاذي القيم ، يمكن الصورة تكون مشوشة شوي بس انشاء الله بعد ما يكتمل لكلاسس و نكتب المين بتتوضح الصورة ، بالإضافة ذكر ان ال day لازم يكون من 1 الى 31 فقط و ال month من 1 الى 12 و ال year من 2000 الى 2100 فلازم نراعي هاذي الشي خلال كتابة فنكشن الإدخال ( ال set ) هذا يعتبر افشنت أو مثل ما نقول الاشياء الي ممكن تأدي الى خطأ في البرنامج في حال المستخدم دخل غير هاذي القيم ، هو عادةً مو مطلوب عليكم الا اذا طلب السؤال نفسه بس اذا ما طلب فعادي ما تسوين هذا الشي ، نجي الحين لل public ، السؤال ذكر ان عندنا 5 فنكشنات set ، print ، return the data ( get) , increment one day بالإضافة الى ال constructor و destructor نبدء بفنكشن ال set الفنكشن عبارة عن فنكشن لإدخال المعلومات فما ترجع شي فنوعها دائماً راح يكون void و راح تنكتب بهاذي الطريقة :
كود:
void setDateType( int d , int m , int y );
لاحظي اني في برميتر الفنكشن كتبت فقط الحروف الأولى من كل برميتر مثل ال day كتبت بس d و ال month كتبت بس m و ال year كتبت بس y لانه في حال كتبت الاسم بالكامل في إحتمال يصير عندنا خطأ عند إستخدام الفنكشن يصير ايرور بسبب التشابه بين اسم البرميتر في لبرايفت
و داخل لكلاسس بتكون بهاذي الطريقة :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
public: 
void setDateType( int d , int m , int y ); 
};
نجي للفنكشن الي بعدها ال print هي فنكشن تطبع المعلومات فقط ، فهي ما ترجع اي شي فبتكون من نوع void بالإضافة ان أحنا ما نحتاج ندخل برميتر فيها فبتكون بهاذي الطريقة :
كود:
void print();
و في لكلاسس :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
public: 
void setDateType( int d , int m , int y ); 
void print(); 
};
باقي الفنكشنات بتنحط بمثل الطريقة فبتجنب اكتبهم في كل مرة و بكتبهم بالكامل بعد توضيح كل الفنكشنات
نجي لفنكش return the data أو مثل ما نسميها فنكشن ال get مثل ما ذكر السؤال فنكشن لترجيع قيم البرمتر المدخلة لها طريقتين في الكتابة بس يعتمد على السؤال نفسه هل يبغى ان احنا نرجع كل البرميتر مرة وحدة او كل واحد بروحه اذا كان كلهم فلازم نكتبها ك void اذا كل وحدة بروحها فبنكتبها حسب نوعها :
بالنسبة لل void فلازم كل البرميترس بتكون باي رفرنس فبنكتبها بهاذي الطريقة :
كود:
void getDataType([COLOR=#ff0000] int [/COLOR][COLOR=#0000ff]&[/COLOR][COLOR=#ff0000] d[/COLOR] , [COLOR=#ff0000]int [/COLOR][COLOR=#0000ff]&[/COLOR][COLOR=#ff0000] m[/COLOR] , [COLOR=#ff0000]int [/COLOR][COLOR=#0000ff]&[/COLOR][COLOR=#ff0000] y[/COLOR] );
في حال نبغى نكتب كل وحدة بروحها بينكتبون بهاذي الطريقة :
كود:
int getDay(); 
int getMonth(); 
int getYear();
السؤال ما حدد اذا يبغي فنكشن وحدة أو عدة فنكشنات فعندش الخيار لإستخدام اي من الطريقتين بس في حال السؤال قال function فقط فأنتين لازم تستخدمين ال void و اذا ذكر functions فلازم تستخدمين الطريقة الثانية أو تستخدمين الطريقة الأولى بس تقسمينهم كل واحد بروحه بهاذي الطريقة :
كود:
void getDay(int& d); 
void getMonth( int & m );
void getYear( int & y ) ;
الفنكشن الي بعدها هي increment one day فنكشن تزيد الايام يوم واحد و ما ترجع اي شي فبكون نوعها void و ما بتكون فيها اي برميتر مجرد بنحط استيتمنت تزيد الايام 1 داخل الفنكشن و بتكون بهاذي الطريقة :
كود:
void incrementDay();
بعدين نجي للكونستركتر و الدستركتر نبدأ بال constructor دائماً بكون أسمه مثل اسم لكلاسس بس تختلف كتابته من حالة الى حالة في حالته العادية بكون مكتوب فقط اسمه بهاذي الطريقة :
كود:
dataType();
في حال السؤال ذكر ديفولت برميتر مثل السؤال المذكرور فبنعرف بين القوسين البرميتر المذكورة في لبرايفت بنفس الطريقة الي عرفناهم ابها في ال set بالإضافة ان أحنا بنساويهم ب قيم الديفوت المذكورة في السؤال بهاذي الطريقة :
كود:
dataType( [COLOR=#ff0000]int d[/COLOR] = [COLOR=#0000ff]1[/COLOR] , [COLOR=#ff0000]int m[/COLOR] = [COLOR=#0000ff]1[/COLOR] , [COLOR=#ff0000]int y [/COLOR]= [COLOR=#0000ff]2000[/COLOR] );
بالنسبة للدستركتور ( destructor ) فبنكتبها بهاذي نفس اسم لاكسس dataType بس بنضيف قبلها هاذي الإشارة ~ و نقدر نكتب هاذي الأشارة من الكيبورد اذا ضغطنا shift + حرف ال ذ في الكيبورد بس لازم تكون اللغة بالأنجلينزي بتكون طريقة كتاباته بهاذي الطريقة :
كود:
[COLOR=#0000ff]~[/COLOR]dataType();
في النهاية لكلاسس بكون مكتوب جدي :
كود:
class dataType { 
private : 
int day; 
int month; 
int year;
public: 
void setDateType( int d , int m , int y ); 
void print(); 
void getDataType( int & d , in & m , int & y ); 
int getDay(); 
int getMonth(); 
int getYear(); 
void incrementDay(); 
 dataType( int d = 1 , int m = 1 , int y = 2000 ); 
~dataType();
};
هذا لكلاسس بس في النهاية يبقى علينا فنكشنات لكلاسس لأن أحنا بس كتبنا ادخل لكلاسس لبروتتايب الخاص بهم و ما كتبناهم كامل
نجي للفنكشن الأولى ال set و لازم نراعي الافشنت الي ذكرها السؤال لحدود الارقام للأيام و الشهور و السنين فبنستخدم الاف ستيتمنت في هاذي الحالة بهاذي الطريقة
كود:
[COLOR=#0000ff]void[/COLOR][COLOR=#ff0000] dataType::[/COLOR][COLOR=#0000ff]setDateType( int d , int m , int y[/COLOR] [COLOR=#0000ff]){[/COLOR]
// For Day 
if ( d >= 1 && d <=31 )
day = d ; 
// For month 
if ( m >= 1 && m <=12 )
month = m ; 
// For year 
if ( y >= 2000 && y <=2100 )
year = y ; 
}
لاحظي بروتوتايب الفنكشن الي باللون الأزرق بتشوفين اني حطيت نوع الفنكشن في البداية void بعدها كتبت
كود:
dataType::
هذا المكتوب هو عبارة عن إشارة بشكل ان هاذي الفنكشن هي نفسها فنكشن ال set الموجودة في لكلاسس و ان هذا ال implement مالها و خلال كتابتنا لكل فنكشن بنكتب النوع في البداية سواء كان void او اي شي ثاني بعدها اسم لكلاسس تتبعها لغلوبل ::و لازم يكونون ملتصقين باسم الفنكشن مثل ما شفنا في فنكشن ال set باقي الفنكشنات كلها بتكون بهاذي الطريقة ب ال constructor , ال destructor فقط بنكتب اسم لكلاس و لغلوبل ملاصق ليهم ، نجي لفنكشن ال get بتكون بهاذي الطريقة :
كود:
void dataType::getDataType( int & d , int & m , int & y ){
// For Day 
if ( day >= 1 && day <=31 )
d = day ; 
// For month 
if ( month >= 1 && month <=12 )
m = month ; 
// For year 
if ( year >= 2000 && year <=2100 )
y = year ;
لاحظي داخل هاذي الفنكشن ان احنا قلبنا كل شي مكان البرميتر الاساسي في لكلاسس day , month , year حطينا البرميتر المدخلة من الفنكشن d , m , y على عكس فنكشن ال set ، هل هذا غلط ، لا مو غلط في حال كانت فنكشن ال get من نوع void دائماً نقلبهم السالفة فيها تفصيل شوي بس أفضل ما أذكره لانه يمكن تختلط الأمور عليش ، انزين في حال كان هناك عندة فنكشنات لل get و نوعهم هو نوع البرميتر المرجع فشلون بنكتبهم و شون بكون الامبلمنت مالهم ؟ بطبق على اول فنكشن getDay بهاذي الطريقة :
كود:
[COLOR=#0000ff]int[/COLOR] [COLOR=#ff0000]dataType::[/COLOR]getDay(){
[COLOR=#008000]return day;[/COLOR] 
}
لاحظي مثل ما ذكرت سابقاً نوع الفنكشن في البداية بعدها اسم لكلاسس و لغلوبل ملاصق للفنكشن ، نجي لل implement ، لاحظي داخل الفنكشن مجرد سوينا رتيرن للبرميتر الي نبغيه هاذي الطريقة الثانية بس ما نكتب d مثل ال void لازم نكتب اسم البرميتر بالكامل الموجود في لبرايفت day
باقي الفنكشنات مثل الشي :
كود:
int dataType::getMonth(){
return month; 
}
كود:
int dataType::getYear(){
return year; 
}
نجي لفنكشن لبرنت و مثل الي قلناه سابقاً ينطبق عليها
كود:
void dataType::print(){
cout << " Day : " << day << " Month : " << month << " Year : " << year << endl ;
}
لاحظي ال implement مال فنكشن ل print مجرد سي أوت للبرميتر و دائماً تنكتب بهاذي الطريقة ، نجي لفنكشن increment day بنكتبها بهاذي الطريقة :
كود:
void dataType::incrementDay(){
day+=1 ; 
}
مجرد نخلي اليوم يزيد 1 ، نجي لل contractor
كود:
 [COLOR=#008000]dataType::[/COLOR]dataType( int d = 1 , int m = 1 , int y = 2000 ){
[COLOR=#0000ff]day[/COLOR] = [COLOR=#ff0000]d[/COLOR] ; 
[COLOR=#0000ff]month[/COLOR] = [COLOR=#ff0000]m[/COLOR] ; 
[COLOR=#0000ff]year[/COLOR] = [COLOR=#ff0000]y[/COLOR] ; 
}
لاحظي اني ساويت البرميتر في لبروتوتايب بالبرايفت برميتر في لكلاسس بحيث انها تعطيها الديفولت فاليو ، بالإضافة لاحظي لبروتوتايب مجرد كتبت نوع لكلاسس و لغلوب قبل الكونستركتر ، نجي لل destructor :
كود:
[COLOR=#008000]dataType::[/COLOR]~dataType(){
// Empty we don't write anything
}
مثل الشي ينطبق على ال destructor بالنسبة للبروتوتايب مجرد نضيف اسم لكلاسس و لغلوبل و في الكتابة ما ننسى هاذي الإشارة ~ ، بالإضافة لاحظي داخل ال destructor مجرد كتبت كومنت انه فاضي ، بس هذا مو معناته انه ماله استخدام له استخدام بتتعلمونه لما تاخذون البوينتر و بالتحديد الداينمك اريه بس في الوقت الحالي مجرد تكتبون كومنت انه فاضي ، ملاحظة أخيرة لكلاسس ينكتب مكان ما ينكتب ال struct بين using namespace std ; و المين ، بالإضافة ان الامبلمنت ماال فنكشنات الببلك بينكتب بعد في هاذي المنطقة

هذا كل شي يتعلق بلكلاسس اذا في شي مو مفهوم تقدرين تسألين عنه ، بالنسبة للأسايمنت اذا كان التسليم الليلة فبسويه و برفعه على المنتدى و بعدين حاولي تحلينه بنفسش ، بس اذا بعده في وقت أفضل تحاولين فيه و اذا في أخطاء بعدلها و عذراً على الإطالة و التأخر في الرد

:nosweat: ماشاء الله
شكرا على الشرح اهو يبيله يعني دراسه
التسليم باجر
وهاي اللي قدرت عليه :
#include<iostream>
#include<string>
using namespace std;
class BankAccount
{
private :
long AccountNumber;
string Name;
float Balance;
public:
set function for all members
get function for all members
withdraw check if balance >= amount then reduce Balance by amount
void withdrow (float amount)​
ان شاء الله تقدر تساعدني :99:
 
:nosweat: ماشاء الله
شكرا على الشرح اهو يبيله يعني دراسه
التسليم باجر
وهاي اللي قدرت عليه :
#include<iostream>
#include<string>
using namespace std;
class BankAccount
{
private :
long AccountNumber;
string Name;
float Balance;
public:
set function for all members
get function for all members
withdraw check if balance >= amount then reduce Balance by amount
void withdrow (float amount)​
ان شاء الله تقدر تساعدني :99:
أختي ما كتبتين شي من الاسايمنت ، البداية صحيحة بس لبروتوتايب مال فنكشنات ال public كله غلط ماعدا فنكشن withdraw اتمنى تقرين الشرح مرة ثانية و تطبقين عليه لانه مطلوب عليكم في تست 2 و البارتكل كوز ، تفضلي هذا الحل :
كود:
#include<iostream>
#include<string>
using namespace std; 


class BankAccount {
	private : 
	long AccountNumber ; 
	string Name ; 
	float Balance ; 
	public : 
	void ReadAccountInfo( long an , string n , float b ); 
	void Withdraw(float x);
	void Deposit(float y); 
	bool IsAccountEmpty(); 
	void DisplayAccountDetails();
};


void BankAccount::ReadAccountInfo( long an , string n , float b ){
	AccountNumber = an ; 
	Name = n ; 
	Balance = b ; 
}


void BankAccount::Withdraw(float x){
	if ( Balance >= x ){
    	Balance-=x;
}
}


void BankAccount::Deposit(float y){
	Balance+=y;
}


bool BankAccount::IsAccountEmpty(){
	if ( Balance <= 0 )
    	return true ; 
	else{
		return false ; 
	}
	
}


void BankAccount::DisplayAccountDetails(){
	cout << " Account Number : " << AccountNumber << " Name : " << Name <<" Balaance : " << Balance << endl ; 
}


int main(){ 
	BankAccount MyAccount;
	MyAccount.ReadAccountInfo( 73874129 ," Mohammed", 100 ) ; 
	MyAccount.Deposit(500);
	MyAccount.DisplayAccountDetails();
	MyAccount.Withdraw(150);
	MyAccount.DisplayAccountDetails();
	if ( MyAccount.IsAccountEmpty() == true ){
		cout << " The Account is Empty . "<< endl ; 
	}
	else{
		cout << " The account isn't Empty " << endl; 
	}
	
	system("pause");
	return 0 ; 
}
 
أختي ما كتبتين شي من الاسايمنت ، البداية صحيحة بس لبروتوتايب مال فنكشنات ال public كله غلط ماعدا فنكشن withdraw اتمنى تقرين الشرح مرة ثانية و تطبقين عليه لانه مطلوب عليكم في تست 2 و البارتكل كوز ، تفضلي هذا الحل :
كود:
#include<iostream>
#include<string>
using namespace std; 


class BankAccount {
    private : 
    long AccountNumber ; 
    string Name ; 
    float Balance ; 
    public : 
    void ReadAccountInfo( long an , string n , float b ); 
    void Withdraw(float x);
    void Deposit(float y); 
    bool IsAccountEmpty(); 
    void DisplayAccountDetails();
};


void BankAccount::ReadAccountInfo( long an , string n , float b ){
    AccountNumber = an ; 
    Name = n ; 
    Balance = b ; 
}


void BankAccount::Withdraw(float x){
    if ( Balance >= x ){
        Balance-=x;
}
}


void BankAccount::Deposit(float y){
    Balance+=y;
}


bool BankAccount::IsAccountEmpty(){
    if ( Balance <= 0 )
        return true ; 
    else{
        return false ; 
    }
    
}


void BankAccount::DisplayAccountDetails(){
    cout << " Account Number : " << AccountNumber << " Name : " << Name <<" Balaance : " << Balance << endl ; 
}


int main(){ 
    BankAccount MyAccount;
    MyAccount.ReadAccountInfo( 73874129 ," Mohammed", 100 ) ; 
    MyAccount.Deposit(500);
    MyAccount.DisplayAccountDetails();
    MyAccount.Withdraw(150);
    MyAccount.DisplayAccountDetails();
    if ( MyAccount.IsAccountEmpty() == true ){
        cout << " The Account is Empty . "<< endl ; 
    }
    else{
        cout << " The account isn't Empty " << endl; 
    }
    
    system("pause");
    return 0 ; 
}

ان شاء الله بدرسه و براجعه .. وشكرا على الحل بس يطلع ليي ايرور عند 'system' was not declared in this scope
 
ان شاء الله بدرسه و براجعه .. وشكرا على الحل بس يطلع ليي ايرور عند 'system' was not declared in this scope
عفواً
بعض الكومبايلات القديمة ما تقبل الأمر :
كود:
system("pause");
فتكتبين بس تكتبين :
كود:
return 0 ;
و البعض يحتاج ما اعرف اي كومبايلر تستخدمين و اي نسخة بس اتوقع هاذي المشكلة الكود شغال عندي بس جربي تحذفين ال :
كود:
system("pause");
و تسوين كومبايل من جديد ، الكود شغال عندي حتى شوفي الفيديو نسخت الكود دايركت من الموضوع :
https://drive.google.com/file/d/0By6IydPqj2WATUdGM3ZqNFk1dTA/view?usp=sharing
 
  • Like
التفاعلات: Joody
عفواً
بعض الكومبايلات القديمة ما تقبل الأمر :
كود:
system("pause");
فتكتبين بس تكتبين :
كود:
return 0 ;
و البعض يحتاج ما اعرف اي كومبايلر تستخدمين و اي نسخة بس اتوقع هاذي المشكلة الكود شغال عندي بس جربي تحذفين ال :
كود:
system("pause");
و تسوين كومبايل من جديد ، الكود شغال عندي حتى شوفي الفيديو نسخت الكود دايركت من الموضوع :
https://drive.google.com/file/d/0By6IydPqj2WATUdGM3ZqNFk1dTA/view?usp=sharing

ايي احين راح الايرور بس الشاشه تطلع وتصك بسرعه ويش الحل معاها ..؟؟؟؟:no:
 
ايي احين راح الايرور بس الشاشه تطلع وتصك بسرعه ويش الحل معاها ..؟؟؟؟:no:
بما ان الشاشة تطلع و تصك بسرعة معناتها البرنامج شغال
الحل انش تحطين ال :
كود:
system("pause");
عشان توقف الشاشة ، المشكلة مو في الكود المشكلة ان الكومبايلر الي تستخدمينه قديم ، في حال كنتين تستخدمين ال dev c++ أو visual c++ 2008 أو visual c++ 2010 ماراح تصيدش هالمشكلة في حال استخدام ال :
كود:
system("pause");
الحل انش تسيفين الكود الي طرشته في ملف cpp مثل ما هو و بيشتغل عند اللاب اسستن لانهم يستخدمون البرامج الي ذكرتها سابقاً اذا ما تعرفين تحفضينه في ملف cpp نزلي الملف من هني :
https://drive.google.com/file/d/0By6IydPqj2WAdmJRekIxbVRDN0E/view?usp=sharing
بالنسبة للكومبايلر تقدرين تنزلين هاذي النسخة من ال dev و ما بتصيدش المشكلة مرة ثانية و تقدرين تجربين الكود عليها بال :
كود:
system("pause");
https://drive.google.com/file/d/0By6IydPqj2WAMlF3VXBBLVU2a2c/view?usp=sharing
 
بما ان الشاشة تطلع و تصك بسرعة معناتها البرنامج شغال
الحل انش تحطين ال :
كود:
system("pause");
عشان توقف الشاشة ، المشكلة مو في الكود المشكلة ان الكومبايلر الي تستخدمينه قديم ، في حال كنتين تستخدمين ال dev c++ أو visual c++ 2008 أو visual c++ 2010 ماراح تصيدش هالمشكلة في حال استخدام ال :
كود:
system("pause");
الحل انش تسيفين الكود الي طرشته في ملف cpp مثل ما هو و بيشتغل عند اللاب اسستن لانهم يستخدمون البرامج الي ذكرتها سابقاً اذا ما تعرفين تحفضينه في ملف cpp نزلي الملف من هني :
https://drive.google.com/file/d/0By6IydPqj2WAdmJRekIxbVRDN0E/view?usp=sharing
بالنسبة للكومبايلر تقدرين تنزلين هاذي النسخة من ال dev و ما بتصيدش المشكلة مرة ثانية و تقدرين تجربين الكود عليها بال :
كود:
system("pause");
https://drive.google.com/file/d/0By6IydPqj2WAMlF3VXBBLVU2a2c/view?usp=sharing

تشكر خيوووو :99::99:
 
التعديل الأخير:
عودة
أعلى أسفل