linkedin facebook linkedin facebook nod32

C++ da ma`lumotlarning murakkab toifalari

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2016-02-24

C++ da ma`lumotlarning murakkab toifalari

Video darslik 

Ma`lumotlarning barcha toifalari oddiy bo`lsin, murakkab bo`lsin faqat bir toifadagi ma`lumotlarni saqlash uchun ishlatiladi. Masalan Integer toifasi faqat butun sonlarni saqlash uchun ishlatiladi. Massivlar va to`plamlarda esa elementlari qaysi toifada e`lon qilingan bo`lsa, faqat shu toifadagi ma`lumotlarni saqlaydi. Amaliyotda esa axborotlarni saqlash, qayta ishlash uchun ma`lumotlarning har hil toifalarini aralashtirib ishlashga to`g`ri keladi. Ma`lumotlarning aralash toifasi bilan
ishlash uchun C++ da struct (struktura) dan foydalanish mumkin.
Struktura deb, har hil toifadagi ma`lumotlarning cheklangan to`plamiga aytiladi.
Strukturalar – maydon deb ataluvchi chekli sondagi hadlardan tashkil topadi.
Struktura nimaligini tushinish uchun quyidagi misolni ko`rib chiqamiz.
№ Familiya Ism Baholar
1 Abdullaev Dilshod 5 5 4 5
2 Abdurahimov Ne`mat 3 3 4 5
3 Rejepova Dilbar 5 5 5 5
4 Karimova Hafiza 4 4 5 5
Bu jadvalning har bir satri har hil toifadagi alohida elementlardan tuzilgan:
1. Tartib raqami – butun sonlardan
2. Familiya Ism – belgili satrlardan
3. Baholar – butun sonlar massividan tashkil topgan.
Bu ma`lumotlarni bir guruhga, strukturaga birlashtirish mumkin.
Quyidagicha belgilashlar kiritamiz: Imtixon – strukturaning nomi; N – tartib raqami;
FI – Familiya ism; B – baholar;

Strukturalarni e`lon qilish:
Strukturalarni e`lon qilish uchun struct xizmatchi so'zidan foydalaniladi.
struct struktura_nomi
{
toifa_1 nom1;
toifa_2 nom2;
. . .
toifa_n nomn;
};

Struktura elementiga murojaat
Struktura orqali yangi ma'lumotlar toifasi hosil qilinadi. Prоgrammada
strukturalardan fоydalanish shu toifadagi o’zgaruvchilar e’lоn qilinish orqali bo'ladi.
Yuqoridagi misol uchun strukturani e`lon qilish quyidagicha bo`ladi:
struct imtixon
{
int n; // tartib raqami
char FI[30]; // Familiya ismi
int b[4]; // Baholar
};
Struktura elementlari (maydonlari) programmada oddiy o`zgaruvchilar kabi
ishlatiladi. Struktura maydoni elementlari ustida, uning toifasida nima amal bajarish
mumkin bo`lsa shu amallarni bajarish mumkin. Strukturaning mayddoniga murojaat
qilish uchun, o'zgaruvchidan keyin nuqta (.) qo'yiladi.
imtixon t; // talaba

t.n = 1;
t.b[0] = 5;
t.b[1] = 5;
t.b[2] = 4;
t.b[3] = 5;
strcpy(t.FI, "Abdullaev Dilshod");
Butun va haqiqiy toifadagi o'zgaruvchilarga qiymat berish oddiy amalga oshiriladi.
Satrlarga qiymat berish esa, strcpy - funksiyasi orqali amalga oshiriladi.
Keling oddiy ishchi nomli struktura (sinf) hosil qilamiz va undan programmada
foydalanishni o'rganamiz.
Ishchi strukturasi quyidagi maydonlarni o'z ichiga oladi:
? Familiy
? Ism
? Lavozim
? Oklad
? Yosh
Strukturaga ma'lumotlarni kiritish va chiqarishda amallarni qayta yuklashdan
foydalanamiz. Amallarni qayta yuklashni, C++ da ob'ektga yo'naltirilgan dasturlash
qismida batafsil to'xtalamiz. Xozircha asosiy e'tiborni strukturaga qaratamiz.
Ishchi strukturasin hosil qilish va dasturda foydalanish
#include <iostream.h>
// ishchi sinfini e'lon qilish
struct ishchi
{
char familiya[30];
char ism[30];
char lavozim[30];
float oklad;
int yosh;
};
// kiritish amalini qayta yuklash
istream& operator >> (istream& input, ishchi& k)
{
cout << "Familiyani kiriting\n";
input >> k.familiya;

cout << "Ismni kiriting\n";
input >> k.ism;

cout << "Lavozimini kiriting\n";
input >> k.lavozim;

cout << "Okladni kiriting ($)\n";
input >> k.oklad;

cout << "Yoshini kiriting\n";
input >> k.yosh;

return input;
}
// chiqarish amalini qayta yuklash
ostream& operator << (ostream& out, ishchi k)
{
out << "\nFamiliya:\t" << k.familiya;
out << "\nism:\t\t" << k.ism;
out << "\nlavozim:\t" << k.lavozim;
out << "\noklad:\t\t" << k.oklad << "$";
out << "\nyosh:\t\t" << k.yosh << endl;

return out;
}
int main()
{
// ishchi sinfidagi ob'ektni e'lon qilish
ishchi p;

cin >> p;
cout << p;
system (“pause”);
return 0;
}

n ta ishchi haqidagi ma'lumotlarni o'zida saqlovchi fayl hosil qiling. 21 yoshdan kichik bo'lgan ishchilarni chiqaruvchi programma tuzilsin.
#include <iostream.h>
// ishchi sinfini e'lon qilish
struct ishchi
{
char familiya[30];
char ism[30];
char lavozim[30];
float oklad;
int yosh;
};
// kiritish amalini qayta yuklash
istream& operator >> (istream& input, ishchi& k)
{
cout << "Familiyani kiriting\n";
input >> k.familiya;

cout << "Ismni kiriting\n";
input >> k.ism;

cout << "Lavozimini kiriting\n";
input >> k.lavozim;

cout << "Okladni kiriting ($)\n";
input >> k.oklad;

cout << "Yoshini kiriting\n";
input >> k.yosh;

return input;
}
// chiqarish amalini qayta yuklash
ostream& operator << (ostream& out, ishchi k)
{
out << k.familiya;
out << " " << k.ism;
out << "\t" << k.lavozim;
out << "\t" << k.oklad << "$";
out << "\t" << k.yosh << endl;

return out;
}
int main()
{
// ishchi sinfidagi ob'ektni e'lon qilish
ishchi p;
FILE * f;
int n = 0;

f = fopen("ishchi.txt", "a+");

cout << "Faqat ro'yxatni ko'rish uchun 0 kiriting\n";
cout << "Yangi kiritiladigan ishchilar sonini kiriting\n"; cin >> n;

if (n >= 1)
for (int i = 1; i <= n; i++)
{
cout << i << " - ishchi ma'lumotlarini kiriting\n";
cin >> p;

// faylga ma'lumotlarni yozish
fwrite(&p, sizeof(ishchi), 1, f);
}
// fayl boshiga o'tish
rewind(f);

cout << "Ishchilar ro'yxati\n";
n = 0;
while (fread(&p, sizeof(ishchi), 1, f))
{
n++;
cout << n << " ";
cout << p;
}

// fayl boshiga o'tish
rewind(f);
cout << "21 - yoshdan kichik dasturchilar ro'yxati\n";
n = 0;
while (fread(&p, sizeof(ishchi), 1, f))
{
if (p.yosh <= 21)
{
n++;
cout << n << " ";
cout << p;
}
}

fclose(f);
system (“pause”);
return 0;
}

756 marta o`qildi.

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений