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



Download 0,83 Mb.
bet26/31
Sana01.02.2022
Hajmi0,83 Mb.
#423194
1   ...   23   24   25   26   27   28   29   30   31
Bog'liq
Eshonqulov Erali.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;
}


196-misol. Chap tomonida o‘zidan kichik elementlar, o‘ng tomonda esa o‘zidan kattalari joylashgan “o‘rta” elementni topish dasturini tuzing. (Elementlarning o‘rnini almashtirish protsedurasi va “o‘rta” elementni aniqlash protsedurasidan foydalaning).
197-misol. Endi oldimizga qo‘yilgan maqsad shundan iboratki, biz “o‘rta” dasturini shunday o‘zgartirishimiz kerakki, u nafaqat “o‘rta” elementni aniqlasin, balki shu usuldan foydalangan holda sonli massivni tartiblasin.


198. Bir o‘lchovli massivda 0,1,2 elementlari bor. Ularni birinchi uchta o‘ringa o‘sib borish tartibida ko‘chiring.
#include
using namespace std;
void main()
{
const int n = 10;
int A[n], c;

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


{
A[i] = rand() % 10;
cout << A[i] << " ";
}

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


{
if (A[i] == 0)
{
c = A[1];
A[1] = A[i];
A[i] = c;
}
if (A[i] == 1)
{
c = A[2];
A[2] = A[i];
A[i] = c;
}
if (A[i] == 2)
{
c = A[3];
A[3] = A[i];
A[i] = c;
}
}
cout << "Natija\n";
for (int i = 1; i <= n; i++)
cout << A[i] << " ";

return;
}



199. Inson 1 dan 1000 gacha bo‘lgan sonlarning qaysi birini o‘ylaganini 10 ta savol yordamida aniqlovchi dasturni tuzing. Har bir savol “O‘ylangan son haqiqatdan ham k dan kattami?” ko‘rinishida bo‘lishi kerak. Bunda k aniq son. Insonning javoblari - bu 1 (Ha) va 0 (Yo‘q). Ikkiga bo‘lish g‘oyasini qo‘llang (“bo‘lib yubor va hukmronlik qil”).


200. Ikkita tartiblangan a(n) va b(m) massiv berilgan. Ushbu massiv elementlaridan tartiblangan c(n+m) massiv hosil qiling, ya’ni ikkita tariblangan massivni bitta tartiblangan massivga birlashtiring.

201. Massivni nolga teng elementlarini tashlab yuborgan holda ixchamlang. Nollar massivning oxirgi joylariga qo‘yilsin.

#include


using namespace std;
void main()
{
const int n = 75;
int A[n], i=1, c;

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


{
A[i] = rand() % 10;
cout << A[i] << " ";
}

for (int j = 1; j <= n; j++)
{
if (A[j] == 0)
{
for (int i = j; i <= n - 1; i++)
{
c = A[i];
A[i] = A[i + 1];
A[i + 1] = c;
}
}
}

cout << "\n Natija:\n";
for (int i = 1; i <= n; i++)
cout << A[i] << " ";
}
202. Tasodifiy sonlar funksiyasi yordamida tuzilgan ikkita tartiblangan bir o‘lchovli massivlarda o‘xshash elementlarning sonini aniqlang. (Massivni tasodifiy sonlar funksiyasi yordamida tuzish, kamayish bo‘yicha tartiblash, so‘ngra esa solishtirish kerak).
#include
using namespace std;
void sort(int n, int *A)
{
int k;
for (int i = 1; i <= n - 1; i++) //Massivni saralash jarayoni
for (int j = 1; j <= n - 1; j++)
if (A[j]>A[j + 1])
{
k = A[j];
A[j] = A[j + 1];
A[j + 1] = k;
}
return;
}
int control(int *A, int *B, int n)
{
int S = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
if(A[i] == B[j])
S++;
}
return S;
}
void main()
{
const int n = 500;
int A[n], B[n], S1;

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


{
A[i] = rand() % 100;
B[i] = rand() % 100;
}
cout << "Massiv\n";
for (int i = 1; i <= n; i++)
{
cout << A[i] << " " << B[i]< }
sort(n, A);
sort(n, B);
S1 = control(A, B, n);
cout << "Natija: " << S1 << endl;
}
203. A[N,M] massiv berilgan. Barcha mavjud to‘g‘ri burchakli qism massivlar bo‘yicha to‘g‘ri burchakli qism massivdagi elementlarning maksimal yig‘indisini topish kerak.


Download 0,83 Mb.

Do'stlaringiz bilan baham:
1   ...   23   24   25   26   27   28   29   30   31




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish