Massiv elelmentlarini tartiblashtirish. Matritsa maksimal, minimal elementlarini aniqlash algoritmi



Download 23,08 Kb.
bet1/2
Sana23.06.2022
Hajmi23,08 Kb.
#696625
  1   2
Bog'liq
2 - lesson (internet)


Massiv elelmentlarini tartiblashtirish. Matritsa maksimal, minimal elementlarini aniqlash algoritmi.
Massivlar haqidagi m asalalar ichida eng ko ‘p uchraydigani bu uning elementlarini o ‘sish yoki kamayish tartibida tartiblash masalasidir. Bu muammoni hal qilishning usullari k o ‘p b o ‘lib, ulardan birortasini boshqasidan ustun q o ‘yib bo ‘lmaydi. Har bir usul elementlar joy lashuviga k o ‘ra boshqasidan yaxshi b o ‘lishi mumkin.
1-usul. A[l\N ] massiv elementlarini o ‘sish tartibida tartiblash talab qilingan bo‘lsin.
Berilgan massiv elementlari ichidan eng kichigini topib, uning o ‘rni 1-element bilan almashtiriladi. Shu bilan 1-element tartiblandi. Endi 2-element tartiblanadi. Buning uchun qolgan elementlar ichidan eng kichigi topilib, uning o ‘mi 2-element bilan almashtiriladi va hokazo. Bu jarayon N -1 marta takrorlanganda tartiblash ham tugaydi. Bu usul uchun kod quyidagicha yoziladi:
# include
int mainQ
{
int min, a, j, k;
int i; int b [ 10]={56, 88, 75, 65, 78, 82, 79, 81, 68, 72};
f o r (i=0; i<=8; i+ + ) {
m in=b[i]; k=I;
f o r ( j= i+ l; j< = 9 ; j + + ) if (b[j]
a= b[i]; b[i]=b[k]; b[k]=a;j
f o r (i=0; i<=9; i+ +)
c o u t « b [ i ] « ” , “;
return 0;
}
Bu usul eng kichik elementni chiqarish usuli deyiladi.
2-usul. Ko ‘piksim on usul. Bu usulning asosiy g ‘oyasi yengil elementlarni yuzaga chiqarishdan iborat bo"lib, xuddi suv ichidan chiqayotgan pufakchalam i eslatadi. Yengil elementlar “vazni” darajasida 94 borgan sari yuqorilab boradi. Buning ucliun birinchi elementdan boshlab, hamma elementlari o ‘z yonida turgan element bilan taqqoslanadi. Agar a[i] > a[i + 1] bo ‘lsa, u holda bu elementlar o ‘mi o ‘zaro almashtiriladi. Tekshirish yana boshidan boshlanadi.
# include < io stream .h >
int mainQ
{ int a, i, k;
int b [1 0 ]= {5 6 , 88, 75, 65, 78, 82, 79, 81, 68, 72};
f o r (i= 0 ; i< = 8 ; i+ + )
i f ( b [ i ] > b [ i + l j ) { a = b [ij; b [ i] = b [ i + l] ; b [ i + l ] = a ; i = - l ;}
f o r (i= 0 ; i < —9; i+ + )
c o u t « b [ i ] «
return 0;
i
j
5-masala: 5(5, 5) butun sonli massiv berilgan b o isin . Uning har bir satridagi eng katta elementlar orasidagi eng kichigi topilsin.
Yechish g ‘oyasi. Dastlab har bir satrdagi eng katta elementlardan I [5] massivni hosil qilamiz. So‘ngra A ning eng kichik elementi topi ladi. Bu g ‘oyaga mos kod quyidagicha yoziladi:
# include
int main()
{ int a[5];
int b[5][5]= {2, 4, 4, 2, 3, 4, 5, 4, 3, 2, 6, 8, 9, 1, 2, 3, 4, 5, 4, 3,
4, 4, 4, 8, 7};
fo r (i=0; i<=4; i+ + ) {
m ax=b[i][0];
fo r ( j = l ; j < = 4 ;j+ + )
if (m ax
kichik=a[0'];
fo r (i= l; i<=4; i+ + ) if (kichik>a[i]) kichik=a[i];
c o u t « “Izlangan element— ”« k i c h i k « “ ”;
return 0;
95

Ushbu kod uchun kom pyuter quyidagi natijani beradi:


Izlangan element= 4
6.3. Massivlardan satrlarni qayta ishlashda foydalanish Biz yuqorida massivlardan satrlarni ham qayta ishlash uchun foydalanish mumkinligi haqida fikr bildirgan edik. Buning uchun bizga belgili tipdagi massivlar qo ‘l keladi.
Belgili massivlami ikki xil usulda e ’lon qilish mumkin:
a) char satr[] = “first
b) char sa tr[5 ]= { f \ 7 V
‘s
‘t \ 0 ’};
C++ tilida a-usul bilan e ’lon qilingan m assiv elementlarining soni ko’rsatilmagan bo ‘lsa ham qiymatidagi belgilar sonidan kelib chiqqan holda satr massivini 6 elementli deb qabul qilinadi. Oxirgi elementni C++ tili to ‘g ‘ridan-to‘g ‘ri nol element (\0) sifatida tan oladi va u satm ing tugaganligini anglatadi. Satrlarni ifodalovchi barcha belgili m assivlar ana shu belgi bilan tugashi shart.
Satr (yoki matn) belgili m assiv 1oo‘lgani uchun uning alohida elementlariga sonli massivlardagi kabi indekslardan foydalangan holda murojaat qilish mumkin. Masalan, yuqoridagi misollarda satr[0] element uf harfiga, satr[6 ] esa nol elementga (“\0”) mos keladi.
Shuningdek, satrli m a’lumotlami cin operatori yordamida klaviatura orqali ham kiritish mumkin. Masalan, char satr[20];
buyrug’i uzunligi 20 ta, eng yuqori indeksi 19 b o lg an belgili massivni e ’lon qiladi. Unga klaviatura orqali qiymat berish uchunc in » s a t r ;
buyrug’idan foydalanish mumkin. Kompyuter bu buyruqqa javoban klaviaturadan kiritilgan satming oxiriga “\0” belgisini qo‘shib o ‘qiydi. Shuni yoddan chiqarmaslik kerakki, klaviaturadan kiritilgan bu satrning uzunligi 20 dan kichik bo’lishi mumkin, aks holda, dastumi bajarish vaqtida xatolik yuzaga keladi.
Belgili massiv elementlarini cout yordamida ekranga chiqarish ham mumkin. Buning uchun 96

c o u t «


sa tr;
ko ‘rsatmasi yetarli. Bu holda indekslar diapazonini k o ‘rsatish shart emas. Faqat zarur bo‘lganda bo ‘sh joy (probel) belgilari o ‘m iga belgisini qo‘yish lozim bo‘ladi. Quyidagi dastur kodiga e ’tibor bering.
# include
int main()
/
I
char satr 1 [20];
char sa tr2 []= ’’Assalomu alaykum ”;
cout « “Uzunligi 20 tagacha bo ‘Igan matn kiriting\n ”;
cin » s a t r l ;
c o u t « s a t r 2 « “\n ”;
fo r (int i=0; s a trl[i]!= O’; i+ + )
c o u t « s a t r l [i];
c o u t « “\n ”;
return 0;
}
Ushbu dastumi ishga tushiramiz:
Uzunligi 20 tagacha bo‘lgan matn kiriting
C++_ga_xush_kelibsiz
Assalomu alaykum
C++_ga_xush_kelibsiz
Tekshirish uchun savol va topshiriqlar
1. M assiv nima?
2. Qanday turdagi m assivlami bilasiz?
3. C++ tilida m assivlar qanday e ’lon qilinadi?
4. Massivning biror elementiga qanday murojaat qilish mumkin?
5. Quyidagi masalalar uchun dastur ishlab chiqing.
a) Natural N soni va A( \ :,¥) butun sonlar jadvali berilgan. Uning
nomeri toq, o ‘zi juft b o ‘lgan elementlar yig‘indisi topilsin.
b) A( 1:30) haqiqiy sonlar jadvali berilgan. Hisoblang:
m ax(a,+a}0, a 2+a2g, .... a I5+ a16).
97
c) Natural N soni va A (l :N) butun sonlar jadvali berilgan. Unda
necha xil element uchraydi? (Bir xil elementlar bitta element deb
hisoblanadi.)
d) N *M o ‘lchovli A matritsaning har bir satridagi eng katta ele­
m entlar ro ‘yxatini aniqlang.
e) N> o ‘lchovli A matritsaning har bir satridagi eng kichik ele­
m entlar orasidan eng kattasi topilsin.


Download 23,08 Kb.

Do'stlaringiz bilan baham:
  1   2




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