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

التاريخ !

مغلق
بدأه Wase3 Sadr في 10 مارس 2005 · 5 رد · 535 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا عندي داله Print لطباعة التاريخ بهذا الشكل :

مثال :

June 14 2002

بالنسبة لأسماء الشهور .. المدخل راح يكون رقم الشهر ..

لكن أنا أريد تحويلة إلى مسماه ..

يعني .. حين يدخل 1 .. يتحول إلى January و إن ادخل 5 يتحول إلى may وهكذا ..

المشكلة .. تكمن في كتابة داله كبيره .. كما ترون هنا ..

void Date::print3 ()
{
	if (month == 1)
  cout << "January " << day << " " << year; 
	if (month == 2)
  cout << "February " << day << " " << year;
	if (month == 3)
  cout << "March " << day << " " << year;
	if (month==4)
  cout << "April " << day << " " << year;
	if (month==5)
  cout << "May " << day << " " << year;
	if (month==6)
  cout << "June " << day << " " << year;
	if (month==7)
  cout << "July " << day << " " << year;
	if (month==8)
  cout << "August " << day << " " << year;
	if (month==9)
  cout << "September " << day << " " << year;
	if (month==10)
  cout << "October " << day << " " << year;
	if (month==11)
  cout << "November " << day << " " << year;
	if (month==12)
  cout << "December " << day << " " << year;
}

هل هنالك داله معرّفة مسبقا في الـ c++ لحل هذه المشكلة !

ام الأمر يفرض علي كتابة مثل هذه الداله في كل مرة !

اتمنى تجاوبوني :)

تحياتي ..

Wase3 Sadr

#2

السلام عليكم

لا توجد داله جاهزه ولكن عمل مثل هذه الداله بسيط للغايه :

يمكنك إستخدام enum لتعريف الاشهر, وبعد ذالك ان تستخدم operation overload للداله >> كي تحصل على تنسيق مناسب ولكن ليست ضروريه.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

كيف أستخدمها اخوي ؟

كيف أستخدم الـ enum .. وبعد ذلك كيف operation overload ؟

#4

السلام عليكم

اولاً انا اسف اخى لا استطيع ان اشرح opration overload ل istream و osteam الان لان الوقت متاخر, اما بالنسبه ل enum فهى على النحو التالى.

enum mymonths { january=1, 
february, 
march, 
april,
                may,
 june,
 july, 
august,
 september, 
october, 
november, 
december};

وكما تشاهد فإن شهر يناير سياخذ الرقم واحد وفبراير الرقم الذى يليه وهكذا, والان تستطيع تحديد متغير تماما كما تفعل معى ال array.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

هل تقصد انه يمكن عمل operator overloading على enum لو شنو؟

اذا مفهمت تلك الطريقة, بإمكانك عمل array من strings و لكتابة اسم اي شهر فقط تقوم بالوصول لعنصر المصفوفة المطلوب.

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

مثال:

#include <iostream>
using namespace std;

char* monthes[] = 
{
	"",
	"januray",
	"february",
	"march"
};

void printmonth( int i )
{
	//out of bound
	if( i == 0 || i >= 4 )
	{
  return;
	}

	cout << monthes << endl;
}
int main()
{
	printmonth( 2 );
	printmonth( 1 );
	printmonth( 3 );
	printmonth( -1 );
	printmonth( 20 );
}

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 11 مارس 2005 في 03:08

#6

السلام عليكم

انا الظاهر ربطت سؤال السائل بمشاركه اخرى له لها علاقه بال overloding, كما تلاحظ اخى الكريم فهو يستخدم class Date وإذا اردت ان تكتب برامج يعتمد على class فمن الافضل تعريف الدوال بشكل يتناسب معى إحتياجات ال class.

على سبيل المثال بدالاً من إستخدام طريقة >> و cout يمكنك عمل overload للداله بحيث تحدد شكل الكتابه من داخل الكلاس, وإستخدام enum بدل 1 و2 ... لتعريف الاشهر يجعل البرنامج اسهل.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

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

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