You are on page 1of 51

ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ,

Е-НЭЭЛТТЭЙ ИНСТИТУТ

ПРОГРАМЧЛАЛ

ЛЕКЦ-6 НИЙЛМЭЛ ТӨРӨЛ, БҮТЭЦ ТӨРӨЛ,


ТООЧСОН ТӨРӨЛ
Багш: А.Түвшинбаяр /магистр/

Ташуураарай хамгаалж байсан улсаа


Тархиарай хамгаалах цаг ирлээ.
Л.Түдэв
www.emust.edu.mn
ТОВЧ
Бид энгийн бүтэцтэй float, int, char гэх мэтийн төрлүүдийг үзсэн. Ийм төрлийн хувьсагч
нь зөвхөн ганц л мэдээллийг агуулна. Нэг өндөр, эсвэл нэг хэмжээ, нэг жин гэх мэт.
Гэтэл олон өндөг нэг сагсанд байрладаг, олон ажилчид нэг хэсэгт харьяалагддаг шиг
олон энгийн мэдээллүүд нэг бүхэл юманд хамаарагдах шаардлага гарна. Ийм
шаардлагын үүднээс C++-д бүтэц гэсэн төрөл тодорхойлогддог.
БҮТЦИЙН ТУХАЙ
Бүтэц гэдэг нь олон хувьсагчуудын цуглуулга юм. Бүтцэд байгаа хувьсагчууд өөр өөр
төрлийнх байж болно. Нэг нь бүхэл тоо байхад нөгөө нь тэмдэгт мөр байх
жишээтэй. Бүтэц дотор байгаа эдгээр хувьсагчуудыг бүтцийн талбар гэж нэрлэнэ.
C++-ийн хувьд бүтэц бол обьект болон ангийн тухай ойлголт авах үндсэн хэсэг юм.
Бүтцийг судалснаар OOP-г судлах үндэс суурь нь бий болох ёстой. Бүтэц нь Basic
болон Pascal –ийн бичлэг (record) төрөлтэй адилхан гэж үзэж болно.
БҮТЦИЙН ТУХАЙ
Энгийн бүтэц

Хоёр бүхэл болон нэг бутархай тоон талбараас тогтох бүтцийг эхэлж үзье. Үүнийгээ
ямар нэгэн үйлдвэрийн барааны тухай мэдээлэл гэж үзвэл, эхний тоо нь уг барааны
дугаар, дараагийн талбар нь уг барааны загварын дугаар, сүүлийн бутархай тоон
талбар нь түүний үнэ гэж үзье. Доорх жишээ нь ийм нэгэн барааны мэдээллийг
үүсгэж, түүнийгээ дэлгэцэнд хэвлэдэг.
БҮТЦИЙН ТУХАЙ
//parts.cpp part part1;
#include <iostream>
using namespace std; part1.partnum=6244;
struct part part1.modelnum=373;
{ part1.cost=217.55;
int partnum;
int modelnum; cout <<"dugaar"<< part1.partnum<<endl;
float cost; cout <<"zagvar"<< part1.modelnum<<endl;
}; cout <<"une"<< part1.cost<<endl;
int main() }
{
БҮТЦИЙН ТУХАЙ
Программын үр дүн:

Дугаар 6244,
загвар 373,
үнэ 217.55

Программ 3 үндсэн алхмуудыг дамжиж байна. 1-рт бүтцийг тодорхойлох, 2-рт бүтэц
төрлийн хувьсагч тодорхойлох, эцэст нь бүтцийн талбаруудтай ажиллах.
БҮТЦИЙН ТУХАЙ
Бүтэц тодорхойлох

struct part
{
int partnum;
int modelnum;
float cost;
};

Энэ бол бүтцийг тодорхойлж байгаа хэрэг юм. Struct гэдэг нь бүтэц эхэлж байгааг
заасан нөөц үг. Энэ үгийн ард байгаа нь бүтцийн нэр юм. Хаалтан дотор бүтцийн 3
талбарыг энгийн хувьсагч тодорхойлохын адилаар тодорхойлж өгсөн байна.
Хаалтны төгсгөлд цэг таслал ( ; ) тавьсан нь энэхүү тодорхойлолт дуусч байгааг
илэрхийлнэ. Үүгээрээ бүтэц тодорхойлох нь энгийн коммандын блокоос ялгаатай
юм (коммандын блокын төгсгөлд цэг таслал тавьдаггүй.).
БҮТЦИЙН ТУХАЙ
Бүтэц төрлийн хувьсагч тодорхойлох

Үндсэн бие дэх анхны мөр нь:

part part1;

Энэ мөр нь part төрөлтэй part1 гэсэн хувьсагч тодорхойлж байна. Ингэснээрээ санах ойд
энэ хувьсагчид зориулсан муж авна. Харин ямар хэмжээтэй муж авах вэ? Бүх 3
хувьсагчид зориулсан санах ой авах нь мэдээж. Бидний жишээнд бол бүхэл хувьсагч
бүрт 2 байт, харин бутархай хувьсагчид 4 байт, нийт 8 байтыг авах болно.
Өмнөх үеийн С хэл дээр хувьсагчийг тодорхойлохдоо struct гэсэн нөөц үгийг ашигладаг
байсан бол C++-д ингэх шаардлагагүй юм. Ө.х. struct part part1 гэж тодорхойлдог
байсан байна.
БҮТЦИЙН ТУХАЙ
Бүтцийн талбаруудад хандах

Бүтэц болон түүний хувьсагчийг тодорхойлсны дараа тэдгээрийн талбаруудтай


ажиллана. Ингэж ажиллахдаа цэг операторыг ашигладаг.

part1.partnum=6244;

Талбарт хандах бичлэг нь бүтэц төрлийн хувьсагчийн нэр, цэг оператор ( . ), талбарын
нэр гэсэн 3 хэсэгтэй. Энэ нь part1-ийн partnum талбар гэсэн үг юм. Цэг операторын
өмнө талд бүтэц төрлийн нэр биш, харин ийм төрлийн хувьсагчийн нэр байхыг
андуурч болохгүй. Ингэж хандсанаар бүтцийн талбар бүрт өөр өөр хувьсагчууд мэт
энгийн үйлдлүүд гүйцэтгэж болно. Өмнөх жишээнд утга олгох оператор ашигласан
байна.
БҮТЦИЙН ТУХАЙ
Бүтцийн тухай нэмж өгүүлэхэд

Өмнө үзсэн жишээнд бид бүтцийг тодорхойлох болон хувьсагч тодорхойлох


үйлдлүүдийг тус тусд нь гүйцэтгэсэн билээ.

#include <iostream> int main()


using namespace std; {
Person p1;
struct Person
{ cout << "Enter Full name: ";
char name[50]; cin.get(p1.name, 50); cout << "Displaying Information." << endl;
int age; cout << "Enter age: "; cout << "Name: " << p1.name << endl;
float salary; cin >> p1.age; cout <<"Age: " << p1.age << endl;
}; cout << "Salary: " << p1.salary;
cout << "Enter salary: ";
cin >> p1.salary;
return 0;
}
БҮТЦИЙН ТУХАЙ
Өөр хувьсагч тодорхойлохгүй бол бичлэгийг ингэж хялбарчилах нь бичлэг болон санах
ойн нэлээд хэмнэлттэй юм.
Энгийн хувьсагчдын нэгэн адилаар бүтэц төрлийн хувьсагч тодорхойлохдоо түүний
талбаруудын анхны утгыг шууд оноон өгч болно.
БҮТЦИЙН ТУХАЙ
//partinit.cpp
#include <iostream> cout <<"dugaar"<<part1.partnum<<endl;
using namespace std; cout <<"zagvar"<<part1.modelnum<<endl;
cout <<"une"<<part1.cost<<endl;
struct part
{ part2=part1;
int partnum;
int modelnum; cout <<"dugaar"<< part2.partnum<<endl;
float cost; cout <<"zagvar"<< part2.modelnum<<endl;
}; cout <<"une"<< part2.cost<<endl;
}
int main()
{
part part1={ 6244, 373, 217.55 };
part part2;
БҮТЦИЙН ТУХАЙ
Энэ программ бүтэц төрлийн 2 хувьсагч тодорхойлж, эхний хувьсагчийн анхны
утгуудыг оноож өгч байна. Доорх үр дүн гарах болно.

Дугаар 6244, загвар 373, үнэ 217.55


Дугаар 6244, загвар 373, үнэ 217.55

Ингэж анхны утга онооход хаалтанд хашиж, таслалаар зааглан бичсэн байна. Эхний
утга нь эхний талбарт, дараагийн утга нь 2 дахь талбарт гэх мэтчилэн оноогдох
болно. Сүүлийн хэсэгт бүтэц төрлийн хувьсагчуудыг утга оноож өгч байна. Ингэж
утга онооход талбаруудын утгууд харгалзан оноогддог.
БҮТЦИЙН ТУХАЙ
Бүтцийн жишээ

Англи, Америкт уртын хэмжээг feet болон inch – ээр хэмждэгийг та мэдэх биз. Inch-ийг
(‘) тэмдгээр, feet-ийг (“) тэмдгээр тэмдэглэнэ. 12’ – 8” гэсэн байвал 12 inch 8 feet гэж
ойлгох хэрэгтэй. Дунд нь байгаа тэмдэг бол хасах тэмдэг биш, харин inch болон
feet-ийг хооронд нь зааглаж байгаа тэмдэг юм.
Ийм нэгжээр уртыг хэмжих шаардлагатай программ бичвэл, уртын хэмжээг хадгалахын
тулд inch болон feet – ийг хадгалах бүтэц тодорхойлох шаардлага гарна.
БҮТЦИЙН ТУХАЙ
#include <iostream>
using namespace std;

struct Distance{
int feet;
float inch;
}d1 , d2, sum;

int main()
{
cout << "Enter 1st distance," << endl;
cout << "Enter feet: ";
cin >> d1.feet;
cout << "Enter inch: ";
cin >> d1.inch;
БҮТЦИЙН ТУХАЙ
cout << "\nEnter information for 2nd distance" << endl;
cout << "Enter feet: ";
cin >> d2.feet;
cout << "Enter inch: ";
cin >> d2.inch;

sum.feet = d1.feet+d2.feet;
sum.inch = d1.inch+d2.inch;

// changing to feet if inch is greater than 12


if(sum.inch > 12)
{
++ sum.feet;
sum.inch -= 12;
}
БҮТЦИЙН ТУХАЙ
cout << endl << "Sum of distances = " << sum.feet << " feet " << sum.inch << "
inches";
return 0;
}
БҮТЦИЙН ТУХАЙ
Distance бүтэц нь feet ба inches гэсэн 2 талбартай. Feet нь бүхэл тоон, inches нь бутархай
тоон төрөлтэй байна. d1 ба d3 хувьсагчуудыг шууд, харин d2 хувьсагчийг анхны
утгыг нь оноож тодорхойлсон байна. Хэрэглэгчээс d1-ийн талбарын утгуудыг авч,
энэ утгуудыг d2 дээр нэмж, хариуг d3-т бичиж байна. Ингээд гарсан үр дүн нь:
Enter 1st distance,
Enter feet: 1
Enter inch: 6
Enter information for 2nd distance
Enter feet: 150
Enter inch: 176

Sum of distances = 152 feet 170 inches


Яагаад бид шууд d3 = d1 + d2 гэсэн хэлбэрээр нэмж болохгүй байгааг тайлбарлая. Int,
float мэтийн стандарт хувьсагчуудын нэмэх үйлдлүүдийг стандарт header файл
дотор тодорхойлсон байдаг юм. Харин бидний бүтцэд ийм нэмэх үйлдэл
тодорхойлогдоогүй байгаа билээ.
БҮТЦИЙН ТУХАЙ
#include <iostream>
#include <cstring>

using namespace std;

struct Books {
char title[50];
char author[50];
char subject[100];
int book_id;
};

int main() {
struct Books Book1; // Declare Book1 of type Book
struct Books Book2; // Declare Book2 of type Book
БҮТЦИЙН ТУХАЙ

// book 1 specification
strcpy( Book1.title, "Programchlal");
strcpy( Book1.author, "A.Tuvshinbayar");
strcpy( Book1.subject, "C++ Programchlal");
Book1.book_id = 6495407;

// book 2 specification
strcpy( Book2.title, "Algorithm");
strcpy( Book2.author, "A.Tuvshinbayar");
strcpy( Book2.subject, "Flowgorithm");
Book2.book_id = 6495700;
БҮТЦИЙН ТУХАЙ
// Print Book1 info
cout << "Book 1 title : " << Book1.title <<endl;
cout << "Book 1 author : " << Book1.author <<endl;
cout << "Book 1 subject : " << Book1.subject <<endl;
cout << "Book 1 id : " << Book1.book_id <<endl;

// Print Book2 info


cout << "Book 2 title : " << Book2.title <<endl;
cout << "Book 2 author : " << Book2.author <<endl;
cout << "Book 2 subject : " << Book2.subject <<endl;
cout << "Book 2 id : " << Book2.book_id <<endl;

return 0;
}
БҮТЦИЙН ТУХАЙ
Үр дүн нь

Book 1 title : Programchlal


Book 1 author : A.Tuvshinbayar
Book 1 subject : C++ Programchlal
Book 1 id : 6495407
Book 2 title : Algorithm
Book 2 author : A.Tuvshinbayar
Book 2 subject : Flowgorithm
Book 2 id : 6495700
БҮТЦИЙН ТУХАЙ
Бүтэц доторх бүтэц

Та бүтэц дотор бүтэц төрлийн хувьсагч тодорхойлж болно.


БҮТЦИЙН ТУХАЙ
#include <iostream>
#include <cstring>

using namespace std;


void printBook( struct Books book );

struct Books {
char title[50];
char author[50];
char subject[100];
int book_id;
};

int main() {
struct Books Book1; // Declare Book1 of type Book
struct Books Book2; // Declare Book2 of type Book
БҮТЦИЙН ТУХАЙ
// book 1 specification
strcpy( Book1.title, "Algorithm Programchlal");
strcpy( Book1.author, "R.Turbat");
strcpy( Book1.subject, "C++ Programming");
Book1.book_id = 6495407;

// book 2 specification
strcpy( Book2.title, "Algorithm Programchlal");
strcpy( Book2.author, "A.Tuvshinbayar");
strcpy( Book2.subject, "Telecom");
Book2.book_id = 6495700;
БҮТЦИЙН ТУХАЙ
// Print Book1 info
printBook( Book1 );

// Print Book2 info


printBook( Book2 );

return 0;
}
void printBook( struct Books book ) {
cout << "Book title : " << book.title <<endl;
cout << "Book author : " << book.author <<endl;
cout << "Book subject : " << book.subject <<endl;
cout << "Book id : " << book.book_id <<endl;
}
БҮТЦИЙН ТУХАЙ
Бүтэц доторх бүтцэд анхны утга оноох

Өөртөө бүтэц багтаасан бүтцийн анхны утгуудыг тодорхойлох үед шууд өгч болно. Энэ
үед доорх маягийн бичлэг ашигладаг юм.

Room dining={{13, 6.5}, {10, 0.0}};

Room дотор байрлаж байгаа distance бүтэц бүрийг хаалтаар зааглан бичнэ. Хаалт
бүрийн доторх утгууд хоорондоо таслалаар тусгаарлагдах болно. Эхний distance
төрлийн хувьсагч {13, 6.5} гэсэн утга, дараагийн distance төрлийн хувьсагч {10, 0.0}
гэсэн утгуудыг тус тус авах юм.
БҮТЦИЙН ТУХАЙ
Хөзрийн тоглоомны тухай

Өөр нэгэн жишээ үзэцгээе. Энэ жишээ нь хөзрийн нэгэн тоглоомыг та бүхэнд
танилцуулах болно. Cardsharp хэмээх энэ тоглоом нь дэлгэцэнд 3 хөзөр харуулах ба
дараа нь тэдгээрийг буруу харуулаад, хэд хэдэн удаа холино. Хэрвээ та сонгосон хөзрөө
хаана байгааг тааж чадвал хожих болно. Программд доорх бүтэц ашиглагдана.

struct card
{
int number;
int suit;
}

Эхний талбар нь хөзрийн дугаар бөгөөд 2-оос 14 хүртэл утга авна. Энд 11-ээс 14 хүртэл
харгалзан боол, хатан, ноён, тамга байх юм. Дараагийн талбар нь 0-ээс 3 хүртэл утга
авна. Эдгээр нь мөн харгалзан цэцэг, дөрвөлжин, бунд, гэл гэсэн үг.
БҮТЦИЙН ТУХАЙ
const int clubs=0; //цэцэг
const int diamonds=1; //дөрвөлжин
const int hearts=2; //бунд
const int spades=3; //гэл

const int jack=11; //боол


const int queen=12; //хатан
const int king=13; //ноён
const int ace=14; //тамга

struct card
{
int number;
int suit;
}
БҮТЦИЙН ТУХАЙ
Программ ажилласны дараа дэлгэц дээр дараах мэдээллүүд хэвлэгдсэн байх болно.

Эхний хөзөр нь цэцгийн 7 байна


2 дахь хөзөр бундангийн боол
3 дахь хөзөр гэлийн тамга
1-р хөзрийг 3-р хөзөртэй солилоо
2-р хөзрийг 3-р хөзөртэй солилоо
1-р хөзрийг 2-р хөзөртэй солилоо
Гэлийн тамга нь хаана орсон бэ? (1,2,3) 3
Уучлаарай. Та алдлаа.
БҮТЦИЙН ТУХАЙ
Программын эхэнд хэдэн тогтмол хувьсагч тодорхойлж байна. Дараа нь анхны утгыг
олгосон болон олгоогүй хэд хэдэн “хөзөр“ тодорхойлж байна. Тэрхүү анхны утгуудыг
энэ жишээнд автоматаар оноосон байна. Ерөнхий тохиолдолд эдгээр утгуудыг
санмсаргүйгээр оноох нь зүйтэй. Ингээд аль нэг хөзрийг санаж аваад, хөзрүүдийг
хольж байгаа юм. Холихдоо 1-рийг 3-ртай, 3-рыг 2-ртай, 2-рыг 1-ртэй сольж байна.
Эцэст нь программ хэрэглэгчээс сонгосон хөзөр хаана байгааг асууж, хэрэглэчийн
сонголтыг авах бөгөөд тэр сонголтыг шалгаад, тохирох хариултыг өгч байна.
Бүтцүүдийг шууд нэмж болдоггүйн адил тэдгээрийг шууд харьцуулж болохгүй учраас
талбар бүрээр нь жишиж байна.
БҮТЦИЙН ТУХАЙ
Тоочсон төрөл

Бидний өмнө үзсэн бүтэц төрөл нь хэрэглэгчийн тодорхойлдог төрөл билээ. Одоо
хэрэглэгчийн тодорхойлдог өөр нэг төрөл тоочсон төрлийг үзэх гэж байна. Энэ төрөл
обьект хандалтат программчлалд нэг их чухал төрөл биш боловч хэрэглэгчийн
тодорхойлдог төрлийн тухай ойлголт авахад их нөлөөтэй. Pascal –д ч мөн ийм төрөл
байдаг.
БҮТЦИЙН ТУХАЙ
Долоо хоногийн гаригууд

Хэрэв та уг төрлийн бүх утгуудыг мэддэг байгаад тэр нь тоочин бичиж болохуйц цөөн
бол тоочсон төрлийг үүсгэж болно. Доорх жишээг анхааралтай үзэцгээ.
БҮТЦИЙН ТУХАЙ
#include <iostream>
using namespace std;

enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

int main()
{
week today;
today = Wednesday;
cout << "Day " << today+1;
return 0;
}
БҮТЦИЙН ТУХАЙ
day 4

Тоочсон төрөл нь компиляторт энгийн бүхэл тоонууд гэж ойлгогдоно. Ийм учраас
арифметик болон харьцуулах үйлдлүүд хийж болдог байна. Уг төрөл дахь эхний
гишүүнийг 0, дараагийнхийг 1 гэх мэтчилэн тоогоор төлөөлүүлдэг. Өмнөх жишээнд Sun
нь 0, Sat нь 6 гэсэн утгатай ажээ. Өөрөөр хэлбэл та today+1 гэсэн үйлдэл хийж болно.
Гэхдээ ингэж утга оноохдоо тун болгоомжтой байх нь зүйтэй.
БҮТЦИЙН ТУХАЙ
#include <iostream>
using namespace std;

enum season
{ spring = 0,
summer = 4,
autumn = 8,
winter = 12
};
int main()
{
season odoo;
odoo= summer;
cout << "zun " <<odoo<<"sar urgeljilne";
return 0;
}
БҮТЦИЙН ТУХАЙ
Zun 4 sar urgeljilne

Эсвэл хэрэглэгч өөрөө утгыг өгч болно.


БҮТЦИЙН ТУХАЙ
#include <iostream>
using namespace std;

enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32};

int main() {

seasons s;

s = summer;
cout << "Summer = " << s << endl;

return 0;
}
БҮТЦИЙН ТУХАЙ
Summer=4

Эсвэл хэрэглэгч өөрөө утгыг хувсагчинд оноож болно.


БҮТЦИЙН ТУХАЙ
Булийн төрөл үүсгэх

Өмнөх бүлэгт дурдсанаар C++-д үнэн ба худал утга авдаг Булийн төрөл байдаггүй
билээ. Нэгэнт тоочсон төрлийг үзсэн учраас өөрсдөө Булийн төрөл үүсгэж болно.
Та бүхэн өмнөх бүлгийн chcount гэсэн жишээг санаж байгаа биз. Тэр программын гол
дутагдал нь олон space (хоосон зай) цувуулан бичсэн тохиолдолд тэр бүрийг үг гэж
тоолдогт байгаа юм. Харин одоо энэ алдааг залруулъя.
БҮТЦИЙН ТУХАЙ
// Computes time difference of two time period
// Time periods are entered by the user

#include <iostream>
using namespace std;

struct TIME
{
int seconds;
int minutes;
int hours;
};

void computeTimeDifference(struct TIME, struct TIME, struct TIME *);


БҮТЦИЙН ТУХАЙ

int main()
{
struct TIME t1, t2, difference;

cout << "Enter start time." << endl;


cout << "Enter hours, minutes and seconds respectively: ";
cin >> t1.hours >> t1.minutes >> t1.seconds;

cout << "Enter stop time." << endl;


cout << "Enter hours, minutes and seconds respectively: ";
cin >> t2.hours >> t2.minutes >> t2.seconds;

computeTimeDifference(t1, t2, &difference);


БҮТЦИЙН ТУХАЙ

cout << endl << "TIME DIFFERENCE: " << t1.hours << ":" << t1.minutes << ":"
<< t1.seconds;
cout << " - " << t2.hours << ":" << t2.minutes << ":" << t2.seconds;
cout << " = " << difference.hours << ":" << difference.minutes << ":" <<
difference.seconds;
return 0;
}
void computeTimeDifference(struct TIME t1, struct TIME t2, struct TIME
*difference){

if(t2.seconds > t1.seconds)


{
--t1.minutes;
t1.seconds += 60;
}
БҮТЦИЙН ТУХАЙ
difference->seconds = t1.seconds - t2.seconds;
if(t2.minutes > t1.minutes)
{
--t1.hours;
t1.minutes += 60;
}
difference->minutes = t1.minutes-t2.minutes;
difference->hours = t1.hours-t2.hours;
}
БҮТЦИЙН ТУХАЙ
Үр дүн
Enter start time.
Enter hours, minutes and seconds respectively: 00
01
10
Enter stop time.
Enter hours, minutes and seconds respectively: 23
55
23

TIME DIFFERENCE: 0:1:10 - 23:55:23 = -24:5:47


БҮТЦИЙН ТУХАЙ
Хэрэглэгч товч дарах бүрд дарсан товчийг шалгаж, хоосон зай иртэл үсэгнүүдийг
алгасах бөгөөд харин дараа нь үсэг иртэл хоосон зайнуудыг алгасах юм. Ингэсэн
тохиолдолд дараалан орж ирсэн хоосон зайнуудыг үг гэж тоолохгүй. Программын эхэнд
isWord хувьсагч худал утгатай байх бөгөөд анхны үсэг дарагдахад л энэ хувьсагч үнэн
утгаа авна. Үүнээс хойш хоосон зай дарагдахад анхны үгийг тоолох бөгөөд isWord
хувьсагч дахиж худал утгатай болно. Хоёр дахь if операторыг хаалтанд хийсэн нь
түүний дараа байгаа else операторыг энэ нөхцөл шалгалтын биш, өмнөх шалгалтын else
гэдгийг тодруулж өгч байгаа юм.
БҮТЦИЙН ТУХАЙ
Дахиад л хөзрийн тухай

Өмнөх хөзрийн тоглоомдоо тодорхойлж байсан олон тогтмол хувьсагчдыг тоочсон


төрөл болгон тодорхойлъё.

//cardenum.cpp
#include <iostream.h>

const int jack=11; //боол


const int queen=12; //хатан
const int king=13; //ноён
const int ace=14; //тамга

enum Suit {clubs,diamonds,hearts,spades};

struct card
БҮТЦИЙН ТУХАЙ
Тоочсон төрлийн хамгийн эхний утга нь 0 гэсэн бүхэл тоо болдог тухай дээр дурдсан.
Нэмж сонирхуулахад, эхний утгыг 0-ээс өөр тоо болгож болно.

Enum Suit {clubs=1,diamonds,hearts,spades};

Энэ тохиолдолд diamonds = 2, hearts = 3, spades = 4 гэсэн утгуудыг авах болно. Бас нэгэн
зүйлийг нэмье. Тоочсон төрлийн хувьсагчийн утгыг хэвлэхэд утгын нэр нь биш, тоон
утга нь хэвлэгддэг юм шүү. Жишээ нь:

day1.suit=hearts;
cout << day1.suit;

гэвэл hearts гэсэн үг биш, 3 гэсэн тоо хэвлэгдэх болно.


БҮТЦИЙН ТУХАЙ

Тоочсон төрлийн хэд хэдэн жишээг доор үзүүллээ.

enum months {Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};

enum lightswitch {off,on};

enum chess {pawn,knight,bishop,rook,queen,king};


ЛЕКЦ №6 ДҮГНЭЛТ
Бид энэ бүлэгт бүтэц ба тоочсон гэсэн 2 төрлийн тухай үзлээ.
Бүтэц гэдэг бол C++-ийн хувьд нэлээн чухал, бичиглэлийн хувьд ангитай тун төстэй
төрөл юм. Бүтэц нь өөртөө хэд хэдэн энгийн төрлийн хувьсагчийг агуулсан
хэрэглэгчийн тодорхойлдог нийлмэл төрөл билээ. Зарим талаас нь авч үзвэл бүтэц нь
нэг бүхэл төрөл шиг боловч, зарим тохиолдолд тэдгэрийн талбар тус бүртэй ажиллахаас
өөр аргагүйд хүрдэг. Бүтцийн талбарт хандахын тулд цэг операторыг ашиглана.
Тоочсон төрөл бол тодорхой тооны, тогтмол утгаас тогтсон төрөл байх юм. Тоочсон
төрлийн элементүүдийг компилятор бүхэл тоо болгон ойлгодог.
АШИГЛАСАН МАТЕРИАЛ
1. Программчлалын үндсэн ойлголт, ТЭРГҮҮН БҮЛЭГ
2. Программчлалын үндсэн ойлголт, 3-р бүлэг, -Нийлмэл төрөл, Бүтэц төрөл, Тоочсон
төрөл
3. U.CS101 Алгоритм програмчлал хичээлийн лекц
4. he2must.blogspot.com Дээд боловсролын суурь хичээлүүд
5. https://www.programiz.com/cpp-programming/enumeration
6. https://www.programiz.com/cpp-programming/structure

You might also like

  • Lecture 15
    Lecture 15
    Document40 pages
    Lecture 15
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lec1-1 Corporate Activity Shine
    Lec1-1 Corporate Activity Shine
    Document61 pages
    Lec1-1 Corporate Activity Shine
    Amarsaikhan Tuvshinbayar
    0% (1)
  • Programming Lec 6
    Programming Lec 6
    Document51 pages
    Programming Lec 6
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 13
    Lecture 13
    Document46 pages
    Lecture 13
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture 12
    Lecture 12
    Document34 pages
    Lecture 12
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture - 10
    Lecture - 10
    Document35 pages
    Lecture - 10
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 9
    Lecture 9
    Document46 pages
    Lecture 9
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 2 2018
    Lecture 2 2018
    Document33 pages
    Lecture 2 2018
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Lecture 7 20108
    Lecture 7 20108
    Document47 pages
    Lecture 7 20108
    Amarsaikhan Tuvshinbayar
    75% (4)
  • Lecture 11
    Lecture 11
    Document24 pages
    Lecture 11
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture 8 2018
    Lecture 8 2018
    Document54 pages
    Lecture 8 2018
    Amarsaikhan Tuvshinbayar
    100% (3)
  • Lecture 6 2018
    Lecture 6 2018
    Document50 pages
    Lecture 6 2018
    Amarsaikhan Tuvshinbayar
    100% (3)
  • Lecture 1
    Lecture 1
    Document54 pages
    Lecture 1
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture 1 2018
    Lecture 1 2018
    Document39 pages
    Lecture 1 2018
    Amarsaikhan Tuvshinbayar
    100% (6)
  • Lecture 5 2018
    Lecture 5 2018
    Document54 pages
    Lecture 5 2018
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture 4 2018
    Lecture 4 2018
    Document47 pages
    Lecture 4 2018
    Amarsaikhan Tuvshinbayar
    100% (4)
  • Lecture 3 2018
    Lecture 3 2018
    Document42 pages
    Lecture 3 2018
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Baikal Hotolbor
    Baikal Hotolbor
    Document2 pages
    Baikal Hotolbor
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Baikal Hotolbor
    Baikal Hotolbor
    Document2 pages
    Baikal Hotolbor
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • IT101 Lecture 4
    IT101 Lecture 4
    Document72 pages
    IT101 Lecture 4
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 3
    Lecture 3
    Document72 pages
    Lecture 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 3
    Lecture 3
    Document72 pages
    Lecture 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 8
    Programming Lec 8
    Document32 pages
    Programming Lec 8
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Lecture 2
    Lecture 2
    Document80 pages
    Lecture 2
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 6
    Programming Lec 6
    Document51 pages
    Programming Lec 6
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Koosen 2018 Algorithm Programming 3
    Koosen 2018 Algorithm Programming 3
    Document46 pages
    Koosen 2018 Algorithm Programming 3
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Programming Lec 9
    Programming Lec 9
    Document39 pages
    Programming Lec 9
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • PL - 3
    PL - 3
    Document47 pages
    PL - 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 7
    Programming Lec 7
    Document57 pages
    Programming Lec 7
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 4
    Programming Lec 4
    Document39 pages
    Programming Lec 4
    Amarsaikhan Tuvshinbayar
    No ratings yet