Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalar Universiteti Samarqand Filiali At servis yunalishi 1-kurs talabasining
Dasturlash fanidan
Bajardi: Isroilov Samandar
Tekshirdi:
Samarqand 2023
Fan nomi: Dasturlash 1
3-Mustaqil ish topshiriqlari
Mavzu: Massivlar bilan ishlash
1-masala. To’g’ri to’rtburchakni tavsiflovchi TurtBurchak nomli sinf yarating. Sinf quyidagilardan iborat bo’lsin:
1.1. To’g’ri to’rtburchaning bo’yi va enini tavsiflash uchun ikkita double turida buyi va eni nomli maydonlar;
1.2. buyi=1 va eni=1 qiymatli to’rtburchakni hosil qiluvchi argumentsiz konstruktor;
1.3. Barcha maydonlar uchun aksessor va mutetor funksiyalari;
1.4. To’rburchak yuzining qiymatini qaytaruvchi getArea() nomli funksiya;
1.5. Perimetrining qiymatini qaytaruvchi getPerimeter() nomli funksiya. Sinfni (tanasini) ishga tushiring. qiling. To’rtburchak sinfida ikkita ob’yekt yaratib, test dastur yozing. Birinchi ob’yektda eni uchun 4, bo’yi uchun 40, ikkinchi ob’yektda esa eni uchun 3.5 va bo’yi uchun 35.9 qiymatlar berilsin. Ikkala ob’yektning ham xususiyatlarini hamda ularning yuzlari va perimatrlarini ekranga chiqaring.
JAVOB:
#include
using namespace std;
class TurtBurchak{
double buyi,eni;
public:
TurtBurchak(){
buyi=1;
eni=1;
}
TurtBurchak (double buyi, double eni) {
this->buyi=buyi;
this->eni=eni;
}
void getArea(){
cout<}
void getPerimeter() {
cout<<2*(buyi+eni)<
}
};
main() {
TurtBurchak T(35.9,3.5);
T.getArea();
T.getPerimeter();
2-masala. x va y koordinatalarni tavsiflovchi Nuqta nomli sinf yarating. Sinf quyidagilardan iborat bo’lsin:
2.1. Koordinatalarni tavsiflovchi x va y nomli maydonlar;
2.2. (0, 0) nuqtani yaratuvchi argumentsiz konstruktor;
2.3. Berilgan koordinatalar bilan nuqtani hosil qiluvchi konstruktor;
2.4. x va y maydonlar uchun ikkita get funksiyalar;
2.5. Ikki nuqta orasidagi masofani qaytaruvchi masofa() nomli funksiya. Sinfni ishga tushiring. (0, 0) va (10, 30.5) koordinatali ikki nuqtani hosil qiluvchi test dastur yozing. Nuqtalar orasidagi masofa ekranga chiqarilsin.
JAVOB:
#include
using namespace std;
class Nuqta
{
public:
double x1, yl,x,y;
Nuqta(){
x=0;
x1=0;
y=0;
y1=0;
}
Nuqta(double x, double y, double x1, double y1){
this->x=x;
this->x1=x1;
}
void masofa(){
cout<};
int main()
{
Nuqta T(0,0,10,30.5)
T.masofa();
}
3-masala. (Algebra:kvadrat tenglama) ax2+bx+x=0 kvadrat tenglamasi uchun KvTenglama nomli sinf yarating. Sinf quyidagilardan iborat bo’lsin: - Uchta koeffitsientni namoyon qiluvchi a, b va c maydonlari.
a, b va c argumentli konstruktor.
a, b va c uchun uchta get funksiya.
b2-4ac ni, ya’ni diskriminantni qaytaruvchi getDiskriminant funksiyasi. - getIldiz1() va getIldiz2() funksiyalari. Ular quyidagi ifodalarni hisoblab qaytaradi:
Agar diskiriminant 0 dan kichik bo’lsa, bu funksiyalar “Haqiqiy sonlar to’plamida ildizi mavjud emas!” qiymatini qaytarsin.
Sinfni ishga tushiring. Foydalanuvchidan a, b va c larga qiymat kiritish so’rovi va diskriminantga bog’liq holda, mos natijani ekranga chiqaruvchi test dastur yozing. Agar diskriminant musbat bo’lsa ikkita ildiz chiqsin. Agar diskriminant 0 ga teng bo’lsa, bitta ildiz, aks holda “Haqiqiy sonlar to’plamida ildizi mavjud emas!” xabari chiqsin.
JAVOB:
#include
using namespace std;
class KvTenglama{
public:
double a,b,c,x;
KvTenglama(){
a=0;b=0;c=0,x=0;
}
KvTenglama (double a, double b, double c, double x){
this->a=a;
this->b=b;
this->c=c;
this->x=x;
}
void D() {
if(xcout<<"bo`sh to`mlam";
}
void yechim1(){
if(x>0)
cout<<(-b+sqrt(x))/(2*a*c) <};
void getIldiz2(){
if(x>0)
cout<<(-b-sqrt(x))/(2*a*c)<}
};
int main(){
double a,b,c;
cin>>a>>b>>c;
double x=b*b-4*a*c;
KvTenglama (a,b,c,x);
T.D();
T.yechim();
T.yechim();
}
4-masala. (Uchburchak sinfi) GeometricObject sinfidan meros oluvchi UchBurchak nomli sinf yarating. Sinf quyidagilardan tashkil topishi lozim: Uchburchakning tomonlarini ifodalovchi, double turidagi tomon1, tomon2 va tomon3 nomli ma’lumot maydonlari.
“Jimlik qoidasiga ko’ra” uchburchakning barcha tomonlarini 1.0 ga ta’minlovchi argumentsiz konstruktor.
Uchburchakning tomonlarini tomon1, tomon2 va tomon3 qiymatlar bilan ta’minlovchi konstruktor.
Uchburchakning yuzasini qaytaruvchi getYuza() nomli funksiya.
Uchburchakning perimetrini qaytaruvchi getPerimetr() nomli funksiya.
tomon1, tomon2 va tomon3 qiymatlariga mos ravishda uchburchak mavjudligini tekshiruvchi bool turini qaytaruvchi UchBurMavjud() funksiyasi; Sinfni ishga tushiring. Foydalanuvchidan uchburchakninig tomonlarini, rangi uchun 1 yoki 0 ni ( ya’ni uchburchak sohasi bo’yalgani yoki bo’yalmaganligini anglatadi) kiritishini talab qiluvchi test dasturi tuzing. Dasturda UchBurchak ob’yekti kiritilgan tomonlar haqidagi ma’lumotlar bilan yaratilsin. Dastur uchburchakning yuzasini, perimetri haqidagi ma’lumotlarni ekranga chiqarishi lozim.
JAVOB:
#include
using namespace std;
class GeometricObject {
public:
double a, b, c;
GeometricObject (){ a-1.8; b-1.8; c=1.0; }
GeometricObject (double a, double b, double c){
}
this->a-a;
this->b=b;
this->c=c;
}}
class UchBurchak public GeometricObject {
public:
void getYuza() {
double p=(a+b+c) *1/2;
cout<}
void getPerimetr() { cout<void UchBurMavjud() {
if(a+b> c&& c+b> a && a+c>b){
cout<else cout<}
};
int main() {
double x, y, z; cin>>x>>y>>z;
GeometricObject G(x, y, z);
Uchburchak U; U.UchBurMavjud();
}
5-masala. Nuqta nomli sinfni yozing. Uch o’lchamli fazodagi nuqtani aniqlovchi UchDNuqta nomli sinf yarating. UchDNuqta sinfi Nuqta sinfidan meros olsin. Unda quyidagi a’zolar bo’lsin:
z-koordinata o’qini tavsiflovchi z nomli ma’lumot maydoni.
(0,0,0) nuqtani tavsiflovchi argumentsiz konstruktor. Ko’rsatilgan koordinatalar bilan ob’yektni yaratuvchi konstruktor.
Sinflarni ishga tushiring. (0,0,0) va (10, 30, 25.5) nuqtalari orasidagi masofani ekranga chiqaruvchi dastur tuzing.
JAVOB:
#include
using namespace std;
class UchDNuqta {
public:
double x,y,z, x1, yl, z1;
UchDNuqta (){ x=0;y=0; z=0; x1=10;y1=30; z1=25.5; }
UchDNuqta (double x, double y, double z, double x1, double y1, double z1){
this->x=x; this->x1=x1;
this->y=y; this->y1=y1;
this->z=z; this->z1=z1;
}
};
class Nuqta public UchDNuqta {
public:
void masofa(){
cout<};
int main() {
UchDNuqta M(0,0,0,10, 30, 25.5);
Nuqta N;
N.masofa();
}
6-masala. MyInteger nomli sinf yarating. Sinf quyidagilardan iborat bo’lsin:
int turidagi qiymat nomli ma’lumot maydoni.
MyInteger ob’yektini yaratuvchi konstruktor.
int qiymatni qaytaruvchi konstanta get funksiyasi.
Agar qiymat juft, toq yoki tub son bo’lsa, u holda isJuft(), isToq(), isTub() true qiymat qaytaruvchi konstanta funksiyalar.
Agar qiymat juft, toq yoki tub son bo’lsa, u holda isJuft(int), isToq(int), isTub(int) true qiymat qaytaruvchi static funksiyalar.
Sinfni ishga tushiring. Sinfdagi barcha funksiyalarni testlovchi dastur yozing.
JAVOB:
#include
using namespace std;
class MyInteger{
public:
int qiymat;
My Integer (){
qiymat=0;
}
MyInteger (int qiymat) {
this->qiymat-qiymat;
}
void isJuft(){
cout<}
void isToq(){
cout<}
void isTub(){
cout<}
}}
int main(){
int qiymat;
cin>>qiymat;
My Integer M(qiymat);
int sum=8;
for (int i=1;i<-qiymat; i++){
if (qiymati--8) sum+=1;
}
if (sum=-qiymat+1) M.isTub();
if (qiymat%2--0) M.isJuft();
if (qiymat%2--1) M.isToq();
}
7-masala. (Massivning o’rta qiymati) Massiv elementlarining o’rta arifmetik qiymatlarini qaytaruvchi, qayta yuklanagan urtacha() nomli funksiyalarni yarating. Funkisya prototiplari quyidagicha: int urtacha(const int* array, int size); double urtacha(const double* array, int size);
O’nta double va int turidagi qiymatlar orqali dasturni testlab ko’ring.
JAVOB:
#include
using namespace std;
double urtacha(int sum, int size) {
return sum/size;
}
int main(){
}
int sum=8;
float size;
cin>>size;
float array[size];
for (int i=0;icin>>array[i];
sum+=array[i];
}
cout<}
8-masala. (Sarala) Quyidagicha berilgan funksiyaning tanasini davom ettiring.
Funksiya massiv elementlarini saralashini tekshiring.
template
bool isSarala(const T list[], int size)
Funksiyani int, double va string turlaridagi qiymatlar bilan tekshiring.
JAVOB:
#include
using namespace std;
int main() {
int arri[5]={4,3,7,1,8};
double arrd[4] ={1.34, 3.14,2.71,8.85};
string arrs [3] ={ "Toshkent", "Navoiy", "Buxoro "};
sort (arri, arri+5);
sort (arrd, arrd+4);
sort (arrs, arrs+3);
for (int i=0;i< 5; i++){
cout<}
cout<for (int i=0;i<4; i++) {
cout<}
cout<for (int i=0;i<3; i++) {
cout<}
9-masala. Asosiy – int funksiya tarkibida Doira nomli sinf yarating va unda doira1, doira2 va doira3 nomli ob’yektlar qurilishini rejalashtiring. Dastlabki ikkita ob’yekt mos ravishda, 10 va 15 qiymatlardagi, uchinchisi esa, jimlik qoidasi qiymatidagi radiuslarda qurilsin. Dastur ishga tushirilganida, yaratilgan ob’yektlarning mos radius qiymatlari va ularning yuzalari konsol oynaga chiqariladigan boʻlsin.
JAVOB:
#include
using namespace std;
class Doira{
public:
double r;
Doira()
{
r=0;
}
Doira (double r)
{
this->r=r;
}
void doiral(){
cout<}
void doira2() {
cout<}
void doira3(){
}
};
int main() {
Doira D1 (10), D2 (15), D3;
D1. doira1();
D2.doira2();
D3.doira3();
cout<}
10-masala. string sinfidan foydalanib dastur tuzing. Dasturda s1, s2 va s3 nomli satrli ob’yektlar hosil qilinsin. Dastur bajarilishida quyidagi ishlar ketma-ketligi amalga oshirilsin:
10.1. s1 ga “Samarqand!” qiymati ta’minlansin;
10.2. s2 ga “Toshkent” qiymati ta’minlansin;
10.3. s3 ga s1 ning dastlabki 5 ta belgisi va 9-indeksidagi belgisi hamda s2 ning dastlabki 4 ta belgisi qoʻshib ta’minlansin; 10.4. s1 va s2 larning qiymatlari to’liq tozalansin;
JAVOB:
#include
using namespace std;
int main() {
}
string s1="Navoiy", s2="Toshkent", s3;
s3=s1.substr(0,5)+s1 [8]+s2.substr(0,4);
cout<cout<cout<s1= "";
s2= "";
cout<cout<11-masala. string sinfidan foydalanib dastur tuzing. Dasturda s1 va s2 nomli satrli ob’yektlar hosil qilinsin. Dastur bajarilishida quyidagi ishlar ketma-ketligi amalga oshirilsin:
11.1. s1 ga “Samarqandga xush kelibsiz!” qiymati ta’minlansin;
11.2. s2 ga “ va Toshkent” qiymati ta’minlansin;
11.3. s1 ning 9-indeksidan boshlab, s2 ning qiymatini kiriting. Bunda s1 satrining qolgan qismi ham s2 qoʻshilgan joydan keyin saqlanib qolsin va s1 konsol oynaga chop etilsin;
11.4. s1 satrdan “qand” qism satri qidirilsin va agar u mavju boʻlsa, nechanchi indeksdan boshlanishi haqidagi sonli qiymat konsolga chiqarilsin.
JAVOB:
#include
using namespace std;
int main(){
string s1="Samarqandga xush kelibsiz!", s2=" va Toshkent";
s1=s1.substr(0,9)+s2+s1.substr(9,s1.size());
cout<cout<}
12-masala. int (sinfi) ma’lumot turi asosida yangi butun nomli (sinf) tur hosil qiling. Ushbu turga mansub sonlar nomli massivni 1, 2, 3, 4, 5, 6 va 7 qiymatlari bilan aniqlang. Ushbu massivni koʻrsatuvchi k nomli koʻrsatkich aniqlang. Dastur ishga tushirilganda, har bir massiv elementlarining manzillari va ularning qiymatlari konsol oynaga chop etilsin.
JAVOB:
#include
using namespace std;
class butun{
public:
int sonlar;
butun(){ sonlar = 0; }
butun (int sonlar) {
void tek() {
cout<}
};
int main() {
int sonlar1[7]={1,2,3,4,5,6,7), sonlar;
for (int i=0;i<7;i++){
sonlar sonlar1[i];
butun b(sonlar);
cout<<&sonlar1[i]<<"
this->sonlar=sonlar; }
b.tek();
}
13-masala. Qiymat almashtiruvchi funksiyalardan iborat boʻlgan dastur tuzing. Funksiyalarning nomlari swap1, swap2, swap3 va swap4 boʻlib, argumentlarni mos ravishda real qiymat, havola, koʻrsatkichni qiymat va koʻrsatkichni havola orqali oladigan boʻlsin. Dasturda son1 va son2 nomli butun oʻzgaruvchilar e’lon qiling va ularni mos ravishda 1 va 2 qiymatlar bilan ta’minlang. Soʻngra, mazkur oʻzgaruvchilar toʻrt xil koʻrinishda, yuqoridagi toʻrtta funksiyaga yuborilsin va funksiyalardan qaytgan qiymatlar konsol oynaga chop etilsin.
JAVOB:
#include
using namespace std;
void swap1(int son1, int son2){
son1=son2-son1; son2-=son1; son1=son2+son1;
cout<}
void swap2(int son1,int son2){
son1=son2-son1; son2-=son1; son1=son2+son1;
cout<}
void swap3(int son1, int son2){
son1=son2-son1; son2-=son1; son1=son2+son1;
cout<}
void swap4(int son1,int son2){
son1=son2-son1; son2-=son1; son1=son2+son1;
cout<}
int main() {
int son1=1, son2=2;
swap1(son1, son2);
swap2 (son2, son1);
swap3 (son1, son2);
swap4 (son2, son1);
}
14-masala. Massivga oid funksiyalardan foydalanib dastur tuzing. massiv nomli, butun turli massiv yarating. Unga dastlabki elementlardan boshlab, mos ravishda,
4, 2, 3, 6, 5 va 1 qiymatlarini ta’minlang. Dastur bajarilishi natijasida, konsol oynada:
14.1. Massivning eng kichik qiymati va uning indeksi;
14.2. Eng katta qiymati va uning indeksi haqidagi ma’lumotlar;
14.3. Massiv elementlari qiymatlarining aralashtirilib yuborilgan holatdagi ketmaketligi;
14.4. Massiv elementlarining oʻsish tartibida saralangan holatdagi ketma-ketligi; 14.5. Hamda, 4 qiymatining nechanchi pozitsiyadan topilganligi haqidagi ma’lumotlar chop etilsin.
JAVOB:
#include
using namespace std;
int main() {
int massiv
min=massiv[0];
[6]={4,2,3,6,5,1},min, max,j,k;
for (int i=0;i<6; i++){
if(massiv[i]<=min)
{ min-massiv[i]; k=i; }
if(massiv[i]>=max) { max=massiv[i]; j=i; }
}
cout<sort(massiv, massiv+6);
for (int i=0; i<6; i++) {
}
cout<cout<for (int i=0; i<6; i++) {
if(massiv[i]==4|| massiv[i]==2||massiv[i]==3|| massiv[i]==6)
cout<}
15-masala. Shablon funksiyadan foydalanib dastur tuzing. int, double va string turlariga mansub massivlar yarating va ularni qiymatlar bilan ta’minlang. Umumiy turli shablon funksiyadan foydalanib, mazkur massiv elementlarini saralab, konsolga chop etuvchi dastur tuzing.
JAVOB:
#include
using namespace std;
int main() {
int arri[5]={4,3,7,1,8};
double arrd [4]={1.34, 3.14, 2.71,8.85};
string arrs [3] = { "Toshkent", "Navoiy", "Buxoro"};
sort (arri, arri+5);
sort (arrd, arrd+4);
sort (arrs, arrs+3);
for (int i=0;i< 5; i++){
cout<}
cout<for (int i=0;i<4;i++) {
cout<}
cout<for (int i=0;i<3; i++) {
cout<}
16-masala. vektor sinfidan foydalanib dastur tuzing. Bitta int turida, ikkita string turida vektorlar hosil qiling. Vektorlarning nomlari mos ravishda v1, v2 va v3 bo’lsin. v1 ga 1 dan 10 gacha boʻlgan butun sonlarni yuklang va konsolga chop eting. v2 ga “Samarqand”, “Toshkent”, “Xiva”, “Buxoro” qiymatlarini yuklang va chop eting. v2 ning soʻnggi elementini oʻchirib tashlang. v2 ning qiymatlarini v3 ga oʻtkazib ta’minlang. v3 ning birinchi elementi sifatida, “Andijon” ni ta’minlang.
v3 ni konsolga chop eting.
JAVOB:
17-masala. Fayllar bilan ishlashga oid dastur tuzing. Talabalarning fandan oʻzlashtirish natijalarini faylga yozish uchun natijalar.txt faylini yarating. Unga “Botirov Qodir 90” koʻrinishidagi ma’lumotlarni (kamida 10 ta talaba haqida) yozing. Faylga yozish oqimini yoping va soʻngra, ushbu fayldan ma’lumotlarni oʻqib, ularni s1 va s2 satrlarga hamda reyting nomli butun turli songa ta’minlang va ularning qiymatlarini konsolga chop ettiring.
JAVOB:
Do'stlaringiz bilan baham: |