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

مساعده من اعضاء المنتدى

بدأه aldohan في 22 يناير 2009 · 2 رد · 400 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني اعضاء المنتدى هذه اول مشاركه لي بهذا المندى

وارجو انه مايخيب ظني فيكم >>>>> من الاخير انا عندي برنامج عن تقويم السنه

والبرنامج محلول

بس المطلوب : اغير في الفنكشن

function

بشكل ثاني

ارجو من اللي متمكنين ما يتجاهلوني

وهذا هو البرنامج

/* 
 * Please fill following fields with relevant information
 * ***************************************************************************
 * Course [CS140/CS201]: 
 * Section [171-177]:
 * Student 1 id: 
 * Student 1 Name: 
 * Student 2 id: 
 * Student 2 Name: 
 * ***************************************************************************
 */

#include <iostream>
#include <iomanip>
using namespace std;
//do not modify data types and consts
enum weekDay {Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday};
const enum weekDay d01y01m1430  = Monday;
const char *weekDayStr[] = {"Sa", "Su", "Mo", "Tu", "We", "Th", "Fr"};
const char *monthStr[] = {"Muharram", "Safar", "Rabi' Al-Awwal", "Rabi' Al-Akhir", "Jumada Al-Awwal", "Jumada Al-Akhir", "Rajab", "Sha'aban", "Ramadan", "Shawwal", "Dhu Al-Qi'da", "Dhu Al-Hijjah"};
const int nDaysPerMonth1430[] = {29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 29, 30};
const int WEEKS = 5; // 5 weeks a month
const int DAYS = 7;// 7 days a week
const int MONTHS = 12; // 12 months a year

// do not modify menu
int menu() {

  int op;
  int m;
  do {
	m = 1;

	cout <<setfill('*')<<setw(78)<<'*'<<endl;
	cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Year" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
	cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Month" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
	cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Week" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
	cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Day" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
	cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Exit" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
	cout <<setfill('*')<<setw(78)<<'*'<<endl;
	cout<<setfill(' ');
	cin >> op;
  } while (op < 1 || op >= m);

  return op;

}

void fillDays(int days[WEEKS][DAYS][MONTHS]) 
{ 
	// add code here
	int m = 0 , w = 0 , d = 6 , val = 1;
	while(m < 12)
	{
		days[w][d][m] = val;
		val++;
		d++;
		if(d==7){
			d = 0;
			w ++;
		}
		if(val > nDaysPerMonth1430[m]){
			val =1;
			m++;
			w = 0;
		}
		/*else  if(w==5)
		{
			w=0;
			m++;
		}*/
	}		
}

void displayYear(int days[WEEKS][DAYS][MONTHS], int monthsPerRow) 
{
  // add code here
	int i,m,w,d,count;
	switch(monthsPerRow)
	{
	case 1:
			for(m = 0; m <MONTHS; m++)
			{
				cout<<"1430 "<<setw(16)<<monthStr[m]<<endl;
				//print names of days
				for(i=0;i<DAYS;i++)
					cout<<setw(3)<<weekDayStr;
				cout<<endl;

				for(w = 0; w < WEEKS; w++)
				{	
					for(d = 0; d < DAYS; d++)
						if(days[w][d][m]==0)
							cout<<setw(3)<<" ";
						else
							cout<<setw(3)<<days[w][d][m];
					cout<<endl;
				}
				cout<<endl;
			}
			break;
	case 2:		
			for(m = 0; m <MONTHS; m+=2)
			{
				cout<<"1430 "<<setw(16)<<monthStr[m]<<"   "<<"1430 "<<setw(16)<<monthStr[m+1]<<endl;
				//print names of days
				for(i=0;i<DAYS;i++)
					cout<<setw(3)<<weekDayStr;
				cout<<"   ";
				for(i=0;i<DAYS;i++)
					cout<<setw(3)<<weekDayStr;
				cout<<endl;

				for(w = 0; w < WEEKS; w++)
				{	
					for(d = 0; d < DAYS; d++)
						if(days[w][d][m]==0)
							cout<<setw(3)<<" ";
						else
							cout<<setw(3)<<days[w][d][m];
					//--
					cout<<"   ";
					for(d = 0; d < DAYS; d++)
						if(days[w][d][m+1]==0)
							cout<<setw(3)<<" ";
						else
							cout<<setw(3)<<days[w][d][m+1];
					cout<<endl;
				}
				cout<<endl;
			}

			break;
	case 3:		
			for(m = 0; m <MONTHS; m+=3)
			{
				cout<<"1430"<<setw(17)<<monthStr[m]
					<<"   1430"<<setw(17)<<monthStr[m+1]
					<<"   1430"<<setw(17)<<monthStr[m+2]<<endl;
				//print names of days
				for(i=0;i<DAYS;i++)
					cout<<setw(3)<<weekDayStr;
				cout<<"   ";
				for(i=0;i<DAYS;i++)
						cout<<setw(3)<<weekDayStr;
				cout<<"   ";
				for(i=0;i<DAYS;i++)
					cout<<setw(3)<<weekDayStr;
				cout<<endl;

				//print data
				for(w = 0; w < WEEKS; w++)
				{	
					for(d = 0; d < DAYS; d++)
						if(days[w][d][m]==0)
							cout<<setw(3)<<" ";
						else
							cout<<setw(3)<<days[w][d][m];
					cout<<"   ";

					for(d = 0; d < DAYS; d++)
						if(days[w][d][m+1]==0)
							cout<<setw(3)<<" ";
						else
							cout<<setw(3)<<days[w][d][m+1];
					cout<<"   ";

					for(d = 0; d < DAYS; d++)
						if(days[w][d][m+2]==0)
							cout<<setw(3)<<" ";
						else
							cout<<setw(3)<<days[w][d][m+2];
					cout<<endl;
				}
				cout<<endl;
			}
		break;
	}
}

void displayMonth(int days[WEEKS][DAYS][MONTHS], int month) {
  // add code here
}

void displayWeek(int days[WEEKS][DAYS][MONTHS], int month, int week) {
  // add code here
}

void displayDay(int days[WEEKS][DAYS][MONTHS], int month, int day) {
  // add code here
}

// do not modify main
int main() {
  int days[WEEKS][DAYS][MONTHS] = {{{0}}};
  int monthsPerRow = 1;
  int month;
  int week;
  int day;

  fillDays(days);
  do {
	int op = menu();
	switch (op) {
	  case 1:
		cout <<"Display Year:"<<endl;
		do {
		  cout <<"monthsPerRow (1-3) = ";
		  cin >> monthsPerRow;
		} while (monthsPerRow < 1 || monthsPerRow > 3);
		displayYear(days, monthsPerRow);
		break;
	  case 2:
		cout <<"Display Month"<<endl;
		do {
		  cout <<"month (1-12) = ";
		  cin >> month;
		} while (month < 1 || monthsPerRow > 12);
		displayMonth(days, month);
		break;
	  case 3:
		cout <<"Display Week:"<<endl;
		do {
		  cout <<"month (1-12) = ";
		  cin >> month;
		} while (month < 1 || month > 12);
		do {
		  cout <<"week (1-5) = ";
		  cin >> week;
		} while (week < 1 || week > 5);
		displayWeek(days, month, week);
		break;
	  case 4:
		cout <<"Display Day:"<<endl;
		do {
		  cout <<"month (1-12) = ";
		  cin >> month;
		} while (month < 1 || month > 12);
		do {
		  cout <<"day (1-"<<nDaysPerMonth1430[month-1]<<") = ";
		  cin >> day;
		} while (day < 1 || day > nDaysPerMonth1430[month-1]);
		displayDay(days, month, day);
		break;
	  default:
		cout <<"Exit"<<endl;
		exit(0);
	}
  } while (1);

  return 0;
}

تم تعديل هذه المشاركة بواسطة time1 في 22 يناير 2009 في 14:36 — السبب: اضافة الكود من الموقع

#2

اهلا بك اخي الكريم بيننا , اتمنى منك توضيح المطلوب من سؤالك ,

كما واتمنى زيارة ضوابط الكتابة في المنتدى والاطلاع عليها ..

مرحبا بك مرة اخرى بيننا .

تم تعديل هذه المشاركة بواسطة time1 في 22 يناير 2009 في 14:35

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

اخي time1

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

بس ياليت تسمحلي

البرنامج هذا محلول كامل

بس المطلوب :- يوجد فيه 5 دوال

ياليت تغير في كل داله بطريقه اخرى

بمعنى ممكن تغير من for الى while

او احداث اي طريقه اخرى

وهذا هو البرنامج

#include <iostream>
#include <iomanip>
using namespace std;
//do not modify data types and consts
enum weekDay {Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday};
const enum weekDay d01y01m1430  = Monday;
const char *weekDayStr[] = {"Sa", "Su", "Mo", "Tu", "We", "Th", "Fr"};
const char *monthStr[] = {"Muharram", "Safar", "Rabi' Al-Awwal", "Rabi' Al-Akhir", "Jumada Al-Awwal", "Jumada Al-Akhir", "Rajab", "Sha'aban", "Ramadan", "Shawwal", "Dhu Al-Qi'da", "Dhu Al-Hijjah"};
const int nDaysPerMonth1430[] = {29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 29, 30};
const int WEEKS = 5; // 5 weeks a month
const int DAYS = 7;// 7 days a week
const int MONTHS = 12; // 12 months a year


// do not modify menu
int menu() {

  int op;
  int m;
  do {
    m = 1;

    cout <<setfill('*')<<setw(78)<<'*'<<endl;
    cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Year" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
    cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Month" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
    cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Week" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
    cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Display Day" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
    cout <<'*'<<setfill(' ')<<setw(4)<<' '<<setw(64)<<left<<"Exit" <<right<<setw(5)<<m++<<setw(4)<<'*'<<endl;
    cout <<setfill('*')<<setw(78)<<'*'<<endl;
    cout<<setfill(' ');
    cin >> op;
  } while (op < 1 || op >= m);

  return op;

}

void fillDays(int days[WEEKS][DAYS][MONTHS])
{
 int dayValue=1; 
 int d = d01y01m1430 ;

 for(int m = 0 ; m<MONTHS ; m++)
 {
  for(int w = 0 ; w < WEEKS ; w++)
  {
   while(d < DAYS)
   {
    days[w][d][m] = dayValue;
    dayValue++;
    d++;
    if(dayValue > nDaysPerMonth1430[m])
    { 
     dayValue=1;
     break;
    }
   }
   if(d==DAYS)
    d=0;
  }
 }
}

void displayYear(int days[WEEKS][DAYS][MONTHS], int monthsPerRow)
{
 int i,count;
 for(int m = 0 ; m < MONTHS ; m += monthsPerRow)
 {
  //print year ,  month name
  for(count = 0; count < monthsPerRow ; count++)
   cout<<"1430 "<<setw(16)<<monthStr[m+count]<<"   ";
  cout<<endl;
  //print names of days
  for(count = 0 ; count < monthsPerRow ; count++ )
  {
   for(i=0;i<DAYS ;i++)
    cout<<setw(3)<<weekDayStr;
   cout<<"   ";
  }
  cout<<endl;
  //print clinder data
  for(int w = 0 ; w < WEEKS ; w++)
  {
   for(count = 0; count < monthsPerRow ; count++)
   {
    for( int d = 0; d < DAYS ; d++)
    {
     if(days[w][d][m+count]==0)
      cout<<setw(3)<<"   ";
     else
      cout<<setw(3)<<days[w][d][m+count];  
    }
    cout<<"   ";
   }
   cout<<endl;
  }
  cout<<endl;
 }
}

