Olimpiada masalalari


Shaxmat doskasining birinchi chizig‘ida oq figuralarni (2 ta ot, 2 ta fil, 2 ta ladya, ferz va shoh) nechta usulda qo‘yib chiqish mumkin? 190



Yüklə 0,83 Mb.
səhifə30/34
tarix30.03.2023
ölçüsü0,83 Mb.
#91326
1   ...   26   27   28   29   30   31   32   33   34
Olimpiada masalalari

189. Shaxmat doskasining birinchi chizig‘ida oq figuralarni (2 ta ot, 2 ta fil, 2 ta ladya, ferz va shoh) nechta usulda qo‘yib chiqish mumkin?
190. Hech bir uchtasi bitta nuqtada yotmaydigan, qavariq n-burchakning ichida yotgan diagonallarning kesishish nuqtalari sonini aniqlang.

QIYIN MASALALAR



191-misol. Foydalanuvchi tomonidan ko‘rsatilgan massiv elementini qo‘shni elementlari bilan ketma-ket o‘rin almashtirish orqali boshiga, ya’ni birinchi o‘ringa o‘tkazing.
#include
#include

using namespace std;


int main(int argc, char *argv[])
{
int const n = 10;
int A[n],k,c;
cout << "Massiv:\n";
for (int i = 1; i <= n; i++)
{
A[i] = rand() % 10;
cout << A[i] << " ";
}
cout << endl;
cout << "Nechanchi elementni birinchi o'ringa chiqarish kerak?";
cin >> k;
for (int i = k; i >= 2; --i)
{
c = A[i-1];
A[i - 1] = A[i];
A[i] = c;
}
cout << "Almashgan ko'rinishi:";
for (int i = 1; i <= n; i++)
cout << A[i] << " ";
cout << endl;
}


193-masala. Massiv berilgan. Bunda foydalanuvchi ushbu massivdagi a ga teng elementni, k –joyga ko’chirish kerak.

#include


#include

using namespace std;


int main(int argc, char *argv[])
{
int const n = 10;
int A[n], k, c, k1, a;
cout << "Massiv:\n";
for (int i = 1; i <= n; i++)
{
A[i] = rand() % 10;
cout << A[i] << " ";
}
cout << endl;
cout << "Qaysi element?";
cin >> a;
cout << "Qaysi o'ringa?";
cin >> k;
for (int i = 1; i <= n; i++)
if (A[i] == a)
{
k1 = i;
break;
}

if (k1 < k)


{
for (int i = k1; i <= k - 1; i++)
{
c = A[i + 1];
A[i + 1] = A[i];
A[i] = c;
}
}
else
{
for (int i = k1; i >= k+1; i--)
{
c = A[i - 1];
A[i - 1] = A[i];
A[i] = c;
}
}

cout << "Almashgan ko'rinishi:";


for (int i = 1; i <= n; i++)
cout << A[i] << " ";
cout << endl;
}


194-misol. O‘sish bo‘yicha tartiblangan massivga berilgan sonni shunday joylashtiringki, massiv tartibi buzilmasin.

Matematik tahlil va algoritm tuzish

10 ta sondan iborat bo‘lgan, o‘sish bo‘yicha tartiblangan massiv berilgan bo‘lsin:




12 23 34 45 56 58 78 89 90 98
1 2 3 4 5 6 7 8 9 10 11
Massivga joylashtirish kerak bo‘lgan son 75 bo‘lsin.
Bizga ma’lum bo‘lgan tezkor qidiruv usuli yordamida, bu son massivning 6-nomerdagi elementi, ya’ni 58 dan keyin qo‘yilishi kerakligini aniqlaymiz.
So‘ngra 8- nomerdagi elementdan boshlab, barcha massiv elementlarini 1- element o‘ngga ko‘chirish kerak (o‘rin almashtirish jarayonini biz oldin ham bajargan edik, lekin bu masalada elementning 11 nomeridagi qiymati saqlanib qolishi to‘g‘risida qayg‘urish kerak emas, chunki uning o‘zi yo‘q, aniqrog‘i u nolga teng, shuning uchun o‘rin almashtirishni oddiy ko‘chirish bilan almashtirish mumkin, ya’ni 11 nomerdagi elementga 10 nomerdagi element qiymatini, 10 ga esa 9 nikini va h.k berib qo‘yish mumkin).
Undan keyin esa 7- nomerdagi element o‘rniga berilgan sonni joylashtirish kerak.
Buning uchun esa massivni tariflash paytida, massiv 1 ta elementga uzun bo‘lib qolishini hisobga olish, ya’ni massivni berilgan konstantaga nisbatan 1 taga katta deb ta’riflash kerakligi bizga ravshan.
#include
#include

using namespace std;


int main(int argc, char *argv[])
{
int const n = 10;
int A[n], a, k=0, c;
cout << "Kiritiladigan element: a="; cin >> a;

for (int i = 1; i <= n - 1; i++)


{
cin >> A[i];
if (a >= A[i])
k = i + 1;
}
if (k == 0)
k = 1;

for (int i = n; i >= k + 1; i--)


{
A[i] = A[i - 1];
}
A[k] = a;

for (int i = 1; i <= n; i++)


cout << A[i] << " ";
cout << endl;
}


195-misol. O‘sish bo‘yicha tartiblangan massivga tartib qoidasini buzmagan holda berilgan sonni kiriting. Oldingi masaladagi dasturni shunday o‘zgartiringki, tartiblangan massivga boshqa sonli massiv qo‘shilsin, yangi massiv esa tartiblangan bo‘lsin.
#include
#include

using namespace std;


int main(int argc, char *argv[])
{
int const n = 10, m=3;
int A[n+m], B[m], a, k=0, c, j=1;

for (int i = 1; i <= m; i++)
{
cout << "B="; cin >> B[i];
}

for (int i = 1; i <= n; i++)


{
cin >> A[i];
if (A[i] <= B[1])
k = i + 1;
}
if (k == 0)
k = 1;

for (int i = n+m; i >= k + m; i--)
{
A[i] = A[i - m];
}

for (int i = k; i <= k + m-1; i++)


{
A[i] = B[j];
j++;
}

for (int i = 1; i <= n+m; i++)
cout << A[i] << " ";
cout << endl;
}



Yüklə 0,83 Mb.

Dostları ilə paylaş:
1   ...   26   27   28   29   30   31   32   33   34




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