2-tajriba ishi. Qidiruv usullarini tadqiq qilish



Yüklə 33,22 Kb.
tarix14.12.2023
ölçüsü33,22 Kb.
#177300
2-nd ish



Toshkent axborot texnologiyalari universiteti
Dasturiy injinering fakulteti 317-guruh talabasi
Doniyorov Nurbekning
Malumotlar tuzilmasi va algoritimlar
fanidan 2- amaliy topshiriq
Fan o‘qituvchisi: Nurdullayev Alisher Niyatillayevich


2-tajriba ishi. QIDIRUV USULLARINI TADQIQ QILISH

Ishdan maqsad: talabalar berilgan tuzilmaning shakliga qarab biror kalitga mos elementni qidirishning optimal usulini qo’llashni o’rganishlari va qidiruv usullarining samaradorligini taqqoslashlari kerak.
Qo’yilgan masala: topshiriq variantidagi masalani so’ralayotgan qidiruv usuli yordamida yechishning C++ tilidagi dasturini yaratish ko’nikmasiga ega bo’lish.
Ish tartibi:

  • Laboratoriya ishi nazariy ma’lumotlarini o’rganish;

  • Berilgan topshiriqning algoritmini ishlab chiqish;

  • C++ dasturlash muhitida dasturni yaratish;

  • Natijalarni tekshirish;

  • Hisobotni tayyorlash va topshirish.

Ketma-ket" qidiruv algoritmi, bir elementni bir qator elementlar ro'yxati (masalan, massiv yoki ketma-ket) ichida qidirish va topish uchun ishlatiladi. Ushbu algoritm kerakli elementni efektiv va tezroq topishni ta'minlaydi.

№ :7
1. Ketma-ket qidiruv usulidan foydalanib ro‘yhatda har ikkinchi elementni qidiring va taqqoslashlar sonini aniqlang.


#include
#include

using namespace std;

int main() {
vector ro_yhat = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

vector ikkinchi_elementlar;


for (int i = 1; i < ro_yhat.size(); i += 2) {
ikkinchi_elementlar.push_back(ro_yhat[i]);
}

int taqqoslashlar_soni = ikkinchi_elementlar.size();

cout << "Ro'yhatning har ikkinchi elementlari: ";
for (int element : ikkinchi_elementlar) {
cout << element << " ";
}

cout << endl << "Taqqoslashlar soni: " << taqqoslashlar_soni << endl;

return 0;
}
Yuqoridagi kod ishchi holatida hech qanday izohlarsiz.
Dastur ishlayotganidan namuna :

2. Erotosfen elagi usuli bo‘yicha N o‘lchovli massiv hosil qilinsin.Keyin foydalanuvchi kiritgan tub sonni tub sonlar Ichida nechanchi o‘rinda ekanligi aniqlansin.Chiziqli qidirish operatoridan foydalanilsin.
#include
#include
#include

using namespace std;

void eratosthenesSieve(int n, vector& primes) {
primes.resize(n + 1, true);
primes[0] = primes[1] = false;
int sqrtN = sqrt(n);

for (int i = 2; i <= sqrtN; ++i) {


if (primes[i]) {
for (int j = i * i; j <= n; j += i) {
primes[j] = false;
}
}
}
}

int main() {


int N;
cout << "Massivning o'lchamini kiriting: ";
cin >> N;

vector primes;


eratosthenesSieve(N, primes);

int tub_son;


cout << "Tub sonni kiriting: ";
cin >> tub_son;

int o_rinlar_soni = 0;


for (int i = 2; i <= N; ++i) {
if (primes[i]) {
o_rinlar_soni++;
if (i == tub_son) {
cout << tub_son << " tub soni " << o_rinlar_soni << " o'rinda joylashgan" << endl;
break;
}
}
}

return 0;


}
eratosthenesSieve funksiyasi, Eratosthenes elek usulini amalga oshirib primes vektorini yangilaydi. Ushbu usul orqali, tub sonlar ro'yxatini hosil qildi
Dasturni bajarish vaqti, biz massiv o'lchamini (N) kiritmasini so'raymiz,nechta tub songacha elakdan o`tkazish uchun . Keyin, tub sonni kiritishni so'raymiz. Natijada, dastur tub sonning massivda nechanchi o'rinda ekanligini ekranga chiqaradi.
Tub son ekanligini aniqlashda sonni ildizidan chiqqan sonlargacha bo`lib boramiz shungacha bo`linmasa demak tub son bu matematiklar tiomonidan isbotlangan.


Ustoz hozirda boshqa tilni o`rganayotganligim sababli qo`limdan kelganicha harakat qildim .
Iltimos yaxshiroq ball qo`yib bering avvalgi deadlinelarda sog`lig`im sababli yo`q edim .
Endi yanada yaxshi harakat qilaman ustoz

Yüklə 33,22 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin