இனக்குழுக்கள் மற்றும் பொருள்கள் | கணினி அறிவியல் - பின்வரும் கேள்விகளுக்கு பதில் அளிக்கவும் | 11th Computer Science : Chapter 14 : Classes and objects
C++ பொருள் நோக்கு நிரலாக்க
மொழி
இனக்குழுக்கள் மற்றும் பொருள்கள்
பகுதி - ஆ
குறு வினாக்கள்
1. உறுப்புகள் என்றால் என்ன?
விடை : தரவு உறுப்புகள்
மற்றும் உறுப்பு செயற்கூறுகள் உறுப்புகள் எனப்படும்.
2. பயனர் வரையறுத்த
தரவினம் வகையான கட்டுரு, இனக்குழு
- வேறுபடுத்திக் காட்டுக.
விடை : கட்டுரு மற்றும் இனக்குழுவிற்கு இடையேயான வேறுபாடானது, கட்டுரு உறுப்புகளானது கொடாநிலையாக Public அணுகியல்புடனும் இனக்குழுவின்
உறுப்புகளானது Private அணுகியல்புடனும் இருக்கும்.
3. பொருள்
நோக்கு நிரலாக்கு குறிமுறை (00P) அடிப்படையில்
இனக்குழு மற்றும் பொருள் பற்றி வேறுபடுத்திக் காட்டுக.
விடை :
இனக்குழு
• C++ன் இனக்குழு ஆனது தரவுகளையும் ஆனது தரவுகளையும் செயல்கூறுகளையும் உறைபொதியாக்கம் என்னும் கருத்துருவை பயன்படுத்தி ஒரு தொகுதிக்குள் இணைக்கப்பட்டு உருவாக்கப்படுகிறது.
• இனக்குழு பயனர் வரையறுக்கும் தரவினமாகும்.
• இனக்குழுவானது ஒரே மாதிரியான பொருள்களின் குழுவைக் குறிக்கிறது.
பொருள்
• பொருள் என்பது தொடர்புடைய ஆனது தரவுகளையும் செயற்கூறுகள், அச்செயற்கூறுகளுக்கான தரவுகள்
ஆகியவற்றைக் கொண்ட ஒரு குழுவாகும்.
• பொருளானது பொருள்நோக்கு நிரலாக்கத்தின் அடிப்படை அலகாகும்.
• பொதுவாக பொருளானது இனக்குழுவிலிருந்து உருவாக்கப்படுகிறது.
4. நிரல்பெயர்ப்பி
தாமாகவே ஆக்கியை உருவாக்கிக் கொள்ள முடிந்தாலும், ஆக்கி
வரையறுப்பு ஏன் சிறந்த வழக்கம் என்று கருதப்படுகிறது?
விடை :
ஆக்கியின் முக்கிய செயல்பாடுகளாவன:
(i) பொருளுக்கு நினைவகத்தில் இடம் ஒதுக்கிறது.
(ii) இனக்குழுப் பொருளின் உறுப்புகளில் தொடக்க மதிப்பு இருக்கிறது.
5. அழிப்பியின் முக்கியத்துவத்தைப்
பற்றி எழுதுக.
விடை :
(i) அழிப்பியின்
நோக்கம் ஒரு பொருள் அதன் வாழ்நாளில் பெற்ற வளங்களை விடுவிப்பதாகும்.
(ii) ஒரு பொருளை உருவாக்கும்போது ஆக்கியால் பொருளுக்கென ஒதுக்கப்பட்ட நினைவகப் பகுதியை அழிக்கும்.
பகுதி - இ
சிறு வினாக்கள்
1. பின்வரும் நிரலில் கட்டளை அமைப்புப்
பிழை ஏதேனும் இருப்பின், அவற்றை
நீக்கி, பிழையைக்
கோடிட்டு காட்டி, நிரலை
மாற்றி எழுதவும்.
#include<iostream>
#include<stdio.h>
classmystud
{ intstudid =1001; char name[20];
public
mystud( )
{ }
void register ( ) {cin>>stdid;gets(name);
}
void display ( )
{ cout<<studid<<”:
“<<name<<endl;}
}
int main( )
{ mystud MS; register.MS( ); MS.display( );
}
விடை :
சரியான நிரல்:
#include<iostream>
#include<stdio.h>
class mystud
{
int studid;
char name[20];
public:
mystud()
studid - 0;
name = Null;
{
void register ( )
{
cin>>studid;
gets(name);
}
void display()
{
cout<<studid<<":
"<<name<<endl;
}
int main ()
{
mystud MS;
MS.register( );
MS.display( );
return 0;
}
2. நிரலின் இயங்கு நேரத்தில் ஒரு பொருளை
எவ்வாறு தொடங்கி வைப்பது என்பதை ஒரு எடுத்துக்காட்டுடன் எழுது.
விடை :
இயங்குநேரத்தில் தொடக்க மதிப்புகள் கொடுக்கப்பட்டால்
அது இயங்கு நிலையில், தொடங்குதல் எனப்படும்.
எ.கா. :
#include<iostream>
using namespace std;
class X
{
int n;
float avg;
public;
X(int p, float q)
{
n=p;
avg=q:
}
void disp()
{
Cout<<"\n Roll
number:-"<<n;
cout<<"\nAverage:-"<<avg;
}
};
int main( )
{
int a; float b;
cout<<"\n Enter the
Roll number";
cin>>a;
cout<<"\nEnter the
Average";
cin>>b;
X x(a,b); \\dynamic
initialization
x.disp( );
return 0;
}
வெளியீடு :
Enter the Roll Number 1201
Enter the Average 98.6
Roll number:- 1201
Average :- 98.6
3. Public அணுகுமுறையில் ஆக்கிகள்,
அழிப்பிகள் அறிவிப்பினால் விளையும் நன்மைகள் யாவை?
விடை :
ஆக்கிகளை public பகுதியில் வரையறுக்கப்
பரிந்துரைக்கப்படுகிறது. ஏனென்றால் எந்த செயற்கூறிலும் பொருளை உருவாக்க முடியும். அழிப்பிகள் public பகுதியில் வரையறுப்பதால்
ஆக்கிகளால் உருவாக்கப்பட்ட பொருளை அழிக்க முடியும்.
4. கீழே கொடுக்கப்பட்டுள்ள
C++ நிரலைக் கொண்டு (i)
& (ii) வினாக்களுக்கான விடைகளைத் தருக.
class TestMeOut
{
public:
~TestMeOut() //Function 1
{cout<<“Leaving the examination
hall”<<endl;}
TestMeOut() //Function 2 {cout<<“Appearing
for examination”<<endl;}
void MyWork() //Function 3 {cout<<“Attempting
Questions//<<endl;}
};
(i) பொருள்நோக்கு நிரலாக்க முறையின்படி, செயற்கூறு-1
என்பது எதைக் குறிக்கிறது, எப்பொழுது அது அழைக்க/இயக்கப்படுகிறது
?
(ii) பொருள்நோக்கு நிரலாக்க முறையின்படி, செயற்கூறு-2
என்பது எதைக் குறிக்கிறது. எப்பொழுது அது இயக்க/அழைக்கப்படுகிறது?
விடை :
(i) ஓர் ஆக்கியால்
பொருளுக்கென ஒதுக்கப்படும் நினைவகம் பகுதியை விடுவிக்கும் போது அழிப்பிகள் இயக்கப்படும்.
(ii) ஓர் இனக்குழுவின் சான்றுரு பயன்பாட்டுக்கு வரும்போது ஆக்கி எனப்படும், சிறப்பு செயற்கூறு இயக்கப்படுகிறது.
5. பின்வரும் சி++
நிரல் குறிமுறைக்கு வெளியீட்டு எழுது.
#include<iostream>
using namespace std;
class Calci
{
char Grade;
int Bonus;
public:
Calci() {Grade='E'; Bonus=0;} //ascii value of A=65
void Down(int G)
{
Grade-=G;
}
void Up(int G)
{
Grade+=G;
Bonus++;
}
void Show()
{
cout<<Grade<<"#"<<Bonus<<endl;
}
};
int main()
{
Calci c;
c.Down(3);
c.Show();
c.Up(7);
c.Show();
c.Down(2);
c.Show();
return 0;
}
விடை :
B#()
I#1
G#1
பகுதி -ஈ
பெரு வினாக்கள்
1. பின்னலான இனக்குழுவை எடுத்துக்காட்டுடன்
விளக்கு.
விடை :
ஓர் இனக்குழு ஆனது மற்றொரு இனக்குழுவின் உறுப்பாக (ஓர் இனக்குழுவிற்குள் மற்றொரு
இனக்குழு அமைந்திருந்தால் அது பின்னலான இனக்குழு எனப்படும். பின்னலான இனக்குழுவை இரண்டு வழிகளில்
உருவாக்கலாம்.
(i) ஓர் இனக்குழுவிற்குள்
மற்றொரு இனக்குழுவை அமைத்தல்.
(ii) ஓர் இனக்குழுவின் பொருளை மற்றொரு இனக்குழுவின் உறுப்பாக அறிவித்தல்.
ஓர் இனக்குழுவானது மற்றொரு இனக்குழுவினுள் அறிவிக்கப்பட்டிருந்தால், உள்ளமைக்கப்பட்ட இனக்குழுவானது
உள்ளமை இனக்குழு (Nested Class) எனவும் வெளியே உள்ள இனக்குழுவானது அடைப்பு இனக்குழு (Enclosing Class) எனப்படும். அடைப்பு இனக்குழுவின் (Enclosing Class). Public அணுகியல்பு பகுதியில் உள்ளமை இனக்குழு ஆனது private அணுகியல்புடன் வரையறுக்கப்படலாம்.
(எ.கா)
#include<iostream>
using namespace std;
class enclose
{
private:
int x;
class nest
{
private :
int y;
public:
int z;
void prn()
{
y=3;z=2;
cout<<"\n The
product of'<<y<<'*'<<z<<"=
"<<y*z<<"\n";
}
};
//inner class
definition over
nest n1;
public:
nest n2;
void square( )
{
n2.prn();
//inner class member
function is called by its object
x=2;
n2.z=4;
cout<<"\n The
product of " <<n2.z<<'*'<<n2.z<<"=
"<<n2.z*n2.z<<"\n";
cout<<"\n The
product of "
<<x<<'*'<<x<<"="<<x*x;
}
};
//outer class definition over
int main()
{
enclose e;.
e.square();
//outer class member
function is called
}
வெளியீடு :
The product of 3*2=6
The product of 4*4=16
The product of 2*2=4
மேற்கண்ட நிரலில் enclose என்ற இனக்குழுவினுள் nest-என்ற இனக்குழு ஆனது வரையறுக்கப்பட்டுள்ளது. nest-இனக்குழுவில் உருவாக்கப்படும்
பொருளின் மூலமாக enclose-இனக்குழு nest-இனக்குழுவை அணுக முடியும்.
2. ஆக்கி,
அழிப்பி - வேறுபாடு
தருக.
விடை :
(i) ஆக்கியின்
பெயர் இனக்குழுவின் பெயராகவே இருக்க வேண்டும். ஆக்கி எந்த மதிப்பையும் திருப்பி அனுப்பாது.
(ii) ஆக்கி அளபுருக்களின் பட்டியலைக் கொண்டிருக்கும்.
(iii) ஆக்கி செயற்கூறு, பணி மிகுக்கப்பட முடியும்.
(iv) ஆக்கியைத் தருவிக்க முடியாது. ஆனால் தருவிக்கப்பட்ட இனக்குழு அடிப்படை இனக்குழுவின் ஆக்கியை அழைக்க முடியும்.
(v) பயனர் வரையறுக்கும்
ஆக்கி இல்லாத போது நிரல்பெயர்ப்பி ஓர் ஆக்கியை உருவாக்கிக் கொள்ளும்.
(vi) ஓர் இனக்குழு பொருள் உருவாக்கப்படும்போது
ஆக்கி தானாகவே இயக்கப்படும்.
(i) அழிப்பியின்
பெயரானது ~ என்ற முன்னொட்டு குறியுடன் கூடிய இனக்குழுவின் பெயரையேக் கொண்டிருக்கும்.
(ii) அழிப்பி, செயலுருபுகளை ஏற்காது. அழிப்பி எந்த மதிப்பையும் திருப்பி அனுப்பாது.
(iii) அழிப்பி பணிமிகுக்கப்பட முடியாது. அதாவது ஓர் இனக்குழுவில் ஓர் அழிப்பி
மட்டுமே இருக்க முடியும்.
(iv) இதை தருவிக்க (மரபுவழி) முடியாது.
(v) பயனர் அழிப்பியை வரையறுக்காத போது நிரல்பெயர்ப்பி ஓர் அழிப்பியை உருவாக்கிக் கொள்ளும்.
(vi) நிரலில் உருவாக்கப்பட்ட ஓர் இனக்குழு பொருளின் பயன்பாடு முடிவுக்கு வரும்போது அழிப்பி தானாகவே இயக்கப்படும்.
3. கீழ்க்காணும் வரையறுப்புகளுடன்
Resort என்னும் ஓர் இனக்குழுவை வரையறுக்கவும்
Private உறுப்புகள்.
Rno // அறை எண்ணை இருத்தி வைக்கும்
தரவு உறுப்பு
Name// பயனரின் பெயரை இருத்தி வைக்கும்
தரவு உறுப்பு
Charges// ஒரு நாளுக்குரிய கட்டணத்தை
இருத்தி வைக்கும் தரவு உறுப்பு
Days// நாட்களின் எண்ணிக்கையை இருத்தி
வைக்கும் தரவு உறுப்பு
Compute ( ) // Days *
Charges கொண்டு மொத்த தொகையை கணக்கிடும் செயற்கூறு
//மொத்த தொகை
11000 ரூபாய்க்கு மேல் இருந்தால்,
மொத்த தொகையைக் கணக்கிட
1.02* Days
*Charges
Public member:
getinfo( ) // பெயர்,
அறை எண், கட்டணம்,
நாட்கள் போன்ற தகவல்களை உள்ளீடாகப் பெறும் செயற்கூறு
dispinfo () // உள்ளிடப்பட்ட
தரவுகள் மற்றும் Compute செயற்கூறினைப்
பயன்படுத்தி கணக்கிட மொத்த தொகையை வெளியிடும் செயற்கூறு
விடை :
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class RESORT
{
int tno, days;
char name[20];
float charges;
float compute();
public :
void getinfo();
void dispinfo() ;
};
void RESORT:: get.info()
{
Cout<<"Room Number
:"<<endl;
cin>>rno;
cout<<"Name"<<endl;
gets(name);
cout<<"charges"<<endl;
cin>>charges;
cout<<"Number of
Days"<<endl;
cin>>days;
}
void RESORT:: dispinfo()
{
Cout<<endl<<”Details
follow"<<endl;
Cout<<"Room Number:
"<<rno<<endl;
Cout<<"Name
:"<<name<<endl;
Cout<<"Charges :
"<<charges<<endl;
Cout<<"Number of
days:"<<days<<endl;
cout<<"Amout
:"<<compute()<<endl;
}
float RESORT:: Compute()
{
float amount = charges * days;
if(amount > 11000)
amount= 1.02*days*charges;
return amount;
}
int main()
clrscr();
{
RESORT rl;
rl.getinfo();
rl.disprinfo();
getch;
return 0;
}
4. கீழ்காணும் நிரலுக்கு வெளியீடு எழுது.
#include<iostream>
#include<stdio.h>
using namespace std;
class sub
{
int day, subno;
public :
sub(int,int); // prototype
void printsub()
{ cout<<" subject number :
"<<subno;
cout<<" Days : " <<day;
}
};
sub::sub(int d=150,int sn=12)
{ cout<<endl<<"Constructing the
object "<<endl;
day=d;
sub no=sn;
}
class stud
{
int rno;
float marks;
public:
stud( )
{ cout<<"Constructing the object of
students "<<endl; rno=0;
marks=0.0;
}
void getval()
{
cout<<"Enter the roll number and the
marks secured ";
cin>>rno>>marks;
}
void printdet()
{ cout<<"Roll no :
"<<rno<<"Marks : "<<marks<<endl;
}
};
class addmission {
sub obj;
stud objone;
float fees;
public :
add mission ( )
{ cout<< "Constructing the object of
admission "<<endl; fees=0.0;
}
void printdet( )
{ objone.printdet(); obj.printsub( );
cout<<"fees :
"<<fees<<endl ;
}
};
int main()
{system("cls");
addmission adm;
cout<<endl<< "Back in main (
)";
return 0; }
விடை :
வெளியீடு :
Constructing the object
Constructing the object of students
Constructing the object of admission
Back in main ( )
5. கீழ்காணும் நிரலுக்கு வெளியீடு எழுதுக.
#include<iostream>
#include<stdio.h>
using namespace std;
class P
{ public:
P ( )
{ cout<< "\nConstructor of class P
"; }
~P()
{ cout<< "\nDestructor of class P
"; }
};
class Q
{ public:
Q( )
{ cout<<"\nConstructor of class Q
"; }
~Q()
{ cout<< "\nDestructor of class Q
"; } };
class R
{ P obj1, obj2;
Q obj3;
public:
R ( )
{ cout<< "\nConstructor of class R
";}
~R()
{ cout<< "\nDestructor of class R
";} };
int main ( )
{
Ro R;
Q oq;
P op;
return 0;
}
விடை :
வெளியீடு :
Constructor of class P
Constructor of class Q
Constructor of class R
Destructor of class R
Destructor of class Q
Destructor of class P
சுய மதிப்பீடு
1. இனக்குழுவை பொதுவாக மற்றும்
C++ சூழலிலும் வரையறு.
விடை : C++ல் இனக்குழுவின் வரையறையில் Class என்னும் சிறப்புசொல்லைத் (Keywords) தொடர்ந்து இனக்குழுவின்
பெயர் இடம்பெற வேண்டும். இனக்குழுவின் உடற்பகுதி வரையறுப்பானது நெளிவு அல்லது கொக்கி வடிவ அடைப்பு ({}) குறிக்குள் அடைக்கப்பட்டு
அரைப்புள்ளியுடன் அல்லது இனக்குழு பொருள்கள் அறிவிப்புடன் முடிவடைதல் வேண்டும்.
2. இனக்குழு அணுகியல்பின் நோக்கம் என்ன?
விடை : இனக்குழுவின் உறுப்புகளை அணுக தடைவிதிப்பதற்கு இனக்குழுவினுள் அறிவிக்கப்பட்டிருக்கும் private, protected மற்றும் public என்ற சிறப்புச் சொற்கள்
பயன்படுகிறது.
3. C++ கட்டுரு மற்றும் இனக்குழு
ஒப்பிடுக.
விடை :
(i) வெவ்வேறு வகையான
தரவு இனங்களை கொண்ட பயனர் வரையறுக்கும் தரவினம் கட்டுரு எனப்படும்.
(ii) இது பல்வேறு வகையான தரவு இனங்களுடன் கூடிய மாறிகளை ஒரே தொகுதிக்குள் ஒன்றிணைத்துள்ளது.
(i) இனக்குழு என்பது பொது பண்புகளை பகிரக்கூடிய ஒரே
மாதிரியான பொருள்களின் குழுவாகும்.
(ii) இது பயனர் வரையறுக்கும் தரவினத்தை உருவாக்கப்
பயன்படுகிறது.
4. Private மற்றும்
Public அணுகியல்பை ஒப்பிடுக.
விடை :
(i) Public அணுகியல்புடன் கூடிய உறுப்புகளை இனக்குழுவிற்கு வெளியில் இருந்தும் அணுக முடியும்.
(ii) Private அணுகியல்புடன் கூடிய இனக்குழு உறுப்புகளை இனக்குழுவிற்கு வெளியில் இருந்து அணுக முடியாது.
5. Non-inline உறுப்பு
செயற்கூறு என்றால் என்ன? பொது
வடிவத்தை எழுதுக.
விடை : இனக்குழுவின் உறுப்பு செயற்கூறானது இனக்குழுவிற்கு வெளியே, சாதாரண இனக்குழு வரையறை போலவே
வரையறுக்க முடியும். இது Outline உறுப்புச் செயற்கூறுகள் (or)
non-inline உறுப்புச் செயற்கூறுகள் எனவும் அழைக்கப்படும்
பொது வடிவம்:
உறுப்பு செயற்கூறை இனக்குழுவிற்கு வெளியே வரையறை
செய்வதற்கு உதவும் பொது வடிவம்.
return_type class_name :: function_name
(parameter list)
{
செயற்கூறு வரையறை
}
செயல்பாடு
1. பின்வரும் குறிமுறையில் பிழைக்கான காரணம் கூறு.
விடை :
#include<iostream.h>
#include<string.h>
class Employee
{
int empno;
char ename[20];
float basic,netpay,hra,da;
float calculate();
public:
void havedata ( )
{
Cout<<"Enter Employee
Number"<<endl;
cin<<empno;
cout<<"Enter Employee
Name"<<endl;
gets(ename);
cout<<"Enter Basic
Pay"<<endl;
cin>>basic;
cout<<"Enter HRA"<<endl;
cin>>hra;
cout<<"Enter DA"<<endl;
cin>>da;
calculate ();
}
float calculate ()
{
netpay = basic + hra + da;
return netpay;
}
void dispdata( )
{
Cout<<"Employee Number
:"<<empno<<endl;
Cout<<"Employee Name
:"<<ename<<endl;
cout<<"BASIC PAY
:"<<basic<<endl;
cout<<"HRA
:"<<ha<<endl;
cout<<"DA:"<<da<<endl;
cout<<"Netpay
:"<<calculate<<endl;
}
};
int main ()
{
Emplyee e;
e.havedata ();
e.calculate ();
e.dispdata ();
return 0;
}
(i) ஒரே பெயரை கொண்ட இரண்டு மாறிகள் அறிவிக்கப்பட்டன.
(ii) தரவினத்தை கொண்டு ஒரு பொருளை உருவாக்கப்பட்டுள்ளது.
2. class area
{
int s;
public:
void calc ();
};
calc ( ) என்னும் செயற்கூறை இனக்குழுவிற்கு
வெளியில் வரையறுத்து (outline function) சதுரத்தின்
பரப்பளவைக் கண்டறிக.
void area : : calc ()
}
int a = 5;
cout<<"Area of
square"<<a*a;
}
3. பின்வரும் நிரல் குறிமுறையில் உள்ள
பிழைகளை கண்டறிக.
class A
{
float x;
void inito
{
Aal;
X1=1.5;
}};
void main()
{A1.init(); }
பிழை :
Aal;
x1 = 1.5
A1. init();}
4. கீழ்க்கண்ட
குறிமுறையில் S1 மற்றும்
S2 பொருள்களுக்கான நினைவக அளவு யாது?
class sum
{
int ni, n2;
public:
void add() {int n3 = 10; n1= n2=10;}
}s1,s2;
விடை :
S1 = 12 பைட்டுகள்
S2 = 12 பைட்டுகள்
செய்முறைப் பயிற்சி
1. பின்வரும் குறிப்புகளைப் பயன்படுத்தி
Employee இனக்குழுவை
வரையறுக்கவும்.
Employee-இனக்குழுவின்
private உறுப்புகள்
empno- integer
ename - 20 characters
basic - float
netpay, hra, da, - float
calculate () - basic+hra+da - வைக்
கண்டுப்பிடித்து float மதிப்பைத்
திருப்பி அனுப்பும் செயற்கூறு employee - இனக்குழுவின்
public செயற்கூறுகள்
havedata() - (empno, ename, basic, hra, da உள்ளீடாகப்பெற்று
netpay கணக்கிட
calculate() செயற்கூறை அழைக்கும் ஒரு செயற்கூறு
dispdata() - அனைத்து
தரவு உறுப்புகளையும் திரையில் வெளியிடுவதற்கான செயற்கூறு
விடை :
#include<iostream.h>
#include<string.h>
class Employee
{
int empno;
char ename[20];
float basic,netpay,hra,da;
float calculate();
public:
void havedata()
{
cout<<"Enter Employee
Number"<<endl;
cin>>empno;
cout<<"Enter Employee
Name"<<endl;
gets(ename);
cout<<"Enter Basic
Pay"<<endl;
cin>>basic;
cout<<"Enter
HRA"<<endl;
cin>>hra;
cout<<"Enter DA"<<endl;
cin>>da;
calculate ();
}
float calculate ()
{
netpay = basic + hra + da;
return netpay;
}
void dispdata()
{
cout<<"Employee Number
:"<<empno<< endl;
cout<<"Employee Name :"<<ename<<endl;
cout<<"BASIC PAY
:"<<basic<<endl;
cout<<"HRA
:"<<ha<<endl;
cout<<"DA:"<<da<<endl;
cout<<"Netpay
:"<<calculate<<endl;
}
};
int main()
{
Emplyee e;
e.havedata ();
e.calculate ();
e.dispdata ();
return 0;
}
2. பின்வரும் குறிப்புகளைப் பயன்படுத்தி
MATHஇனக்குழுவை வரையறுக்கவும்.
private உறுப்புகள்
num1, num2, result - float
init() செயற்கூறு
num1, num2, result - க்கு தொடக்க மதிப்பிருத்தப் பயன்படுகிறது
protected உறுப்புகள்
num1 & num2 -வைக் கூட்டி,
வரும் விடையை sum-ல்
இருத்த பயன்படும் add() செயற்கூறு
num1 & num2 -வைக் கழித்து,
வரும் விடையை
result-ல் இருத்த பயன்படும்
diff() செயற்கூறு பயன்படும்
public உறுப்புகள்
num1 & num2 மதிப்புகளை
உள்ளீடாகப் பெறுவதற்கு getdata() செயற்கூறு
பயன்படும்
menu -வை திரையிட
menu() செயற்கூறு பயன்படும்
1. Add...
2. Subtract...
invoke add() தேர்வு
1 என இருந்தால் add()
செயற்கூறினை அழைக்கும் மற்றும்
2 என இருந்தால்
diff() செயற்கூறினை அழைக்கும் பிறகு விடையைத் திரையிடும்.
விடை :
class MATH
{
float numl, num2, result;
void init()
{
numl = 0.0;
num2 =0.0;
result=0.0;
}
protected :
void add()
{
result = numl + num 2;
cout<<"Result:"<<result;
}
void diff()
{
result = numl - num 2;
cout<<"Result:"<<result;
}
pulic:
void getdata()
{
cout<<"Enter first
value"<<endl;
cin>>numl;
cout<<"Enter Second
value"<<endl;
cin>>num2;
}
};
int main()
{
MATH m;
int ch;
cout<<"1.Add..."<<endl;
cout<<"2.Subtract..."<<endl;
cin>>ch; swith(ch)
{
case 1:
cout<<"Addition:<<endl;
m.getdata;
m.add();
break;
case 2:
cout<<"Subtraction:<<endl;
m.getdata;
m.diff();
break;
default :
cout<<"Invalid
choice"<<endl;
}
return 0;
}
3. பின்வரும் குறிப்புகளைப் பயன்படுத்தி
Item இனக்குழுவை
வரையறுக்கவும்.
private உறுப்புகள்
code, quantity -Integer
price -Float
அனைத்து தரவு உறுப்புகளின் மதிப்பை உள்ளீடாகப் பெற்று,
திருப்பி அனுப்பும் மதிப்பு இல்லாத
getdata() செயற்கூறு
public உறுப்புகள்
tax - float
code, quantity, price and tax-திரையில்
திரையிட பயன்படும் செயற்கூறு dispdata(). quantity
100 க்கும் அதிகம் என்றால்
tax = 2500, இல்லையெனில்
tax =1000 எனக் கணக்கிடவும்.
விடை :
#include<iostream.h>
class Item
{
int code, quantity;
float price;
void getdata ();
public :
float taxt;
void dispdata();
};
void Item :: getdata()
{
cout<<"Enter
code"<<endl;
cin>>code;
cout<<"Enter
Quantity"<<endl;
cin>>Quantity;
cout<<"Enter
price"<<endl;
cin>>price;
}
void item :: dispdata()
{
cout<<"CODE"<<code<<endl;
cout<<"Quantity"<<auantity<<endl;
cout<<"PRICE"<<price<<endl;
text=Quantity>100 ? 2500 : 1000;
cout<<"TAX : "<<text;
}
int main ()
{
Item t;
t.getdata();
t.dispdata();
return 0;
}
4. FRAME இனக்குழுவின் வரையறையை கீழேக்
கொடுக்கப்பட்டுள்ள குறிப்புகளுடன் எழுதவும்.
private உறுப்புகள்
10*Height*Width மதிப்பைக்
கணக்கிட்டு, amount-ல் இருத்தி
வைக்கப் பயன்படுத்தப்படும் செயற்கூறு
SetAmount()
Public உறுப்புகள்
FrameID, Height, Width-n ůy
6606 2siroff செய்ய GetDetail()
செயற்கூறைப் பயன்படுத்தவும்.
இச்செயற்கூறு
Amountஐ கணக்கிட
SetAmount() செயற்கூறை அழைக்கும்.
அனைத்து தரவு உறுப்புகளையும் திரையிடுவதற்கு ShowDetail() செயற்கூறு
பயன்படும்.
விடை :
#include<iostream.h>
class FRAME
{
int frameID;
float Height, Width, Amount;
float setamount():
public:
void GetDetail();
void ShowDetail();
};
void FRAME :: GetDetail()
{
cout<<"Enter
FrameID"<<endl;
cin>>FrameID;
cout<<"Enter
Height"<<endl;
cin>>Height;
cout<<"Enter
Width"<<endl;
cin>>Width;
}
void FRAME :: ShowDetail()
{
cout<<endl<<"Details"<<endl;
cout<<"FRAME ID"<<Frame
ID<<endl;
cout<<"Height"<<Height<<endl;
cout<<"Width"<<Width<<endl;
cout<<"Amount"<<Amount<();
}
float FRAME :: setAmount()
{
amount = 10*Height*width*;
return amount;
}
int main()
{
FRAME f1;
F1.GetDetail();
F1.ShowDetail();
return 0;
}
5. RESORT இனக்குழுவைப் பின்வரும் குறிப்புகளைப்
பயன்படுத்தி வரையறுக்கவும்:
private உறுப்புகள்
Rno // அறை எண்ணை இருத்தி வைக்கும்
தரவு உறுப்பு Namel/பயனரின்
பெயரை இருத்தி வைக்கும் தரவு உறுப்பு
Charges// ஒரு நாளின் கட்டணத்தை இருத்தி
வைக்கும் தரவு உறுப்பு
Days // நாளின் எண்ணிக்கையை இருத்தி
வைக்கும் தரவு உறுப்பு
Compute ( ) // Days * Charges கணக்கீடு
செய்யும் செயற்கூறு மொத்த தொகை 5000க்கும்
மேல் இருந்தால், மொத்த
தொகையைக் கணக்கிட 1.02 * Days *Charges Public உறுப்புகள்
Getinfo() // Rno, Name, Charges, Days - 26itofLITÀ பெற
உதவும் செயற்கூறு. Displayinfo() Rno, RName,
Charges, Days Amount திரையில் திரையிட பயன்படும் செயற்கூறு
(Compute ( ) செயற்கூற்றை அழைப்பதன் மூலம்
Amount கணக்கிடப்படும்.)
விடை :
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class RESORT
{
int tno, days;
char name[20];
float charges;
float compute();
public :
void getinfo();
void dispinfo();
void RESORT :: get.info()
{
cout<<"Room Number
:"<<endl;
cin>>rno;
cout<<"Name"<<endl;
gets(name);
cout<<"charges"<<endl;
cin>>charges;
cout<<"Number of
Days"<<endl;
cin>>days;
}
void RESORT :: dispinfor()
{
cout<<endl<<"Details
follow"<<endl;
cout<<"Room
Number:''<<rno<<endl;
cout<<"Name
:"<<name<<endl;
cout<<"Charges :''<<charges<<endl;
cout<<"Number of
days:''<<days<<endl;
cout<<"Amout
:"<<compute()<<endl;
}
float RESORT :: Compte()
{
float amount = charges * days;
if(amount> 11000)
amount=1.02*days*charges;
return amount;
}
int main()
ctrscrc();
{
RESORT rl;
rl.getinfo();
rl.disprinfo();
getch; return 0;
}
6. structpno
{
Int pin;
floatbalane;
}
BankAccount இனக்குழுவைப்
பின்வரும் குறிப்புகளுடன்
வரையறு
Protected உறுப்புகள்
பத்து மதிப்புகளைக் கொண்ட அணி init
pin உள்ளீடாகப் பெற்று,
தொடக்க மதிப்பிருத்தி,
balance amountமதிப்பு
0 என இருத்தவும்.
public உறுப்புகள்
deposit(pin, amount):
amount மற்றும்
pin உள்ளீடாகப் பெற்று
account balance -ன் மதிப்பை மிகுக்கவும்.
pin மதிப்பை பெற்று பரிசோதிக்கும்.
சரி எனில்
balanceஐ மிகுக்கவும், திரையில்
balanceஐ திரையிடவும் இல்லையெனில் பொருத்தமான செய்தியைத்
திரையிடும்.
withdraw(self, pin, amount):
amount மற்றும்
pin ஐ உள்ளீடாகப் பெற்று,
account balance -ஐ குறைக்கவும்.
pin ஐ சரிபார்க்க வும் மீதித்தொகை
1000க்கும் அதிகமாகவும் மற்றும்
amount, balance -ஐ விட குறைவாகவும் இருக்க வேண்டும்.
சரி எனில்
amount ஐ எடுக்கவும், மேலும்
balance ஐ திரையிடவும் அல்லது பொருத்தமான செய்தியை வெளியிடவும்.
விடை :
#include<iostream.h>
#include<iomanip.h>
class Bank Account
{
int pinno [10];
float balance ;
protected;
Bank Account ()
{
balance = 0.0;
}
public
deposit (pin, amount);
withdraw(pin, amount);
void readpin( )
{
cout<<"Enter pin nos"
<<end1;
for (int i = 0; i<=9;i++).
cin>> pin[i];
}
};
Bank Account : deposit (pin, amount)
{
for(int i= 0; i<=9; i++)
{
if(pinno[i]==pin)
balance = balance + amount;
}
cout<<"Deposited
Amount"<<balance;
}
Bank Account : Withdraw (pin, amount)
{
for(int i = 0; i<=9; i++)
{if pinno[i] = = pin ) &&
(balance >1000)
balance = balance - amount;
}
cout<<"withdrawal amount<<
balance;
}
};
int main()
{
Bank Account B1;
B1. readpin();
B1. deposit (1002, 10000);
B1.withdraw(1002, 5000);
return 0;
}
7. Hotel இனக்குழுவைப் பின்வரும் குறிப்புகளுடன்
C++ -ல் வரையறுக்கவும்
Private உறுப்புகள்
Rno // தரவு உறுப்பைச் சேமிக்க
Name // தரவு உறுப்பைச் சேமிக்க
Charges // தரவு உறுப்பைச் சேமிக்க
Days // தரவு உறுப்பைச் சேமிக்க
Calculate() // Amount ஐ கணக்கிட்டு
திரும்பி அனுப்பும் செயற்கூறு
//Days*Charges கணக்கீடு
செய்து Amount -ல் மதிப்பைத்
திருப்பி அனுப்புதல் Days*Charges 12000 க்கும்
அதிகம் எனில் 1.2*Days*Charges
Public உறுப்புகள்
Hotel()//இனக்குழு உறுப்புகளைத் தொடக்க
மதிப்பிருத்தல்
Getinfo () // Rno, Name, Charges, Days உள்ளீடாகப்
பெற பயன்படும் செயற்கூறு Showinfo() || Rno, RName,
Charges, Days திரையில் திரையிட பயன்படும் செயற்கூறு
//Amount (Amount -யைத் திரையிட
Calculate() செயற்கூறை அழைத்தல்)
விடை :
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class Hotel
{
int rno, days;
char Name[20];
float charges;
float calculate();
public:
Hotel()
{
no = 0;
Name = Null;
charges = 0.0;
days = 0;
}
void getinfo();
void showinfo();
};
void Hotel :: getinfo()
{
cout<<"Room
Number"<<endl;
cin<<rno;
cout<<"Name"<<endl;
gets(Name);
cout<<"Charges"<<endl;
cin>>charges;
cout<<"Number of
days"<<endl;
cin>>days;
}
void Hotel :: showinfo()
{
cout<<end<<"Hotel details as
follow"<<endl;
cout<<"Room
Number:"<<rno<<endl;
cout<<"Name:"<<Name<<endl;
cout<<"Charges:"<<Charges<<endl;
cout<<"Number of
days"<<days<<endl;
cout<<"Amount:"<<calculate()<<endl;
}
float Hotel : Calculate()
{
float amount = charges * days;
if (amount > 12000)
amount = 1.2* days*charges;
return amount;
}
int main ()
{
clrscr()
Hotel H1;
H1.get_info();
H1.showinfo();
getch; return 0;
}
8. Exam
இனக்குழுவைப் பின்வரும் குறிப்புகளுடன் C++ வரையறு.
Private உறுப்புகள்
Rollno : - Integer
Cname - 25 characters
Mark - integer
public :
Exam(int, char[], int) // QuirGOLÅG ASILÅ6 மதிப்பிருத்தல்
Exam() // "Result will be intimated shortly" செய்தியைத்
திரையிடும்
void Display() // mark 60-85 BLU STORITSU அனைத்து
தகவல்களும் திரையிடப்படும்
இல்லையெனில் "Result Withheld"
செய்தியைத் திரையிடுவதற்கு பயன்படும் செயற்கூறு
விடை :
#include<iostream.h>
#include<stdio.h>
#include<string.h>
{
class Exam
{
int Rolino;
charCName[25];
int Mark;
public:
Exam(int, Char[], int);
~Exam;
void Display();
};
Exam:: Exam(int r, char CN[], int m)
{
Rollno = r;
strcpy(cname, cn);
Mark = m;
}
Exam :-Exam()
{
cout<<"Result will be intimated shortly"<<endl;
}
Exam :: Display
{
if (Mark>=60)
{
cout<<"Roll
No:"<<Rollno<<endl;
cout<<"Name:"<<name<<endl;
cout<<"Mark:"<<mark<<endl;
}
{
else
cout<"Result
withheld"<<endl;
}
int main()
{
Exam E(11201, "ROHIT", 65);
display();
return 0;
}
9. Student இனக்குழுவைப் பின்வரும் குறிப்புகளைப்
பயன்படுத்தி வரையறு:.
Private உறுப்புகள்
தரவு உறுப்பு Rno-
long வகை
தரவு உறுப்பு
Cname-string வகை
தரவு உறுப்பு
Agg_marks -float வகை
தரவு உறுப்பு Grade
-char வகை
உறுப்பு செயற்கூறு
setGrade ()- மாணவன் பெற்ற மதிப்பெண் அடிப்படையில்
grade கண்டுபிடிக்கவும்.
மதிப்பெண் சராசரியும்
G r a d e - யும் பின்வருமாறு
காண்க.
>=90 A
Less than 90 and >=75 B
Less than 75 and >= 50 C
Less than 50 D
Public உறுப்புகள்
தரவு உறுப்புகளுக்கு ஆக்கி மூலம் மதிப்பிருத்தல்,
நகல் ஆக்கி மூலம் ஒரு பொருளின் மதிப்பை மற்றொரு பொருளுக்கு
இருத்தல் Rno.Cname, Agg_marks-மதிப்புகளை
உள்ளீடு செய்வதற்கு பயன்படும் செயற்கூறு மற்றும்
functionsetGrade ()-grade-யைக் கண்டுப்பிடிப்பதற்கு அழைத்தல்
அனைத்து தரவு உறுப்புகளின் மதிப்பை காண பயன்படுத்தும் செயற்கூறு,
END. செய்தியைத் திரையிடும் ஓர் அழிப்பி.
Rno=0,Cname="N.A", Agg_marks=0.0
விடை :
#include<iostream.h>
#include<string.h>
class Student
{
long RNo;
char Cname[25];
float Agg_Marks;
char Grade;
char setGrade();
Public :
Student();
Student(Student &s);
void Getdata();
void dispResult();
~Student();
};
Student :: Student()
{
Rno = 0;
Cname = Null;
Agg_marks = 0.0;
Grade='';
}
student : : (student & s)
{
Rno = s.Rno;
strcpy (cname, s.(Name); Agg- marks
=s.Aggmarks
}
void student : Getdata()
{
cout<<"Enter Roll
Number"<<endl';
cin>>RNo;
cout<<"Enter
Name"<<endl';
cin>>(cname);
cout<<"Enter
Agg_marks"<<endl';
cin>>Agg_marks;
}
void student:: dispResult()
cout<<"Roll
Number:"<<RNo<<endl;
cout<<"Name:"<<Cname<<endl;
cout<<"Aggregate
Marks:"<<Agg_ marks<<endl;
cout<<"Grade:"<<setGrade<<endl;
}
void student :: setGrade()
{
if (Agg_marks>=90)
Grade='A';
else if (Agg_marks>=75 & Agg_marks<90)
Grade = 'B';
else if (Agg_marks>=50 &
Agg_marks<75)
Grade='C';
else
Grade = 'D';
return Grade;
}
------------Student :: ~Student ()
int main()
cout<<"END";
{
}
Student s1, s2(s1);
s1.Getdata()
s1.dispResult;
s2.dispResult;
}