void displayMonth(int days[WEEKS][DAYS][MONTHS], int month) 
{
 int m = month - 1;
 //print year ,  month name
 cout<<"1430 "<<setw(16)<<monthStr[m]<<endl;

 //print names of days
 for(int i=0;i<DAYS ;i++)
  cout<<setw(3)<<weekDayStr;
 cout<<endl;

 //print clinder data
 for(int w = 0 ; w < WEEKS ; w++)
 {
  for( int d = 0; d < DAYS ; d++)
  {
   if(days[w][d][m]==0)
    cout<<setw(3)<<"   ";
   else
    cout<<setw(3)<<days[w][d][m];  
  }
  cout<<endl;
 }
 cout<<endl; 
}

void displayWeek(int days[WEEKS][DAYS][MONTHS], int month, int week) 
{
 int m = month-1;
 int w = week-1;
 //print year ,  month name
 cout<<"1430 "<<setw(16)<<monthStr[m]<<endl;

 //print names of days
 for(int i=0;i<DAYS ;i++)
  cout<<setw(3)<<weekDayStr;
 cout<<endl;

 //print clinder data
 for( int d = 0; d < DAYS ; d++)
 {
  if(days[w][d][m]==0)
   cout<<setw(3)<<"   ";
  else
   cout<<setw(3)<<days[w][d][m];  
 }
 cout<<endl;
}

void displayDay(int days[WEEKS][DAYS][MONTHS], int month, int day) 
{
 int m = month - 1;
 //print year ,  month name
 cout<<"1430 "<<setw(16)<<monthStr[m]<<endl;

 //print names of days
 for(int i=0;i<DAYS ;i++)
  cout<<setw(3)<<weekDayStr;
 cout<<endl;

 //print clinder data
 for(int w = 0 ; w < WEEKS ; w++)
 {
  for( int d = 0; d < DAYS ; d++)
  {
   if(days[w][d][m] == day)
    cout<<setw(3)<<days[w][d][m];
   else
    cout<<setw(3)<<"   ";
  }
  cout<<endl;
 }
 cout<<endl; 
}

// do not modify main int main() {
  int days[WEEKS][DAYS][MONTHS] = {{{0}}};
  int monthsPerRow = 1;
  int month;
  int week;
  int day;

  fillDays(days);
  do {
    int op = menu();
    switch (op) {
      case 1:
        cout <<"Display Year:"<<endl;
        do {
          cout <<"monthsPerRow (1-3) = ";
          cin >> monthsPerRow;
        } while (monthsPerRow < 1 || monthsPerRow > 3);
        displayYear(days, monthsPerRow);
        break;
      case 2:
        cout <<"Display Month"<<endl;
        do {
          cout <<"month (1-12) = ";
          cin >> month;
        } while (month < 1 || monthsPerRow > 12);
        displayMonth(days, month);
        break;
      case 3:
        cout <<"Display Week:"<<endl;
        do {
          cout <<"month (1-12) = ";
          cin >> month;
        } while (month < 1 || month > 12);
        do {
          cout <<"week (1-5) = ";
          cin >> week;
        } while (week < 1 || week > 5);
        displayWeek(days, month, week);
        break;
      case 4:
        cout <<"Display Day:"<<endl;
        do {
          cout <<"month (1-12) = ";
          cin >> month;
        } while (month < 1 || month > 12);
        do {
          cout <<"day (1-"<<nDaysPerMonth1430[month-1]<<") = ";
          cin >> day;
        } while (day < 1 || day > nDaysPerMonth1430[month-1]);
        displayDay(days, month, day);
        break;
      default:
        cout <<"Exit"<<endl;
        exit(0);
    }
  } while (1);

  return 0;
}

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