Tatu sf tt 103-gurux talabasi raxmova oyshaning 6-hafta mustaqi ishi


Download 125.6 Kb.
Sana10.04.2020
Hajmi125.6 Kb.

TATU SF TT 103-GURUX TALABASI RAXMOVA OYSHANING 6-HAFTA MUSTAQI ISHI

  1. Funksiya shabloni tushunchasini to’liq tavsiflab bering.

Javob:

C++ da umumiy turlardan foydalangan holda shablon funksiyalar va sinflar yaratish mumkin. Shablon funksiyalar va sinflar ko’plab turli ma’lumot turlari bilan ishlay oladi.

C++ da umumiy tur uchun dasturlash mumkin. Misol uchun, umumiy turdagi ikki sondan kattasini aniqlovchi funksiya yaratdingiz. Agar siz funksiyani int argumentlar uchun chaqirishingiz kerak bo’lsa, u holda umumiy tur int turi bilan almashitiriladi. Agar siz funksiyani ikki double argumentlar uchun chaqirmoqchi bo’lsangiz, u holda umumiy tur double turi bilan almashtiriladi.

Shablonlar sinflar va funksiyalarda turlarni parametrlashtirish imkonini beradi. Siz funksiyalar va sinflarni umumiy tur bilan aniqlay olasiz. Keyinchalik ular kompilyator tomonidan aniq bir tur bilan ishlatiladi.


  1. 12.1-listindagi maxValue funksiyasiga ikki xil turdagi argument bera olamizmi, misol uchun maxValue(1, 1.5) kabi? Javoblaringizni batafsil izohlang.

Javob:

So’ralgan funksiyaga ikki turda argument yuborib bo’lmaydi. Chunki, shablon funksiya unga argument yuborilganda funksiya ushbu argumentning turini aniqlab, o’sha turni qo’llab quvvatlovchi funksiyaga aylanadi. Shuning uchun ikki turda qiymat yuborganimizda xatolik sodir boladi.



  1. Quyidagi dastur kodidagi xatolikni izohlang.





Javob:

Yuqoridagi dastur kodida T turdagi o’zgaruvchi orqali shablon yaratilgan. Lekin funksiya tanasida faqat butun, ya’ni, int turidagi ma’lumot bilan ishlash mumkin. Chunki, result o’zgaruvchisi int turida e’lon qilingan. Agar qiymat haqiqiy yoki belgili turda yuborilsa, u holda dastur bu qiymatni int turiga o’tkazadi. Agar qiymat satr sifatida yuborilsa xato yuzaga keladi. Shuning uchun result o’zgaruvchisini ham T turida e’lon qilish kerak



  1. (Binar qidirish) Massiv elementlarini binary qidirish usuli orqali qidiruvchi funksiya yarating. Funksiyani int, double va string turlaridagi qiymatlar bilan tekshiring.

  2. #include

  3. #include



  4. using namespace std;



  5. template

  6. void sort(T list[], int listSize)

  7. {

  8. for(int i = 0; i < listSize; i++)

  9. {

  10. T currentMin = list[i];

  11. int currentMinIndex = i;



  12. for (int j = i + 1; j < listSize;j++)

  13. {

  14. if (currentMin > list[j])

  15. {

  16. currentMin = list[j];

  17. currentMinIndex = j;

  18. }

  19. }





  20. if (currentMinIndex != i)

  21. {

  22. list[currentMinIndex] = list[i];

  23. list[i]= currentMin;

  24. }

  25. }

  26. }



  27. template

  28. void printArray(const T list[], int listSize)

  29. {

  30. for (int i = 0; i < listSize - 1; i++)

  31. {

  32. cout << list[i] << " ";

  33. }

  34. cout << endl;

  35. }





  36. int main()

  37. {

  38. int list1[] = {3, 4, 5, 2, 6, 3};

  39. sort(list1, 6);

  40. printArray(list1, 6);



  41. double list2[] = {3.5, 7.2, 6.7, 5.4, 1.3};

  42. sort(list2, 5);

  43. printArray(list2, 5);



  44. string list3[] = {"Samarqand", "Jizzax", "Qashqadaryo", "Surxondaryo", "Andijon"};

  45. sort(list3, 5);

  46. printArray(list3, 5);





  47. return 0;

  48. }

Natija:



  1. (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:

Dastur kodi:

#include

#include
using namespace std;
template

bool isSarala(const T list[], int size)

{

int sum = 0;



for(int i = 0, j = 1; i < size - 1; i++, j++)

{

if(list[i] < list[j])



sum++;

}

if(sum == size - 1)return true;



else return false;

}

template



void printArray(const T list[], int listSize)

{

if(isSarala(list, listSize) == 1)



{

cout << "Massiv elementlari saralangan" << "\n";

}

else


cout << "Massiv elementlari saralanmagan" << endl;

}

int main()



{

int list1[] = {1, 2, 3, 4, 5, 6};

printArray(list1, 6);
double list2[] = {3.5, 7.2, 6.7, 5.4, 1.3};

printArray(list2, 5);


string list3[] = {"Samarqand", "Jizzax", "Qashqadaryo", "Surxondaryo", "Andijon"};

printArray(list3, 5);


return 0;

}


  1. (Qiymatlarni almashtir) Ikki o’zgaruvchining qiymatini almashtiruvchi umumiy funksiya yarating. Funksiya bir turda ikki parameter bo’lishi lozim. Funksiyani int, double va string turlaridagi qiymatlar bilan tekshiring.

Javob:

Dastur kodi:



Natijasi:


Download 125.6 Kb.

Do'stlaringiz bilan baham:




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