Toshkemt axborot texnologiyalari universiteti kompyuter injineringi


Download 26.82 Kb.
Sana02.06.2024
Hajmi26.82 Kb.
#1835044
Bog'liq
3 mavzu


MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKEMT AXBOROT TEXNOLOGIYALARI
UNIVERSITETI
KOMPYUTER INJINERINGI fakulteti

M215-22 KIo‘-guruh talabasi
Maxamadiyev Odiljonning
Ma’lumotlar tuzilmasi va algoritmlarfanidan tayyorlagan
3-Amaliy ishi


Toshkent – 2023



Ishning maqsadi: Rekursiya tushunchasi, turlari va rekursiv triadani
o'rganish, C++ tilidagi muammolarni hal qilishda rekursiv triadani ishlab
chiqishni o'rganish va samaradorligini tahlil qilish.
Topshiriq: Rekursiya yordamida oldingi topshiriq uchun dastur yozing. Rekursiv triadani ishlab chiqish. Rekursiv algoritm uchun rekursiv chaqiruv daraxtini yarating.
N o'lchamdagi massiv berilgan. K dan L gacha (1 < K ≤ L ≤N) bo'lgan raqamlardan massivning o'rta-geometrik qiymatini topish funktsiyasini tuzing.
Yechim:
VARIANT №: 5
Rekursiv triadani ishlab chiqamiz.
Parametrlash: K, L – massiv elementlaring tartib raqami (butun son) N massiv elementlaring soni. 1 < K ≤ L ≤ N chunki o’rta geometrik ifodaning qiymatini qanoatlantirish uchun.
Rekursiya bazasini yaratish: K = L holat uchun rekursiya shartini qanaotlantiruvchi o’z o’zini qayta chaqirish holati ishlamaydi.Qolgan holatlarda quyidagi formula orqali o’rta geomerik ifodani hisoblab topamiz. K dan L gacha tartib raqamda bo’lgan massiv elelmentlrining ko’paytmasini L-K+1 – ildiz ostidan chiqaramiz.
Dekompozitsiya: K > L yoki L > N holatlar uchun rekursiv funksiya notg’ri ishlashi mumkin. Chunki boshlang’ich nuqta chegaradan katta bo’lishi mumkin emas. N esa massiv elemaentlari soni.
Yechim dasturi:





Kodi:
#include
#include

// Rekursiv algoritmani yozish
double rekursivOrtaGeometrik(int arr[], int start, int fin) {
// O'rtadagi elementlarni topish
if (start <= fin) {
int mid = start + (fin - start) / 2;

// O'rta-geometrik qiymatni hisoblash
double ortaGeometrikQiymat = sqrt(arr[mid]);

// Qo'shimcha rekursiv chaqiruvlar
double ongYuz = rekursivOrtaGeometrik(arr, mid + 1, fin);
double chapYuz = rekursivOrtaGeometrik(arr, start, mid - 1);

// O'rtadagi qiymatlarni bir-biriga ko'paytirish
return ortaGeometrikQiymat * sqrt(ongYuz * chapYuz);
}
return 1.0;
}

// Massiv o'lchamini so'rab olish uchun funksiya
int massivOlchamniKiritish() {
int N;

std::cout << "Massiv o'lchamini kiriting: ";
std::cin >> N;

return N;
}

// Massiv elementlarini kiritish uchun funksiya
void massivElementlariniKiritish(int arr[], int N) {
std::cout << "Massivni elementlarini kiriting:\n";
for (int i = 0; i < N; ++i) {
std::cout << "Element #" << i + 1 << ": ";
std::cin >> arr[i];
}
}

// Dastur boshlanishi
int main() {
// Massiv o'lchamini olish
int N = massivOlchamniKiritish();
int K, L;

// Massivni to'ldirish
int* arr = new int[N];
massivElementlariniKiritish(arr, N);

std::cout << "K ning qiymatini kiriting: (1
std::cin >> K;
std::cout << "L ning qiymatini kiriting: (K
std::cin >> L;

// Rekursiv algoritmani chaqirish
double natija = rekursivOrtaGeometrik(arr, K, L);

// Natijani chiqarish
std::cout << "O'rta-geometrik qiymat: " << natija << std::endl;

// Dynamic massivni bo'shatish
delete[] arr;

return 0;
}
Download 26.82 Kb.

Do'stlaringiz bilan baham:




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