2- LABORATORIYA ISHI
2. Konteynerlar (COLLECTIONS)
2.1. array sinfidan foydalanib, amaliy dasturlar yaratish
Ishning maqsadi: C++ dasturlash tilida array sinflaridan foydalanib, konteynernerlar dan foydalanish ko’nikmalarini shakllantirish.
Masalaning qo’yilishi:
array asosida yaratilgan to’plamni kamayish va ko’payish tartibida saralash.
Masala: Talaba nomli class yaratish. Konteynerlarning array sinfi yordamida to’plamlar yartish. Array ning maxsus metodidan foydalanib, Talabalar to’plamini talabalarning yoshlari bo’yicha saralovchi dastur tuzish.
Masalani yechish g‘oyasi: talaba nomli yangi nolar fazosi yartiladi. Uning tarkibiga Talaba classi va Ism, Fam, Yosh, Step nomli to’plamlar joylashtiriladi. Talaba classining ruxsat berilmagan maydonlaridan foydalanish uchun friend funksiya yaratiladi.
Dastur matni:
#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
const int n=3;
array Ism;
array Fam;
array Yosh;
array Step;
namespace talaba_2{
class Talaba{
int yosh;
std::string ism;
std::string fam;
float step;
public:
friend void Saralash_show(array &T);
void set(int Y, std::string I, std::string F, float S){
static int i=0;
Yosh[i] = Y; Ism[i] = I; Fam[i] = F; Step[i] = S;
yosh = Y;
ism = I;
fam = F;
step = S; i++;
}
void get(){
cout<<"Ismi: "<
cout<<"Familiyasi: "<
cout<<"Yoshi: "<
cout<<"Stependiyasi: "<
}
};
void show(array &T){
for (int i = 0; i < n; i++)
{ cout<
T[i].get();
}
}
void SetArray(array &T){
string I,F; int Y; float S;
for (int i = 0; i < n; i++)
{
cout<
cout<<"Ism: "; cin>>I; cin.ignore();
cout<<"Fam: "; cin>>F;
cout<<"Yosh: "; cin>>Y;
cout<<"Step: "; cin>>S;
T[i].set(Y,I,F,S);
}
}
void Saralash_show(array &T){
for (int j = 0; j < n; j++){
for (int i = 0; i < n; i++){
if(Yosh[j]==T[i].yosh){
cout<
T[i].get();} }}
}
}
int main(){
array T;
T[0].set(22,"Islom","Salimov", 400000);
T[1].set(19,"Oqil","Qodirov", 600000);
T[2].set(20,"Komil","Tashev", 1200000);
//talaba_2::SetArray(T);
talaba_2::show(T);
cout<
std::sort(Yosh.begin(), Yosh.end());
/*int i=0;
for(auto& s: Yosh){
cout<
i++;
}*/
talaba_2::Saralash_show(T);
//std::reverse_copy(Yosh.begin(), Yosh.end(),std::ostream_iterator(std::cout, " "));
getchar();
}
Dastur natijasi:
1 - talaba haqida haqida
Ismi: Islom
Familiyasi: Salimov
Yoshi: 22
Stependiyasi: 400000
2 - talaba haqida haqida
Ismi: Oqil
Familiyasi: Qodirov
Yoshi: 19
Stependiyasi: 600000
3 - talaba haqida haqida
Ismi: Komil
Familiyasi: Tashev
Yoshi: 20
Stependiyasi: 120000
Yoshlari bo'yicha saralanga talabalar ro'yxati
1 - talaba haqida haqida
Ismi: Oqil
Familiyasi: Qodirov
Yoshi: 19
Stependiyasi: 600000
2 - talaba haqida haqida
Ismi: Komil
Familiyasi: Tashev
Yoshi: 20
Stependiyasi: 120000
3 - talaba haqida haqida
Ismi: Islom
Familiyasi: Salimov
Yoshi: 22
Stependiyasi: 400000
2.2. vector sinfidan foydalanib, amaliy dasturlar yaratish
Ishning maqsadi: C++ dasturlash tilida vecot sinflaridan foydalanib, konteynernerlardan foydalanish ko’nikmalarini shakllantirish.
Masalaning qo’yilishi:
vector asosida yaratilgan to’plam elementlarini vectorning maxsus funksiyalari yordamida qayta ishlash.
Masala: Berilgan int turidagi to’plamda –ishorali elementlarning eng kattasini o’chiruvchi dastur tuzing.
Masalani yechish g‘oyasi: talaba nomli yangi nolar fazosi yartiladi. Uning tarkibiga Talaba classi va Ism, Fam, Yosh, Step nomli to’plamlar joylashtiriladi. Talaba classining ruxsat berilmagan maydonlaridan foydalanish uchun friend funksiya yaratiladi.
Dastur matni:
#include "stdafx.h"
#include
#include
using namespace System;
using namespace std;
namespace Vectorlar{
int max,index;
void set_Vector(std::vector &A, int n){
for (int i = 0; i < n; i++)
{ int m; cout<>m;
A.push_back(m);
if(A[i]<0){ max = A[i];}
}
}
void get_Vector(std::vector &A, int n){
cout<<"To'plam elementlari"<
for ( int k : A ) {
std::cout << k << " ";
} cout<
}
void Max_Vector(std::vector &A, int n)
{
for (int i = 0; i < n; i++)
{
if(A[i]<0 && max
}
cout<<"Max= "<
}
void Delete_Max_Vector(std::vector &A){
A.erase(A.begin()+index);
}
}
int main()
{
cout<<"Berilgan int turidagi to’plamda –ishorali elementlarning maksimalini o’chiruvchi dastur"<
int n; cin>>n;
std::vector A;
Vectorlar::set_Vector(A,n);
Vectorlar::get_Vector(A,n);
Vectorlar::Max_Vector(A,n);
Vectorlar::Delete_Max_Vector(A);
Vectorlar::get_Vector(A,n);
getchar();
getchar();
}
Dastur natijasi:
Berilgan int turidagi to’plamda - ishorali elementlarning maksimalini o’chiruvchi dastur
4
1 son: 2
2 son: -4
3 son: -55
4 son: 3
To'plam elementlari
2 -4 -55 3
Max= -4
To'plam elementlari
2 -55 3
|
2.3. deque konteyneridan foydalanib, amaliy dasturlar yaratish
Ishning maqsadi: C++ dasturlash tilida deque sinflaridan foydalanib, konteynernerlardan foydalanish ko’nikmalarini shakllantirish.
Masalaning qo’yilishi:
deque asosida yaratilgan to’plam elementlarini dequening maxsus funksiyalari yordamida qayta ishlash.
Masala: Berilgan string turidagi to’plamda eng uzun so’zni belgilar sonini aniqlovchi dastur tuzing.
Masalani yechish g‘oyasi: Deque nomli yangi nolar fazosi yartiladi. Uning tarkibiga Ism, Fam, Yosh, Step nomli to’plamlar joylashtiriladi. Talaba classining ruxsat berilmagan maydonlaridan foydalanish uchun friend funksiya yaratiladi.
Dastur matni:
#include "stdafx.h"
#include
#include
#include
using namespace System;
using namespace std;
namespace Dequelar{
int max,index;
void set_Deque(std::deque &D, int n){
std::string s;
for (int i = 1; i <=n; i++)
{ cout<
getline(cin,s); s+=" ";
D.push_back(s);
}
}
void get_Deque(std::deque &D, int n){
cout<<"To'plam elementlari"<
for (int i = 0; i < n; i++)
{ cout<
cout<<"\t"<
} cout<
}
void Max_Deque(std::deque &D, int n){
int a[100]={0}, l=0;
for (int i = 0; i < n; i++)
{ int k=0;
for (int j = 0; j < D[i].size(); j++)
{
if(D[i][j].Equals(' '))
{
a[l] = k; l++; k=-1;
}
cout<
}
}
cout<
int max = a[0];
cout<<"\n So'zlarning uzunliklari:"<
for (int i = 0; i < l; i++)
{
if(max
cout<
}
cout<<"Max= "<
}
}
int main()
{
std::deque D;
cout<<"Berilgan string turidagi to’plamda eng uzun so’zni belgilar sonini aniqlovchi dastur"<
int n; cout<<"To'plam elementlari soni n= "; cin>>n; cin.ignore();
Dequelar::set_Deque(D,n);
Dequelar::get_Deque(D,n);
Dequelar::Max_Deque(D,n);
getchar();
}
Dastur natijasi:
Berilgan string turidagi to’plamda eng uzun so’zni belgilar sonini aniqlovchi dastur
To'plam elementlari soni n= 2
1 - satrni kiriting:
Mallayev Oybek Usmonqulovich
2 - satrni kiriting:
Mamatkarimov Sunnatullo Gayratjon o'g'li
To'plam elementlari
1 - satr:
Mallayev Oybek Usmonqulovich
2 - satr:
Mamatkarimov Sunnatullo Gayratjon o'g'li
Mallayev Oybek Usmonqulovich Mamatkarimov Sunnatullo Gayratjon o'g'li
So'zlarning uzunliklari:
8 5 13 12 10 9 6 Max= 13
|
2.4. forward_list konteyneridan foydalanib, amaliy dasturlar yaratish
Ishning maqsadi: C++ dasturlash tilida forward_list konteyneri va uning metodlaridan foydalanish ko’nikmalarini egallsh.
Masalaning qo’yilishi:
Worward_list asosida yaratilgan to’plam elementlarini forward_list ning maxsus funksiyalari yordamida qayta ishlash.
Masala: Berilgan int turidagi to’plamdagi qiymatlarning raqamlari yig’indisini Z to’plamga joylashtiruvchi va ularni ekranga chiqaruvchi dastur tuzing.
Masalani yechish g‘oyasi: forward_list konteyneri to’plami yaratiladi. forward_list ning push_front( ) iteratoridan foydalanib, A to’plamga qiymatlar o’zlashtiriladi. Z to’plamga esa A to’plam qiymatlarini raqamlari yig’indisi yoziladi.
Dastur matni:
#include "stdafx.h"
#include
#include
#include "string";
#include
using namespace System;
using namespace std;
int func(int d){
int s=0, k=0;
while(d>9){
s += d%10;
d=d/10; k++;}
return s+d;}
void Set_value(forward_list &A, int n){
for (int i = 0; i < n; i++)
{ float m; cout<>m;
0>
Do'stlaringiz bilan baham: |