C/C++ хэлэнд байдаг бүтэц нь Паскаль хэлний бичлэг(Record)-тэй яг ижил утгатай ойлголт учраас дахин тайлбарлах илүү байх (Паскаль хэлний бичлэгийн тухай
эндээс уншаарай). C/C++-д бүтцийг яаж тодорхойлж, програмдаа яаж ашиглах талаар товчхон бичье. Бүтцийг
struct нөөц үгийн тусламжтайгаар тодорхойлдог.
Формат нь:
struct Бүтцийн_нэр {
талбар1;
талбар2;
...
талбарN;
};
Бүтцийн_нэр: бүтцийн нэр.
талбар1, талбар2, ..., талбарN: талбарууд.
Талбарууд нь стандарт болон хэрэглэгчийн тодорхойлсон төрөл, мөн бүтэц төрөлтэй байж болно.
Жишээлбэл,
struct Display {
string companyName;
float width, height, weight;
};
Бүтэц төрлийн хувьсагчийг энгийн хувьсагч зарлахтай адил Бүтцийн_нэр хувьсагч; гэж зарлана.
Жишээлбэл,
struct Computer {
int ram, cpu;
string name;
float price;
Display disp;
};
int main() {
Computer com;
}
Бүтцийн талбаруудад утга олгохдоо, мөн талбарын утгыг ашиглахдаа бүтцийн объектын ард .(цэг) тавьж, ард нь талбарын нэрийг бичинэ.
Жишээлбэл,
Display disp;
disp.companyName = "Acer";
disp.width = disp.height = 50;
disp.weight = 5;
Computer com;
com.cpu = 4;
com.disp = disp;
Бүтцийг ашиглаж нэг гоё жишээ бодлого бодъё. Танд гоё санагдахгүй ч байж магадгүй. Надад лав гоё. Тэр юу вэ? гэхээр бүтцийг ашиглаж массив төрлийн утга амархан буцааж болно. Хоёр матрицын нийлбэр матрицыг буцаадаг функц бичиж, уг функцийг дуудаж, үр дүнгийн матрицыг хэвлэе.
#include <iostream.h>
#include <iomanip.h>
struct Matrix {
float a[100][100];
};
Matrix Sum(int n, int m, float a[100][100], float b[100][100]) {
Matrix mat;
int i, j;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
mat.a[i][j] = a[i][j] + b[i][j];
return mat;
}
int main() {
float a[100][100], b[100][100];
Matrix mat;
int n, m, i, j;
cout<<" n = ";
cin>>n;
cout<<" m = ";
cin>>m;
for(i=0; i<n; i++) {
cout<<endl;
for(j=0; j<m; j++) {
cout<<" a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
cout<<" b["<<i<<"]["<<j<<"] = ";
cin>>b[i][j];
}
}
mat = Sum(n, m, a, b);
cout<<"\n Niilber matrix:\n";
for(i=0; i<n; i++) {
cout<<endl;
for(j=0; j<m; j++) {
cout.width(8);
cout<<mat.a[i][j];
}
}
cout<<"\n\n";