- Массив тушунчаси. Статик массивлар. Кўрсаткичлар. Кўрсаткичларни ўзлаштириш. Динамик массивлар.
- Массив – бир хил типдаги элементлар гуруҳи бўлиб, битта умумий ном ва хотирага эга.
- Хоссалари:
- Барча элементлари битта типга эга
- Массив битта номга эга
- Барча элементлар хотирада кетма-кет жойлаштирилган
- Мисоллар:
- ўқувчилар рўйхати
- кўп қаватли уйдаги хонадонлар
- шаҳардаги университетлар
- Йил бўйича ҳавонинг температураси
- массив элементи НОМЕРИ
- (ИНДЕКС)
- массив элементи НОМЕРИ (ИНДЕКС) : 2
- массив элементи
- ҚИЙМАТИ: 15
- С++ да массив элементлари НОЛдан бошланади!
- Нима учун эълон қилинади?
- Массив номини аниқлаш учун
- Массив типини аниқлаш учун
- Элементлар сонини аниқлаш учун
- Хотирадан жой ажратиш учун
- Мисол:
- Ўлчамни константа орқали киритиш:
- Массив ўлчами (элементлар сони)
- int X[10], Y[10];
- float zz, A[20];
- char s[80];
- Бошланғич қийматларни бериш:
- int A[4] = { 8, -3, 4, 6 };
- float B[2] = { 1. };
- char C[3] = { 'A', '1', 'Ю' };
- Агарда бошланғич қийматлар берилмаган бўлса, элементлари ихтиёрий кераксиз қиймат олиши мумкин!
- float X[5];
- int n = 1;
- X[n-2] = 4.5;
- X[n+8] = 12.;
- Массив чегарасидан чиқиш
- (маълумотлар хотирадан ўчирилади)
- Каср қисми олиб ташланади
- (хатолик йўқ)
- float B[2] = { 1., 3.8, 5.5 };
- Эълон қилиш:
- Клавиатурадан киритиш:
- Элемент бўйича амаллар:
- Экранга чиқариш:
- const int N = 5;
- int A[N], i;
- cout<<“Massivni 5 ta elementini kiriting:\n”;
- for( i=0; i < N; i++ ) {
- cout<<"A[i] = ", i ;
- cin>> A[i] ;
- }
- A[0] =
- A[1] =
- A[2] =
- A[3] =
- A[4] =
- for( i=0; i < N; i++ ) A[i] = A[i]*2;
- cout<<“Natija:\n”;
- for( i=0; i < N; i++ ) cout<< A[i]<<“ ”;
- #include
- #include
- main()
- {
- const int N = 5;
- int A[N], i;
- // массив элементларини киритиш
- // массивларни қайта ишлаш
- // натижаларни чиқариш
- getch();
- }
- Масала: Клавиатурадан массивни 5 та элементини киритинг ва уларни барчасини 2 га кўпайтиринг ҳамда ҳосил бўлган янги массивни чиқаринг.
- «4»: Клавиатурадан массивни 5 та элементини киритинг ва уларни ўрта арифметигини топинг.
- Мисол:
- 5 та сон киритинг:
- 4 15 3 10 14
- ўрта арифметиги 9.200
- «5»: Клавиатурадан массивни 5 та элементини киритинг ва уларни энг кичигини топинг.
- Мисол:
- 5 та сон киритинг :
- 4 15 3 10 14
- энг кичиги 3
- Масала: Массивни энг катта элементни топинг.
- Алгоритм:
- // энг катта элемент деб A[0] – ни оламиз
- for ( i=1; i < N; i++ )
- if ( A[i] > энг каттаси)
- // A[i] нинг янги энг катта элементини сақлаш
- Нима учун цикл i=1 дан бошланяпди?
- max = A[0]; // ҳозирча A[0]– энг каттаси
- iMax = 0;
- for ( i=1; i < N; i++ ) // қолганларини текшир
- if ( A[i] > max ) { // янгисини топиш
- max = A[i]; //A[i] эслаб қолиш
- iMax = i; // i эслаб қолиш
- }
- Қўшимча: энг катта элементни номерини қандай топамиз?
- Қандай қилиб қисқартириш мумкин?
- iMax элементни рақами бўйича ҳар доим A[iMax] ни қийматини олиш мумкин. Шунинг учун ҳамма жойдани max ни A[iMax] га алмаштирамиз ва max ўзгарувчини олиб ташлаймиз.
- Тасодифий сонлар билан тўлдириш
- RAND_MAX – энг катта ихтиёрий бутун сон (одатда RAND_MAX = 32767)
- [0,RAND_MAX] интервалдаги бутун сонлар
- x = rand(); // биринчи сон
- x = rand(); // энди бошқа сон
- Кетма-кетликни бошланғич қийматини ўрнатиш:
- srand ( 345 ); // 345 дан бошланади
- Берилган интервалдаги бутун сонлар
- [0,N-1] интервалдаги бутун сонлар:
- Мисоллар:
-
- [a,b] интервалдаги сонлар:
- int random(int N) {
- return rand()% N;
- }
- x = random ( 100 ); // [0,99] интервал
- x = random ( z ); // [0,z-1] интервал
- x = random ( z ) + a; // [a,z-1+a] интервал
- x = random (b – a + 1) + a; // [a,b] интервал
- Тасодифий сонлар билан тўлдириш
- #include
- #include
- main()
- {
- const int N = 10;
- int A[N], i;
- printf(“Massiv:\n");
- for (i = 0; i < N; i++ ) {
- A[i] = random(100) + 50;
- cout<
- }
- ...
- }
- int random(int N)
- { return rand() % N; }
- Функция 0 дан N-1 гача бўлга ихтиёрий сонларни чиқаради
- #include
- #include
- main()
- {
- const int N = 5;
- int A[N], i, iMax;
- // [100,150] ихтиёрий сонларни киритинг
- //энг катта элемент ва уни номерини топинг
- printf("\nEng katta element A[%d] = %d", iMax, A[iMax]);
- getch();
- }
- «4»: Массивни [-10..10] оралиқдаги 10 та сон билан тўлдиринг. Энг катта ва энг кичик элементини ҳамда уларни номерини топинг.
- Мисол:
- Жорий массив:
- 4 -5 3 10 -4 -6 8 -10 1 0
- энг каттаси a[4]=10
- энг кичиги a[8]=-10
- «5»: [-10..10] оралиқдаги 10 та сон билан тўлдиринг. Энг катта иккита элементи ва уни номерини топинг.
- Мисол:
- Жорий массив:
- 4 -5 3 10 -4 -6 8 -10 1 0
- энг каттаси a[4]=10, a[7]=8
- Масала: массив элементларини тескари тартибда чиқаринг (инверсияни қўлланг).
- Алгоритм:
- Жойларини алмаштир A[0] ва A[N-1], A[1] ва A[N-2], …
- Псевдокод:
- for ( i = 0; i < N; i++ )
- // A[i] ва A[N-1-i] ўринларини алмаштириш
- Қандай алмаштириш мумкин?
- Масала: Иккита пиёлани ўрнини алмаштириш.
- Масала: Иккита катакни хотирадаги жойини алмаштириш.
- C сиз ҳам амалга ошириш мумкин?
- main()
- {
- const int N = 10;
- int A[N], i, c;
- // Массивни тўлдириш
- // жорий массивни киритиш
- for ( i = 0; i < N/2; i++ ) {
- c = A[i];
- A[i] = A[N-1-i];
- A[N-1-i] = c;
- }
- // олинган массивни чиқариш
- }
- «4»: Массивни [-10..10] оралиқдаги ихтиёрий 10 сон билан тўлдиринг. Массивни иккига бўлган ҳолда 1-чи ва 2-чи ярмида инверция амални бажаринг.
- Масалан:
- Kiruvchi massiv:
- 4 -5 3 10 -4 -6 8 -10 1 0
- Natija:
- -4 10 3 -5 4 0 1 -10 8 -6
- «5»: Массивни [-12..12] оралиқдаги ихтиёрий 12 сон билан тўлдиринг. Ҳар бир тўртта элементи устида инверция амалини бажаринг.
- Масалан:
- Kiruvchi massiv:
- 4 -5 3 10 -4 -6 8 -10 1 0 5 7
- Natija:
- 10 3 -5 4 -10 8 -6 -4 7 5 0 1
- Масала: Массив элементларини битта катак чапга суринг, биринчи элемент охирги элемент ўрнига тушсин.
- Алгоритм:
- A[0]=A[1]; A[1]=A[2];… A[N-2]=A[N-1];
- Цикл:
- for ( i = 0; i < N-1; i ++) A[i] = A[i+1];
- main()
- {
- const int N = 10;
- int A[N], i, c;
- // Массивни киритинг
- // Жорий массивни чиқаринг
- c = A[0];
- for ( i = 0; i < N-1; i ++)
- A[i] = A[i+1];
- A[N-1] = c;
- // натижавий массивни чиқаринг
- }
- 4: Массивни [-10..10] оралиқдаги ихтиёрий 10 та сон билан тўлдиринг. Циклик равишда битта ЎНГга суринг.
- Мисол:
- Берилган массив:
- 4 -5 3 10 -4 -6 8 -10 1 0
- Натижа:
- 0 4 -5 3 10 -4 -6 8 -10 1
- 5: Массивни [-12..12] оралиқдаги ихтиёрий 12 та сон билан тўлдиринг. Циклик равишда тўртта ЎНГга суринг..
- Мисол:
- Берилган массив:
- 4 -5 3 10 -4 -6 8 -10 1 0 5 7
- Натижа:
- 1 0 5 7 4 -5 3 10 -4 -6 8 -10
- ҳар бир ўзгарувчининг номи (массив) бўлади, ўша ном воситасида унга мурожаат қилинади.
- ўлчами олдиндан маълум (дастур тузаётганда аниқланади)
- хотира эълон қилинганда ажратилади
- дастур ишлаш давомида ўлчамни ўзгартириш мумкин эмас.
- int x, y = 20;
- float z, A[10];
- char str[80];
- ўлчами олдиндан ноаниқ, дастур ишлаши давомида аниқланади.
- хотира дастур ишлаш давомида ажратилади.
- Муаммо:
- агар берилганларнинг номи бўлмаса уларга қандай мурожаат қиламиз?
- Ечим:
- хотирадаги адреси орқали.
- Муаммо: 1) қандай ўзгарувчиларда адресни сақлаш мумкин ?
- 2) адреслар билан қандай ишланади?
Do'stlaringiz bilan baham: |