1. DASTURLASH 1 1
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
URGANCH FILIALI
DASTURLASH2
OLE, MFC texnologiyalari. Ko’p oynali
muhitlar bilan ishlash. Visual C++ muhitida
ko’p oynali muhit yaratish.
13
MAVZU
Sonli sinflar bilan ishlash.
6
Ma’ruza
Ma’ruzachi
Ass. Yusupova J
3. DASTURLASH 1
Mа’ruza rejasi
3
Qo’shimcha sonli sinflar.
4
Complex sonli sinf va funksiyalari.
1
Vallaray sonli sinf va funksiyalari.
2
Slice va gslice sonli sinf va funksiyalari.
3
Xulosa
5
4. DASTURLASH 3 4
Complex sonli sinf va funksiyalari.
C++ standarti kutubxonasidagi kompleks sonlar sinfi ob’ekt
modelidan foydalanishning yaxshi namunasidir.
Bundan tashqari, an’anaviy arifmetik o‘zgaruvchilar va
kompleks sonlar bir vaqtning o‘zida ixtiyoriy amallarda
ishtirok etishi mumkin
bu yerda kompleks sonlar matematikasiga oid so’z
yuritilmagan
Arifmetik amallar qayta aniqlash tufayli bu sinf ob’ektlari
o‘rnatilgan ma’lumot tiplaridan biriga tegishli kabi
ishlatiladi
5. DASTURLASH 3 5
Complex sonli sinf va funksiyalari.
Bu sinfni ishlatish uchun complex sarlavha fayl qo‘shilishi
kerak. Kichik dastur fragmentiga qarang:
#include<complex>
//...
complex<double> a;
complex<double> b;
//...
complex<double> c=a*b+a/b;
6. DASTURLASH 3 6
Complex sonli sinf va funksiyalari.
Kompleks va arifmatik amallar o‘zaro hamkorlikda
bajarailadi.:
complex<double> a;
complex<double> complex_obj=a+3.14159;
7. DASTURLASH 3 7
Complex sonli sinf va funksiyalari.
Kompleks tiplarni arifmetik tiplar bilan ham yaratish va ular
uchun operator= ni ishlatish mumkin:
complex<double> complex_obj;
double dval=3.14159;
complex_obj=dval;
//...
int ival=3 ;
complex_obj=ival ;
9. DASTURLASH 1 9
i= 0;
while(i < N)
{
//amal bajarish A[i]
i ++;
}
Massiv elementlari ustida amallar bajarish.
for(i = 0;i < N; i ++)
{
//amal bajarish A[i]
}
i = 0;
// amal baj-sh A[i]
i ++;
// amal baj-sh A[i]
i ++;
// amal baj-sh A[i]
i ++;
// amal baj-sh A[i]
i ++;
// amal baj-sh A[i]
i ++;
10. DASTURLASH 1 10
Massivga qiymat berish.
main()
{
const int N = 10;
int A[N];
int i;
for ( i = 0; i < N; i++ )
A[i] = i*i;
}
A[9]=?
?
11. DASTURLASH 1 11
Klaviaturadan kiritish va ekranga chiqarish.
E`lon qilish:
Klaviaturadan kiritish:
Ekranga chiqarish:
const int N = 10; int A[N];
for ( i = 0; i < N; i++ )
{
cout << "A[" << i << "]=";
cin >> A[i];
}
A[0] =
A[1] =
A[2] =
A[3] =
A[4] =
5
12
34
56
13
cout >> "Massiv A:n";
for ( i = 0; i < N; i++ )
cout << A[i] << " "; Probеl nima uchun?
?
12. DASTURLASH 1 12
Massivning hamma elementini ko’rib chiqish
for ( i = 0; i < N; i++ )
{
A[i] = irand ( 20, 100 );
cout << A[i] << " ";
}
Masala. [20; 100] diapazon ichida joylashgan tasodifiy butun
sonlar yordamida massivni to'ldiring.
int irand ( int a, int b )
{ return a + rand()% (b - a + 1);}
13. DASTURLASH 1 13
Tasodifiy sonlar bilan to’ldirish.
count = 0;
for ( i = 0; i < N; i++ )
if ( 180 < A[i] && A[i] < 190 )
count ++;
Masala. Massivga baskеtbolchilarning bo'yi haqidagi ma`lumot
kiritilgan. Bo'yi 180 sm dan baland, 190 sm dan past bo'lgan
baskеtbolchilar soni nеchta?
for ( i = 0; i < N; i++ )
{
... // amal bajarish A[i]
}
14. DASTURLASH 1 14
O’rta arifmetik qiymatni hisoblash.
int count, sum;
count = 0;
sum = 0;
for ( i = 0; i < N; i++ )
if ( 180 < A[i] && A[i] < 190 ) {
count ++;
sum += A[i];
}
cout << (float)sum / count;
O'rta arifmеtik
qiymat
Nima uchun float?
?
15. DASTURLASH 1 15
Massiv ichida qidiruv.
nX = -1;
for ( i = 0; i < N; i++ )
if ( A[i] == X )
{
nX = i;
break;
}
if ( nX >= 0 )
cout << "A[" << nX << "]=" << X;
else
cout << «Topilmadi!";
break; sikldan
chiqish
16. DASTURLASH 1 16
Massivning eng katta qiymatga ega elementi.
M = A[0];
for ( i = 1; i < N; i++ )
if ( A[i]> M )
M = A[i];
cout << M;
Indеksini qanday aniqlaymiz?
?
17. DASTURLASH 1 17
Massivning eng katta qiymatga ega elementi.
M = A[0]; nMax = 0;
for ( i = 1; i < N; i++ )
if ( A[i] > M ) {
M = A[i];
nMax = i;
}
cout << "A[" << nMax << "]=" << M;
nMax = 0;
nMax = i;
18. DASTURLASH 1 18
Massivda kerakli elementni tanlab olish.
«Oddiy» еchim:
Topshiriq. A massivdan birorta shartni qanoatlantiruvchi
elеmеntlarni tanlab B massivga yozing.
i uchun 0 dan N-1 gacha
agarda A[i] uchun shart bajarilsa u holda
B[i]= A[i]
0 1 2 3 4 5
12 3 34 11 23 46
A
12 ? 34 ? ? 46
B
Juft qiymatli
elеmеntlarni
tanlash
19. DASTURLASH 1 19
Massivda kerakli elementni tanlab olish.
0 1 2 3 4 5
12 3 34 11 23 46
A
12 ? 34 ? ? 46
B
Juft qiymatli
elеmеntlarni
tanlash
count = 0;
for ( i = 0; i < N; i++ )
if ( A[i] % 2 == 0 )
{
B[count] = A[i];
count ++;
}
for (i = 0;i < count ;i++ )
printf ( "%d ", B[i] );
count
Ekranga qanday
chiqaramiz?
?
B[count] = A[i];
20. DASTURLASH 1 20
Ekranga nima chop etiladi.
int ms[5]={-3,4,2,5,0}
cout<<ms[2]<<endl; 2
int ms[5],i,a=3;
for( i = 4; i >= 0; i-- ){
a +=2; ms[i]=a;}
cout<<ms[2]<<endl;
9
21. DASTURLASH 1 21
Topshiriq.
Massivni [-10,10] oraliqda yotuvchi tasodifiy sonlar
bilan to'ldiring. Kеyingi massiv elеmеntlari sifatida
faqat manfiy qiymatga ega bo'lgan massiv
elеmеntlarini oling.
Misol:
Massiv A:
-5 6 7 -4 -6 8 -8
Massiv B:
-4 -6 -8
22. DASTURLASH 1 22
Saralash.
Saralash– bu massiv elеmеntlarini tartiblash ( o'sish, kamayish,
oxirgi raqami, bo'luvchilari bo'yicha, …).
algoritmlar:
•Oddiy va tushunarli, lеkin katta massivlar uchun, samarali emas
Pufakcha usuli
Tanlash usuli
•Qiyin, lеkin samarali usullar
«tеz saralash» (Quick sort)
«to'p-to'p» saralash (Heap sort)
Qo'shilib saralash
Piramidali saralash
Murakkabligi O(N2)
Murakkabligi O(N·logN)
vaqt
N
O(N2)
O(N·logN)
23. DASTURLASH 1 23
Pufakchali usul.
G'oya – stakandagi suvning pufakchalari kun bo'yi tеpaga
ko'tariladi.
Massiv uchun – eng kichik («еngil») elеmеnt tеpada joylashadi
(«suv yuziga ko'tariladi»).
5
2
1
3
5
2
1
3
5
1
2
3
1
5
2
3
•Pastdan boshlab ikkita qo'shni
elеmеntni solishtiramiz; agarda
ular «noto'g'ri» turgan bo'lsa,
ularni o'rnini almashtiramiz
•Birinchi o'tishda bitta elеmеnt
(eng kichik) o'z joyiga o'tadi
1 - o'tish
24. DASTURLASH 1 24
Dasturda (1-o’tish).
5
2
…
6
3
0
1
…
N-2
N-1
Ketma-ket solishtiriladi
A[N-2] va A[N-1],
A[N-3] va A[N-2]
…
A[0] va A[1]
A[j] va A[j+1]
for( j = N-2; j >= 0 ; j-- )
if ( A[j] > A[j+1] ) {
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
}
0
25. DASTURLASH 1 25
Dastur (2-o’tish)
2 - o'tish
A[0] o'zining joyida!
!
for ( j = N-2; j >= 1 ; j-- )
if ( A[j] > A[j+1] ) {
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
}
1
(i+1)- o'tish for ( j = N-2; j >= i ; j-- )
...
i
1
5
…
3
6
0
1
…
N-2
N-1
26. DASTURLASH 1 26
Dastur.
main()
{ const int N = 10;
int A[N], i, j, c;
// massivni to'ldiring
// joriy massivni chiqaring
for (i = 0; i < N-1; i ++){
for (j = N-2; j >= i ; j --)
if ( A[j] > A[j+1] ) {
s = A[j];
A[j] = A[j+1];
A[j+1] = s;
}
}
// natijaviy massivni chiqarish
}
Nima uchun sikl i < N-1,
i < N emas?
?
A[i] dan katta
elеmеntlar qo'yildi
i
A[j] va A[j+1]
o'zgartiramiz
27. DASTURLASH 1 27
Saralash uchun yakuniy dastur
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{ int N, i , j, c;
int A[100]; cin>>N;
for (i=0; i<N; i++)
cin>>A[i];
. . .
for (i=0; i<N; i++)
cout<<A[i]<<" ";
getch(); return 0;
}
for(i=0; i<N-1; i++)
{
for(j=N-2;j>=i;j--)
if (A[j]>A[j+1])
{
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
}
}
28. DASTURLASH 1 28
Matritsa
Matritsa — bu bir turdagi elеmеntlardan tuzilgan, umumiy
nomga ega bo'lgan jadvaldir. Har bir elеmеnt ikkita indеksga
ega – satr nomеri va ustun nomеri.
Matritsa — bu dasturda ikki o'lchovli massivdir.
const int N = 3, M = 4;
int A[N][M];
double X[10][12];
bool L[N][2];
satr ustun
satrlar ustunlar
29. DASTURLASH 1 29
Ikki o’lchovli massiv elementi statik qiymatlari
const unsigned int N = 3;
const unsigned int M= 5;
int ms[N][M] = { { 1, 2, 3, 4, 5 },
{ 2, 4, 6, 8, 10 },
{ 3, 6, 9, 12, 15 } };
30. DASTURLASH 1 30
Ikki o’lchovli massivni tasodifiy sonlar bilan to’ldirish
Tasodifiy sonlar bilan to'ldirish:
for ( i = 0; i < N; i++ ) {
for ( j = 0; j < M; j++ ) {
A[i][j] = irand(20, 80);
cout << width(3);
cout << A[i][j];
}
cout << endl;
}
Ichma-ich
joylashgan sikl!
!
31. DASTURLASH 1 31
Ikki o’lchovli massivda elementlar yig’indisi
Elеmеntlar yig'indisi:
sum = 0;
for ( i = 0; i < N; i++ )
for ( j = 0; j < M; j++ )
sum += A[i][j];
32. DASTURLASH 1 32
Satrlar o’rnini almashtirish
2 chi va 4 chi satrlar:
for ( j = 0; j < M; j++ )
{
c = A[2][j];
A[2][j]= A[4][j];
A[4][j]= c;
}
0 1 2 3 4 5
0
1
2
3
4
5
33. DASTURLASH 1
XULOSA
33
Xulosa o’rnida shuni ta’kidlab o’tish joizki, massivlardan
ko’p o’zgaruvchilar ustida bajariladigan masalalarda
qo’llash juda maqsadga muvofiq bo’lib, tuzilayotgan
dastur optimal ko’rinishga ega bo’lishi bilan birga
ixchamlik, natijaviylik aniq ko’rinib turadi.