Weekday Class: The Array of Strings in C++

Weekday Class: हम weekday के नामों को एक Class में Define कर रहे हैं। चूंकि हर एक Week में हर Day एक Constant होता है यानी हर Week में एक Day केवल एक बार आता है, इसलिए हम day_name Array को Duplicate नहीं कर सकते। इस स्थिति में हम day_name Array को External Variable Declare कर रहे हैं। External Variable पूरे Program के लिए Global होता है। यानी हम एक External Variable को किसी Program के किसी भी Function में Use कर सकते हैं। हमारी weekday Class निम्नानुसार है:

// creates a class of days of the week objects
#include <iostream.h>
#include <string.h>     		// for stricmp()

const int MAX = 10;     		// maximum length of day name, +1
const int DPW = 7;      		// days per week

const char day_name[DPW][MAX] =       	// array of day names
{ “Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”};
class weekday   // class of day names
{
	private:
	int day_number;         // Sunday=0, etc.

	public:
	void inday()    // user inputs day name
	{
		char tempday[MAX];       // holds user input
		int gotit = 0;           // match found? (0=false)
		int j;                   // loop variable

		while( !gotit )          // cycle until user enters
		{                        // a correct name
			cout << “Enter day of week (e.g., Friday): "; 

			cin >> tempday;
			for(j=0; j<DPW; j++)    // compare user input
			{                 	// with list of names
				if( stricmp(tempday, day_name[j])==0 )
				{       // if there's a match,
					gotit = 1;         // set flag,
					break;             // break out of for loop
				}
			}  // end for
			day_number = j;           // record what day it was
		}  // end while
	}  // end inday()

void outday()      // display the day name
{
	cout << day_name[day_number];
}

void outnumber()    // display the day number
{
	cout << (day_number + 1);
}

void add(int days)          // add days to
{       // this weekday
	day_number += days;         // add days
	day_number %= DPW;         // ensure not > 7
}
};  // end weekdays class

चलिए, अब इस Class को समझते हैं। सबसे पहले हमने दो Integer प्रकार के Constant Variables Declare किए हैं। हम जानते हैं कि हर Week में केवल सात दिन ही होते हैं, इसलिए DPW नाम के एक External Variable को Constant Declare किया है और इसे 7 Initialize किया है। External Variable हमेंशा Main Program या Main Function से बाहर Declare किया जाता है। किसी भी Day का नाम अधिकतम दस Characters का ही हो सकता है। इसलिए हमने एक MAX नाम का Constant Global Variable Declare किया है और इसे 10 Initialize किया है।

हम जानते हैं कि एक Week में केवल सात ही दिन होते हैं और सातों दिनों के नाम निि”चत होते हैं, इसलिए हमें Program में इन नामों को Change करने की जरूरत नहीं होती है। इस स्थिति को ध्‍यान में रखते हु, हमने day_name नाम के 2 – D Array को भी Constant कर दिया है। साथ ही इसे External रखा है ताकि Main Program का कोई भी Function इसे Directly Access कर सके।

weekday Class में हमने Data member के रूप में एक day_number नाम का एक Integer प्रकार का Variable Declare किया है। चूंकि Array का Index Number 0 से शुरू होता है इसलिए यदि day)number में यदि 0 होता है तो ये Sunday को Refer करता है और इसी तरह से यदि इसमें 1 होता है तो Monday को Refer करता है।

अब हमने User से Day का Number Input में लेने के लिए एक inday() Function लिखा है। User जो संख्‍या Input करता है उसे tempday नाम के एक One Dimensional Array में Hold किया जाता है। एक Integer प्रकार का Variable ये Check करवाने के लिए लिया गया है कि User जो Day Input करता है वह Array में है या नहीं। इसे 0 यानी False Initialize किया गया है।

एक while Loop में gotit का प्रयोग किया गया है और इसका मान NOT Operator का प्रयोग करके True किया गया है। User से Day Input करवाने के लिए एक Message “Enter day of week (e. g., Friday) : “ दिया जाता है। User जो String Input करता है, उसे tempday नाम के Array में Hold किया जाता है। अब एक Loop चलाया जाता है।

Loop 0 से DPW-1 तक चलता है। यानी Loop 7 बार चलता है। Loop के हर Iteration में stricmp() Built – In Function का प्रयोग करके Check किया जाता है कि क्या वह String day_name नाम के Array में है या नहीं। यदि User द्वारा Input किया गया Day इस Array में होता है, तो  stricmp() Function 0 Return करता है और if Condition सत्; हो जाती है। if Condition के सत्; होते ही gotit का मान 1 हो जाता है और Loop Break हो जाता है।

मानलो कि User Tuesday Input करता है। Tuesday day_name Array के Index Number 3 पर स्थित है। इसलिए Loop के j का मान जब 2 होता है तब Match मिल जाता है। Match मिलते ही Loop Break हो जाता है। Loop के Break होते ही day_number में j का मान यानी दो Initialize हो जाता है।

outday() Function में मिले हु, Match का Number day_num Array में Index Number के रूप में Use करके Day को Print करवा दिया जाता है। outnumber() Function day का Number Output में Print करता है।

add Member Function Input किए गए Days को day_number में Add करता है। यदि Days की संख्‍या सात से अधिक हो जाती है तो day_number %= DPW; Statement Days की संख्‍या में से केवल Days को रखता है शेष को Flush out कर देता है।

जैसे यदि User Monday में 8 Add करता है तो day_number में कुल 9 Store हो जाता है। ये Statement day_number में 7 का भाग देता है और day_number में शेषफल यानी 2 Store कर देता है। इस Class को हम निम्नानुसार Main Program में Use कर सकते हैं:

#include <conio.h>
void main()
{
	weekday wd;                      // make a weekday object

	cout << "What day is it?" << endl;
	wd.inday();                      // user gives it a value
	cout << "You entered ";
	wd.outday();                     // display its day name
	cout << "\nThat's day number ";
	wd.outnumber();                  // display its day number
	wd.add(10);                      // add 10 days to it
	cout << "\nTen days later is ";
	wd.outday();                     // display its day name
	getch();
}

Main Program में Program weekday Class का एक Object Create wd करता है। फिर User से एक नाम प्राप्त करता है और उसे day_name Array के विभिन्न Days से Compare करता है। यदि Match मिल जाता है तो Day का Number Object में Store करता है। फिर Object Day का नाम व Number Display करता है। Program में wd Object में 10 जोडने के बाद Program User को बताता है कि Wednesday के दस दिन बाद कौनसा दिन होगा। जब User इस Program से Interact करता है तब Interaction निम्नानुसार होता है:

What day is it?
  Enter day of week (e.g., Friday): Monday
  You entered Monday
  That's day number 2
  Ten days later is Thursday

The stricmp() Function

हमने इस Program में stricmp() Library Function का प्रयोग किया है ना कि strcmp() का। ऐसा इसलिए किया है क्योंकि यदि हम strcmp() function का उपयोग करते तो User को हमेंशा Title Case में ही Day Input करना पडता।

यदि User Day को Lower या Upper Case में Input करता] तो Program में उसका Match कभी नहीं मिलता, क्योंकि strcmp() एक Case Sensitive Function है। जबकि stricmp() एक Case Insensitive Function है। हमने हमारी Class में add() Member Function में += Operator का प्रयोग करके निम्नानुसार Statement लिखा है:

day_number += days;

हम चाहें तो इस Statement को निम्नानुसार भी लिख सकते हैं:

day_number = day_number + days;

पहला Statement दूसरे Statement का छोटा रूप है। हम किसी भी Arithmetic Operator को निम्नानुसार भी Use कर सकते हैं:

  a += b;    // same as a = a + b
  a -= b;    // same as a = a - b
  a *= b;    // same as a = a * b
  a /= b;    // same as a = a / b
  a %= b;    // same as a = a % b

कुछ अन्‍य Assignment Operators भी हैं लेकिन उन्हें हम बाद में देखेंगे।

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS