Professional Documents
Culture Documents
Lecture 7 20108
Lecture 7 20108
Lecture 7 20108
Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритм ба програмчлал
Лекц - 7
www.emust.edu.mn
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
U.CS101- Алгоритм ба програмчлал
01 Алгоритм ба технологи
01
02
02 Матриц
элементийн
элементийн
int
int A[5];
A[5]; тоо
тоо
double
double V[8];
V[8]; Элементийн
Элементийн дугаарлалт
дугаарлалт
bool
bool L[10];
L[10];
char
char S[80];
S[80]; A[0], A[1], A[2], A[3], A[4]
эсвэл
Тогтмол
Тогтмол тоон
тоон
хэмжээ A[1], A[2], A[3], A[4], A[5]
хэмжээ
const
const int
int NN =10;
=10;
int A[N];
int A[N];
val[0] = 10; val[1] = 40; val[2] = 70; val[3] = 90; val[4] = 120;
Жишээлбэл:
int a[5]={1,2,3,4,5}; /* Эхний 5 элементэд утга олгох */
int b[20]={0,1,2,3,4,5,6,7,8,9}; /* Эхний 10 элементэд нь
утга олгож байна. Бусад элементүүд нь 0 утгатай болно. */
Жишээлбэл:
Массивын элементэд утга олгох мөн элемент дээрх
үйлдлүүд нь ердийн хувьсагчид утга олгох, илэрхийлэлд
оролцох хэлбэртэй ижил болно.
A[n]=(a[1],a[2],a[3],…..a[n])
K[n]=(k[1],k[2],k[3]3……k[n])
элементтэй, AA массив
харгалзах 0 1 22
123 3 4
{5,10,15,20,25}
утгуудтай гэж
5 10 15
15
15 20 25
үзье.
22--(ИНДЕКС)
(ИНДЕКС)
A[2]
15
15––(УТГА)
(УТГА)
n=5
i=0
1 0
i<n
i=i+1 Төгсгөл
www.emust.edu.mn
Массив. Массив тодорхойлох
• Массивын хэмжээ нь ямар нэгэн тогтмол тоо буюу тогтмол тоон дээр
хийгдсэн үйлдэл байж болно.
Зарлалт:
const
const int
int NN == 5;
5;
int
int A[N];
A[N];
Ажиллах:
//
// үйл
үйл явц
явц A[0]
A[0]
//
// үйл
үйл явц
явц A[1]
A[1]
//
// үйл
үйл явц
явц A[2]
A[2]
//
// үйл
үйл явц
явц A[3]
A[3]
//
// үйл
үйл явц
явц A[4]
A[4]
int
int main()
main()
{{
const
const int
int NN == 10;
10;
int
int A[N];
A[N];
int
int i;
i;
for
for ( ii == 0;
( 0; ii << N;
N; i++
i++ ))
A[i]
A[i] == i*i;
i*i;
}}
Зарлах:
const
const int
int NN == 10;
10;
int A[N];
int A[N];
Гарнаас утга оруулах:
for
for (( ii == 0;
0; ii << N;
N; i++
i++ )) A[0] = 5
{{ A[1] = 12
cout
cout << << "A["
"A[" <<<< ii <<
<< "]=";
"]="; A[2] = 34
cin
cin >>>> A[i];
A[i]; A[3] = 56
}} A[4] = 13
Дэлгэцэнд гаргах:
cout
cout >>
>> "Массив
"Массив A:\n";
A:\n";
for
for ( i = 0; i < N; i++
( i = 0; i < N; i++ ))
cout
cout <<
<< A[i]
A[i] <<
<< "" ";
";
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массивт санамсаргүй тоон утга авах
int
int irand
irand (( int
int a,
a, int
int bb ))
{{
return
return aa ++ rand()%
rand()% (b
(b -- aa ++ 1);
1);
}}
for
for (( ii == 0;
0; ii << N;
N; i++
i++ ))
{{
A[i]
A[i] == irand
irand (( 20,
20, 100
100 ););
cout
cout <<
<< A[i]
A[i] <<<< "" ";
";
}}
int
int count,
count, sum;sum;
count
count == 0;0;
sum
sum == 0;
0;
for
for (( ii == 0;
0; ii << N;
N; i++
i++ ))
if
if (( 180
180 << A[i]
A[i] && && A[i]
A[i] << 190
190 )) {{
count
count ++;++;
sum
sum +=+= A[i];
A[i];
}}
cout
cout << << (float)sum
(float)sum // count;
count;
Арифметик
Арифметикдундажыг
дундажыг
(float)
(float)гэж
гэжтодорхойлж
тодорхойлж
болно.
болно.
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив дээр хийгдэх зарим үйлдлүүд. Массив дах хайлт
ii == 0;
0;
while A[i] !=
while (( A[i] != XX )) буруу
ii ++; буруу хэлбэр
хэлбэр
++;
cout
cout << << "A["
"A[" <<<< ii <<
<< "]="
"]=" <<
<< X;
X;
ii == 0;
0;
while
while (( ii << NN && A[i] !=
&& A[i] != XX ))
ii ++;
++; зөв
зөв хэлбэр
хэлбэр
if
if ( ii << NN ))
(
cout
cout <<<< "A["
"A[" <<
<< ii <<
<< "]="
"]=" <<
<< X;
X;
else
else
cout
cout <<<< “Олдсонгүй!";
“Олдсонгүй!";
nX
nX == -1;
-1;
for
for ( ii == 0;
( 0; ii << N;
N; i++
i++ ))
if
if (( A[i]
A[i] ==== XX ))
{{
nX
nX == i;
i;
break;
break;
break; Давталтаас
Давталтаас
}} гарах
гарах
if ( nX >=
if ( nX >= 0 ) 0 )
cout
cout << << "A["
"A[" << << nX
nX <<<< "]="
"]=" <<
<< X;
X;
else
else
cout
cout << << "Не
"Не нашли!";
нашли!";
MM == A[0];
A[0];
for
for (( ii == 1;
1; ii << N;
N; i++
i++ ))
if ( A[i]>
if ( A[i]> M )M ) Их
Их элемент
элемент
MM == A[i];
A[i];
cout
cout << M;
<< M;
MM == A[0];
A[0]; nMaxnMax == 0;
0;
for
for (( ii == 1;
1; ii << N;
N; i++
i++ ))
if ( A[i] > M
if ( A[i] > M ) { ) { Их
Их элемент
элемент нь
нь
MM == A[i];
A[i]; дугаарын
дугаарын хамт
хамт
nMax
nMax ===i;
i;
i;
}}
cout
cout << << "A["
"A[" <<<< nMax
nMax <<<< "]="
"]=" <<
<< M;
M;
Илүү
Илүү сайжуулбал
сайжуулбал ::
nMax
nMax == 0;
0;
for
for (( ii == 1;
1; ii << N;
N; i++
i++ ))
if ( A[i] > A[nMax]
if ( A[i] > A[nMax] A[nMax] ))
nMax
nMax == i;
i;
cout
cout << "A[" <<
<< "A[" << nMax
nMax <<
<< "]="
"]=" <<
<< A[nMax] ;;
count
count == 0;
0;
for
for ( i = 0;
( i = 0; ii << N;
N; i++
i++ ))
if
if (( A[i]
A[i] %% 22 ==
== 00 ))
{{
B[count]===A[i];
B[count]
B[count] A[i];
A[i];
count
count ++;
++;
}}
for
for (( ii == 0;
0; ii << count
count
count ;; i++
i++ ))
хэвлэх
хэвлэх ( "%d ", B[i] );
( "%d ", B[i] );
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив дээр хийгдэх зарим үйлдлүүд. Массив эрэмбэлэх
Жишээлбэл : 1-р алхам:
Массивийн
элэментүүдийг
хамгийн багаас
их рүү нь
эрэмбэлэе гэж
үзвэл :
2-р алхам: 3-р алхам: 4-р алхам:
N
N элементийг
элементийг эрэмбэлэхийн
эрэмбэлэхийн тулд
тулд N-1
N-1 нэвтрэлт
нэвтрэлт хангалттай
хангалттай (N-1
(N-1 элементийг
элементийг
байрлуулахад
байрлуулахад хангалттай).
хангалттай).
for
for (( ii == 0;
0; ii << N-1;
N-1; i++
i++ ))
for
for ( j = N-2; j >= ii ;; j--
( j = N-2; j >= j-- ))
if
if (( A[j]
A[j] >> A[j+1]
A[j+1] ))
{{
//
// байрлалаар
байрлалаар солих
солих A[j]
A[j] ии A[j+1]
A[j+1]
}}
A[0]
XX == 44
44 A[N-1] A[N]
6 34 44 55 67 78 82
L с R
6 34 44 55 67 78 82
L с R
6 34 44 55 67 78 82
L с R
6 34 44 55 67 78 82
L R
! R-1 :: хайлт
LL == R-1 хайлт шийдэгдсэн
шийдэгдсэн
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив дээр хийгдэх зарим үйлдлүүд. Массиваас элемент хайх
int
int X, X, L,
L, R,
R, c;
c;
LL = = 0;0; RR == N;
N; //
// эхний
эхний хэсэг
хэсэг
while
while (( LL < < R-1
R-1 ))
{{
cc = = (L+R)
(L+R) // 2;2; //
// дундыг
дундыг олох
олох
ifif (( XX <
< A[c]
A[c] )) //// аль
аль нэг
нэг тал
тал руу
руу шахаж
шахаж үргэлжүүлэх
үргэлжүүлэх
RR = c;
= c;
else
else LL = = c;c;
}}
ifif (( A[L]
A[L] ==== XX ))
хэвлэх
хэвлэх (( "A[%d]=%d",
"A[%d]=%d", L, L, XX );
);
else
else хэвлэххэвлэх (( “олдсонгүй"
“олдсонгүй" );
);
#include <iostream>
using namespace std;
int main()
{
int age[4]; Үр дүнд:
for (int i = 0; i < 4; ++i) {
cout << " Насаа оруулж өгнө үү :"; Насаа оруулж өгнө үү : 44
cin >> age[i]; // Утга оруулах хэсэг Насаа оруулж өгнө үү : 16
} Насаа оруулж өгнө үү : 23
for (int i = 0; i < 4; ++i) { Насаа оруулж өгнө үү : 68
// Утга хэвлэх хэсэг
cout <<endl<< " Таны оруулсан нь :“ <<age[i]; Таны оруулсан нь: 44
} Таны оруулсан нь: 16
return 0; Таны оруулсан нь: 23
} Таны оруулсан нь: 68
Дээрх жишээнд бид массивын элемент бүрд 2 удаа хандаж байна. Эхний удаад уг
массивын элемент бүрт гарнаас утга оноож өгч байгаа.
Массивтай ажиллах өөр нэгэн жишээ үзье. Энэ жишээ нь хэрэглэгчийн оруулсан 6 тоог
массивт хадгалж, тэдгээрийн дунджийг тооцон гаргаж өгөх болно.
#include <iostream>
using namespace std;
const int SIZE=6;
int main()
{ float sales[SIZE];
cout<<endl<<"6 өдрийн орлогыг дараалуулан оруул Үр дүнд:
"<<endl;
6 өдрийн орлогыг дараалуулан
for (int i = 0; i < SIZE; ++i) оруул
cin>>sales[i]; 352.64
float total=0; 867.70
for (int i = 0; i < SIZE; ++i) 781.32
total+=sales[i]; 867.35
float average=total/SIZE; 746.21
cout<<"Дундаж орлого: "<<average; } 189.45
Дундаж орлого: 634.11
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив. Массивын элементүүдийг дундажлах нь
Бусад төрлүүдийн нэгэн адил массивыг тодорхойлох үед анхны утгыг нь оноож өгч
болно.
Үр дүнд :
#include <iostream>
using namespace std; Sariing oruulna uu (1 to 12):9
Odriig oruulna uu (1 to 31):9
int main()
Jiliin ehnees ongorson odriin too : 252
{ --------------------------------
int sar, odor, niit_odor, sariin_odruud[12]= Process exited after 4.778 seconds with return value 0
{31,28,31,30,31,30,31,31,30,31,30,31}; Press any key to continue . . .
cout<<endl<<"Sariing oruulna uu (1 to 12):";
cin >>sar; Хэрэглэгч гараас сар, өдрийг оруулж өгсний дараагаар
программ өмнөх бүх саруудын нийт өдрийг тоолж,
cout <<"Odriig oruulna uu (1 to 31):";
нийлбэрийг niit_odor хувьсагчид хадгалж байна. Харин
cin>>odor; сар бүр дэх өдрийг sariin_odruud массиваас унших
niit_odor=odor; болно. Жишээ нь: Хэрэглэгч 5 сар гэж өгсөн бол өмнөх
for (int j=0; j<sar-1; j++) 4 сарын (31, 28, 31, 30) гэсэн утгууд нэмэгдэх юм.
niit_odor+=sariin_odruud[j];
cout<<"Jiliin ehnees ongorson odriin too : "<<niit_odor; }
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