Toshkent Axborot taxnologiyalari universiteti
Labaratoriya ishi
Mavzu:______________________________________________
Bajardi:Ravshanjonov F
Tekshirdi:Sanjar Saidqulovich
Kompyuterda ma’lumotlarni qayta ishlashda qidiruv asosiy amallardan biri hisoblanadi. Uning vazifasi berilgan argument bo’yicha massiv ma’lumotlari ichidan mazkur argumentga mos ma’lumotlarni topish yoki bunday ma’lumot yo’qligini aniqlashdan iborat.
Ixtiyoriy ma’lumotlar majmuasi jadval yoki fayl deb ataladi. Ixtiyoriy ma’lumot (yoki tuzilma elementi) boshqa ma’lumotdan biror bir belgisi orqali farq qiladi. Mazkur belgi kalit deb ataladi. Kalit noyob bo’lishi, ya’ni mazkur kalitga ega ma’lumot jadvalda yagona bo’lishi mumkin. Bunday noyob kalitga boshlang’ich (birinchi) kalit deyiladi. Ikkinchi kalit bir jadvalda takrorlansada u orqali ham qidiruvni amalga oshirish mumkin. Ma’lumotlar kalitini bir joyga yig’ish (boshqa jadvalga) yoki yozuv sifatida ifodalab bitta maydonga kalitlarni yozish mumkin. Agar kalitlar ma’lumotlar jadvalidan ajratib olinib alohida fayl sifatida saqlansa, u holda bunday kalitlar tashqi kalitlar deyiladi. Aks holda, ya’ni yozuvning bir maydoni sifatida jadvalda saqlansa ichki kalit deyiladi.
Kalitni berilgan argument bilan mosligini aniqlovchi algoritmga berilgan argument bo’yicha qidiruv deb ataladi. Qidiruv algoritmi vazifasi kerakli ma’lumotni jadvaldan topish yoki yo’qligini aniqlashdan iboratdir. Agar kerakli ma’lumot yo’q bo’lsa, u holda ikkita ishni amalga oshirish mumkin:
Ma’lumot yo’qligini indikatsiya qilish (belgilash)
Jadvalga ma’lumotni qo’yish.
Faraz qilaylik, k – kalitlar massivi. Har bir k(i) uchun r(i) – ma’lumot mavjud. Key – qidiruv argumenti. Unga rec - informatsion yozuv mos qo’yiladi. Jadvaldagi ma’lumotlarning tuzilmasiga qarab qidiruvning bir necha turlari mavjud.
3-topshiriq
#include
#include
#include
void swap(std::list &main, std::list &zaxira)
{
}
int main()
{
int n;
std::list asosiy = {"Azizov","Umarov","Qodirov","Sobirov","Qudratov","Aliyev","Kamolov","Ravshanov","Suhrobov","Karimov","Kamronov","Rajabov"};
std::list zaxira = {"Komilov","Ergashev","Sultonov","Alimboyev","Kozimov","Ro'zmetov"};
std::list::iterator it1=asosiy.begin();
std::list::iterator it2=zaxira.begin();
begin:
std::cout << "Nechta o'yinchi almashtirishni kiriting: " ; std::cin >> n;
if(n > zaxira.size())
{
std::cout << "Buncha ko'p o'yinchi yo'q\n";
goto begin;
}
for (int i = 0 ; i < n ; i++)
{
std::string temp = *it1;
asosiy.push_back(*it2);
zaxira.push_back(temp);
it1++;
it2++;
zaxira.pop_front();
asosiy.pop_front();
}
std::cout << "Asosiy:\n";
for(std::string el : asosiy)
{
std::cout << el << " ";
}
std::cout << std::endl;
std::cout << "Zaxira:\n";
for(std::string el : zaxira)
{
std::cout << el << " ";
}
std::cout << std::endl;
return 0;
}
3-topshiriq bubble sort(pufaksimon)
#include
#include
class Talaba {
public:
std::string name;
int ball;
};
void swapString(std::string* xp, std::string* yp)
{
std::string temp = *xp;
*xp = *yp;
*yp = temp;
}
void swap(Talaba* xp, Talaba* yp)
{
Talaba temp = *xp;
*xp = *yp;
*yp = temp;
}
// An optimized version of Bubble Sort
void bubbleSort(Talaba arr[], int n)
{
int i, j;
bool swapped;
for (i = 0; i < n - 1; i++)
{
swapped = false;
for (j = 0; j < n - i - 1; j++)
{
if (arr[j].ball < arr[j + 1].ball)
{
swap(&arr[j], &arr[j + 1]);
swapped = true;
}
}
// IF no two elements were swapped by inner loop, then break
if (swapped == false)
break;
}
}
/* Function to print an array */
void printArray(int arr[], int size)
{
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
//printf("n");
}
int main()
{
Talaba talaba[3];
talaba[0].name = "Azizov";
talaba[0].ball = 15;
talaba[1].name = "Rustamov";
talaba[1].ball = 22;
talaba[2].name = "Qodirov";
talaba[2].ball = 13;
bubbleSort(talaba, 3);
printf("Saralangan ko'rinishi: \n");
for (int i = 0; i < 3; i++)
{
std::cout << talaba[i].name << "-" << talaba[i].ball << std::endl;
}
return 0;
}
Do'stlaringiz bilan baham: |