Stt21-01 guruh talabsi Bozorboyev Suxrob


Download 41.71 Kb.
bet2/2
Sana17.06.2023
Hajmi41.71 Kb.
#1541880
1   2
Bog'liq
1-amaliy javoblari

Javob : Dasturda obyektlarni yaratish sonini dinamik almashtirish uchun o'zgartirish quyidagicha bo'lishi mumkin:
Obyektlarni saqlash uchun bir massiv yaratamiz. Massivning o'lchami yaratiladigan obyektlar soniga mos kelishi uchun ko'p o'zgaruvchili massivdan foydalanamiz.

4. typeid(*p) == typeid(uchburchak) fragmentga almatirish variantlarini aniqlang va dasturga yozib, tekshirib ko‘ring.


Javob: dynamic_cast operatoridan foydalanish:
if (dynamic_cast(p)) {
t++;
}





IKKINCHI ASSISMENT TOPSHIRIG‘I javobi




Tipni almashtrishga oid berilgan quyidagi dastur bo‘yicha berilgan tophiriqlar kerakli fragmentlari asosida bajaring. Bunda dasturdagi baʻzi o‘zgartirishlarni topish orqali topshiriqlar bosqichma – bosqich amalga oshriladi.

7. Shu dasturning analogini

topshiriqlar

#include
#include
using namespace std;

class Asosiy {


public:
virtual void f() {
cout << "Asosiy sinfi orqali." << endl;
}
};

class MeningSinfim : public Asosiy {


public:
void f() {
cout << "MeningSinfim sinfi orqali." << endl;
}
};

void funk(const int* p) {


int* v;
v = const_cast(p);
*v = 1974;
}

int main() {


Asosiy* bp;
MeningSinfim* dp;
Asosiy b_ob;
MeningSinfim d_ob;

bp = dynamic_cast(&d_ob);


if (bp) {
cout << "Tipni almashtirish (MeningSinfim* => Asosiy*) bajarildi. ";
bp->f();
}
else {
cout << "Xatolik" << endl;
}

dp = dynamic_cast(&b_ob);


if (dp) {
cout << "Xatolik" << endl;
}
else {
cout << "Tipni almashtirish (Asosiy* => MeningSinfim*) bajarilmadi." << endl;
}

cout << endl;


int x = 2023;


cout << "x = " << x << endl << endl;

funk(&x);


cout << "x = " << x << endl;

cout << endl;


double d;


d = static_cast(x);
cout << "x = " << dec << d << endl;

cout << endl;


const char* p = "Salom Samarqand";


x = reinterpret_cast(p);
cout << "x = " << x << endl;

return 0;


}

1. int berilgan o‘zgarmasni tipi almashtirish dastur fragmentining qaysi qismida berilgan. Shu fragmentni float tipdan boshqa tipga almashtirish fragmentini tuzing.
Javob: int türidagi o'zgaruvchini boshqa turga aylantirish uchun "static_cast" foydalaniladi. Quyidagi dastur qismida bunga misol keltirilgan:
int x = 10;
float y = static_cast(x);
Bu misolda, "x" o'zgaruvchisi int turidan float turiga aylantiriladi.

3. static_cast(x); fragmentining qiymatini 0 chiqaradigan qilib dasturni o‘zgartiring.
Javobi:
#include

int main() {


int x = 42;
bool b = (x != 0) ? true : false;
std::cout << "x = " << x << ", b = " << b << std::endl;
x = 0;
b = (x != 0) ? true : false;
std::cout << "x = " << x << ", b = " << b << std::endl;
return 0;
}







UCHINCHI ASSISMENT TOPSHIRIG‘I




Nomlar fazosidan foydalanishga oid berilgan quyidagi dastur bo‘yicha berilgan topshiriqlar kerakli fragmentlari asosida bajaring. Bunda dasturdagi baʻzi o‘zgartirishlarni topish orqali topshiriqlar bosqichma – bosqich amalga oshriladi.

7. Shu dasturning analogi

topshiriqlar va javoblari

#include

namespace NS1 {


class demo {
int i;
public:
demo(int x) { i = x; }
void set(int x) { i = x; }
int get() { return i; }
};

char str[] = "Nomlar fazolarini o'rnatish\n";


int counter;
}

namespace NS2 {


int x, u;
}

int main() {


NS1::demo ob(10);
std::cout << "ob = " << ob.get() << std::endl;
ob.set(99);
std::cout << "Endi ob = " << ob.get() << std::endl;
using NS1::str;
std::cout << str;
using namespace NS1;
for (counter = 1; counter <= 10; counter++)
std::cout << counter << " ";
std::cout << std::endl;
NS2::x = 10;
NS2::u = 20;
std::cout << "o'zgaruvchilar x, y = " << NS2::x << ", " << NS2::u << std::endl;
using namespace NS2;
demo x_ob(x), y_ob(u);
std::cout << "x_ob, y_ob obyektlarning qiymati: " << x_ob.get();
std::cout << " " << y_ob.get() << std::endl;
return 0;
}

1. Dasturdagi std fazosining elementlari
using namespace std; fragmentidan foydalanmasdan qanday o‘zgarishlar kiritilishini aniqlang.
Javobi: using namespace std; fragmenti dasturda std nomlar fazosidagi barcha elementlarni o'z nomlari bilan ishlatish uchun qo'llanilgan. Bu ifoda sayesida, iostream kutubxonasining ichida bo'lgan cout, endl, cin kabi obyektlarni std:: qo'shmasi yozmasdan ham chaqirish mumkin bo'ldi.

2. NS1 fazodagi str ko‘rsatkichining qiymatini o‘zgartirib chiqarish fragmentini yozing.
Javobi : NS1 fazodagi str ko'rsatkichining qiymatini o'zgartirib chiqarish uchun quyidagi kodni ishlatishingiz mumkin:
Kodning yuqoridagi qismida NS1::str[0] = 'Q'; qatorida str ko'rsatkichining birinchi belgisini 'Q' ga o'zgartirish amalga oshirilgan. Bunda NS1::str degan massiv nomi va indeksi yordamida o'zgarish kiritildi. Natijada dastur "Nomlar fazolarini o'rnatish" matnini "Qomlar fazolarini o'rnatish" deb chiqaradi.








Download 41.71 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling