Raqamli texnologiyalar fakulteti dasturiy injiniring yo’nalishi



Download 1,57 Mb.
bet47/81
Sana23.06.2022
Hajmi1,57 Mb.
#695199
1   ...   43   44   45   46   47   48   49   50   ...   81
Bog'liq
Dasturiy injiniring Dasturlash 2-4

4-misol. Calculator nomli sinf hosil qiling. Unda asosiy amallar: qo’shish, ayirish, ko’paytirish, bo’lish amallarini bajarish metodlarini hosil qiling. Sinf shablonidan foydalaning
#include
using namespace std;

template


class Calculator {
private:
T num1, num2;

public:
Calculator(T n1, T n2) {


num1 = n1;
num2 = n2;
}

void displayResult() {


cout << "Numbers: " << num1 << " and " << num2 << "." << endl;
cout << num1 << " + " << num2 << " = " << add() << endl;
cout << num1 << " - " << num2 << " = " << subtract() << endl;
cout << num1 << " * " << num2 << " = " << multiply() << endl;
cout << num1 << " / " << num2 << " = " << divide() << endl;
}

T add() { return num1 + num2; }


T subtract() { return num1 - num2; }
T multiply() { return num1 * num2; }
T divide() { return num1 / num2; }
};

int main() {


Calculator intCalc(2, 1);
Calculator floatCalc(2.4, 1.2);

cout << "Int results:" << endl;


intCalc.displayResult();

cout << endl


<< "Float results:" << endl;
floatCalc.displayResult();

return 0;


}
5-misol. BubbleSort algoritmini shablonlar orqali tuzing

// CPP code for bubble sort


// using template function
#include
using namespace std;

// A template function to implement bubble sort.


// We can use this for any data type that supports
// comparison operator < and swap works for it.
template
void bubbleSort(T a[], int n) {
for (int i = 0; i < n - 1; i++)
for (int j = n - 1; i < j; j--)
if (a[j] < a[j - 1])
swap(a[j], a[j - 1]);
}

// Driver Code


int main() {
int a[5] = {10, 50, 30, 40, 20};
int n = sizeof(a) / sizeof(a[0]);

// calls template function


bubbleSort(a, n);

cout << " Sorted array : ";


for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;

return 0;


}

6-misol. Berilgan ikkita qiymatni o’zaro almashtirish funksiyasini funksiya shabloni orqali tuzing.

#include


using namespace std;
template
void func_swap(T &arg1, T &arg2)
{
T temp;
temp = arg1;
arg1 = arg2;
arg2 = temp;
}
int main()
{
int num1 = 10, num2 = 20;
double d1 = 100.53, d2 = 435.54;
char ch1 = 'A', ch2 = 'Z';
cout << "Original data\n";
cout << "num1 = " << num1 << "\tnum2 = " << num2<cout << "d1 = " << d1 << "\td2 = " << d2<cout << "ch1 = " << ch1 << "\t\tch2 = " << ch2<func_swap(num1, num2);
func_swap(d1, d2);
func_swap(ch1, ch2);
cout << "\n\nData after swapping\n";
cout << "num1 = " << num1 << "\tnum2 = " << num2<cout << "d1 = " << d1 << "\td2 = " << d2<cout << "ch1 = " << ch1 << "\t\tch2 = " << ch2<return 0;
}

21-22-AMALIY MASHG’ULOT. ISTISNOLI HOLATLAR VA ULARNI QAYTA ISHLASH. ISTISNOLI HOLATLARNI KONSTRUKTORLARDA GENERASIYA QILISH. ISTISNOLI HOLATLAR VA VORISLIK. ISTISNOLI HOLATLAR SPESIFIKASIYASI. ISTISNOLI HOLATLAR SINFLARI



1-misol. Qaytish kodlari ishlamasa qayta foydalanish mumkin bo'lgan kodni yozishda xatolarni qayta ishlashga ehtiyoj bor. Mumkin bo'lgan xatolarni hal qilishning eng keng tarqalgan usullaridan biri bu return operatori qaytaradigan qaytarish kodlaridan (yoki "chiqish kodlari") foydalanishdir. Masalan:
int findFirstChar(const char* string, char ch)
{
// Satrdagi har bir belgini ko'rib chiqish
for (int index=0; index < strlen(string); ++index)
// Agar joriy belgi ch o'zgaruvchining qiymatiga
//mos kelsa, u holda ushbu belgi indeksini qaytaring
if (string[index] == ch)
return index;
// Agar mos keladigan topilmasa, -1 ni qaytaring
return -1;
}
Bu funksiya uzatilayotgan satrning ch o‘zgaruvchisi qiymatiga mos keladigan birinchi belgisi indeksini qaytaradi. Agar belgi topilmasa, funktsiya xato ko'rsatkichi sifatida -1 ni qaytaradi.
2-misol. Bu yerda xatoliklarni qayta ishlash mexanizmi kerak, chunki agar foydalanuvchi b parametri sifatida 0 ni o'tkazsa, u muvaffaqiyatsiz bo'ladi. Bundan tashqari, funktsiya static_cast (a) / b operatsiyasining natijasini ham qaytarishi kerak. Buni qanday qilish mumkin? Variantlardan biri amal natijasini yoki yakuniy kodni mos yozuvlar bo'yicha qaytarishdir, masalan:
#include
using namespace std;
double divide(int a, int b, bool &success)
{
if (b == 0)
{
success = false;
return 0.0;
}

success = true;


return static_cast(a)/b;
}

int main()


{
bool success;
double result = divide(7, 0, success);
// operatsiya muvaffaqiyatli bo'ladimi yoki yo'qligini
//oldindan bilish uchun biz hozir bool qiymatini o'tkazmoqdamiz

if (!success)


// resultdan foydalanishdan oldin operatsiya natijasini tekshiring
cerr << "Xatolik yuz berdi" << endl;
else
cout << "Natija: " << result << '\n';
}

Istisnolar. Istisnolarni qayta ishlash xatolarni yoki boshqa istisno holatlarni kodni bajarishning umumiy oqimidan ajratish mexanizmini ta'minlaydi. Bu muayyan vaziyatlarda ko'proq erkinlik beradi, shu bilan birga kodlarni qaytaradigan tartibsizliklarni kamaytiradi.
Quyida biz C++ da istisnolardan foydalanish tamoyillarini ko'rib chiqamiz.


Download 1,57 Mb.

Do'stlaringiz bilan baham:
1   ...   43   44   45   46   47   48   49   50   ...   81




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish