Массивлар Массив – бир хил типдаги элементлар гуруҳи бўлиб, битта умумий ном ва хотирага эга. Хоссалари


Download 0.98 Mb.
bet1/4
Sana09.10.2023
Hajmi0.98 Mb.
#1696203
  1   2   3   4
Bog'liq
8-Massiv

  • Массив тушунчаси. Статик массивлар. Кўрсаткичлар. Кўрсаткичларни ўзлаштириш. Динамик массивлар.
  • 11:30
  • Массивлар
  • Массив – бир хил типдаги элементлар гуруҳи бўлиб, битта умумий ном ва хотирага эга.
  • Хоссалари:
    • Барча элементлари битта типга эга
    • Массив битта номга эга
    • Барча элементлар хотирада кетма-кет жойлаштирилган
  • Мисоллар:
    • ўқувчилар рўйхати
    • кўп қаватли уйдаги хонадонлар
    • шаҳардаги университетлар
    • Йил бўйича ҳавонинг температураси
  • http://acm.tuit.uz
  • 11:30
  • Массивлар
  • 5
  • 10
  • 15
  • 20
  • 25
  • 0
  • 1
  • 2
  • 3
  • 4
  • A
  • массив
  • 2
  • 15
  • массив элементи НОМЕРИ
  • (ИНДЕКС)
  • A[0]
  • A[1]
  • A[2]
  • A[3]
  • A[4]
  • массив элементи
  • ҚИЙМАТИ
  • A[2]
  • массив элементи НОМЕРИ (ИНДЕКС) : 2
  • массив элементи
  • ҚИЙМАТИ: 15
  • С++ да массив элементлари НОЛдан бошланади!
  • !
  • http://acm.tuit.uz
  • 11:30
  • Массивларни эълон қилиш
  • Нима учун эълон қилинади?
    • Массив номини аниқлаш учун
    • Массив типини аниқлаш учун
    • Элементлар сонини аниқлаш учун
    • Хотирадан жой ажратиш учун
  • Мисол:
  • Ўлчамни константа орқали киритиш:
  • номи
  • Массив ўлчами (элементлар сони)
  • Элементлар типи
  • int A [ ];
  • const int N = 5;
  • N
  • int A [ 5 ];
  • http://acm.tuit.uz
  • 11:30
  • Массивларни эълон қилиш
  • Мисоллар:
  • 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', 'Ю' };
  • қолганлари нолга тенг!
  • Агарда бошланғич қийматлар берилмаган бўлса, элементлари ихтиёрий кераксиз қиймат олиши мумкин!
  • !
  • http://acm.tuit.uz
  • 11:30
  • Нима нотўғри?
  • int N = 10;
  • float A[N];
  • const int
  • int X[4.5];
  • int A[10];
  • A[10] = 0;
  • float X[5];
  • int n = 1;
  • X[n-2] = 4.5;
  • X[n+8] = 12.;
  • Массив чегарасидан чиқиш
  • (маълумотлар хотирадан ўчирилади)
  • int X[4];
  • X[2] = 4.5;
  • Каср қисми олиб ташланади
  • (хатолик йўқ)
  • float B[2] = { 1., 3.8, 5.5 };
  • int A[2] = { 1, 3.8 };
  • float
  • http://acm.tuit.uz
  • 11:30
  • Массивлар
  • Эълон қилиш:
  • Клавиатурадан киритиш:
  • Элемент бўйича амаллар:
  • Экранга чиқариш:
  • 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] =
  • 5
  • 12
  • 34
  • 56
  • 13
  • for( i=0; i < N; i++ ) A[i] = A[i]*2;
  • cout<<“Natija:\n”;
  • for( i=0; i < N; i++ ) cout<< A[i]<<“ ”;
  • Natija:
  • 10 24 68 112 26
  • http://acm.tuit.uz
  • 11:30
  • Дастур
  • #include
  • #include
  • main()
  • {
  • const int N = 5;
  • int A[N], i;
  • // массив элементларини киритиш
  • // массивларни қайта ишлаш
  • // натижаларни чиқариш
  • getch();
  • }
  • Масала: Клавиатурадан массивни 5 та элементини киритинг ва уларни барчасини 2 га кўпайтиринг ҳамда ҳосил бўлган янги массивни чиқаринг.
  • олдинги слайддаги
  • http://acm.tuit.uz
  • 11:30
  • Вазифа
  • «4»: Клавиатурадан массивни 5 та элементини киритинг ва уларни ўрта арифметигини топинг.
  • Мисол:
  • 5 та сон киритинг:
  • 4 15 3 10 14
  • ўрта арифметиги 9.200
  • «5»: Клавиатурадан массивни 5 та элементини киритинг ва уларни энг кичигини топинг.
  • Мисол:
  • 5 та сон киритинг :
  • 4 15 3 10 14
  • энг кичиги 3
  • http://acm.tuit.uz
  • 11:30
  • Энг катта элемент
  • Масала: Массивни энг катта элементни топинг.
  • Алгоритм:
  • Псевдокод:
  • // энг катта элемент деб A[0] – ни оламиз
  • for ( i=1; i < N; i++ )
  • if ( A[i] > энг каттаси)
  • // A[i] нинг янги энг катта элементини сақлаш
  • Нима учун цикл i=1 дан бошланяпди?
  • ?
  • http://acm.tuit.uz
  • 11:30
  • Энг катта элементи
  • 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 ўзгарувчини олиб ташлаймиз.
  • A[iMax]
  • 11:30
  • Тасодифий сонлар билан тўлдириш
  • RAND_MAX – энг катта ихтиёрий бутун сон (одатда RAND_MAX = 32767)
  • [0,RAND_MAX] интервалдаги бутун сонлар
  • x = rand(); // биринчи сон
  • x = rand(); // энди бошқа сон
  • Кетма-кетликни бошланғич қийматини ўрнатиш:
  • srand ( 345 ); // 345 дан бошланади
  • #include // ихтиёрий сон
  • http://acm.tuit.uz
  • 11:30
  • Берилган интервалдаги бутун сонлар
  • [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] интервал
  • http://acm.tuit.uz
  • 11:30
  • Тасодифий сонлар билан тўлдириш
  • #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 гача бўлга ихтиёрий сонларни чиқаради
  • Қандай интервал?
  • ?
  • http://acm.tuit.uz
  • Дастур
  • #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();
  • }
  • Олдинги слайддаги
  • Const нима беради?
  • ?
  • http://acm.tuit.uz
  • 11:30
  • Вазифа
  • «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
  • http://acm.tuit.uz
  • 11:30
  • Массивни тескари ёзиш
  • Масала: массив элементларини тескари тартибда чиқаринг (инверсияни қўлланг).
  • Алгоритм:
    • Жойларини алмаштир A[0] ва A[N-1], A[1] ва A[N-2], …
  • Псевдокод:
  • 3
  • 5
  • 9
  • 7
  • 7
  • 9
  • 5
  • 3
  • 0
  • 1
  • N-2
  • N-1
  • 0
  • 1
  • N-2
  • N-1
  • N-1 индекслар суммаси
  • Нимаси нотўғри?
  • ?
  • ; i++ )
  • N / 2
  • http://acm.tuit.uz
  • 11:30
  • Қандай алмаштириш мумкин?
  • 2
  • 3
  • 1
  • Масала: Иккита пиёлани ўрнини алмаштириш.
  • Масала: Иккита катакни хотирадаги жойини алмаштириш.
  • 4
  • 6
  • ?
  • 4
  • 6
  • 4
  • x
  • y
  • c
  • c = x;
  • x = y;
  • y = c;
  • x = y;
  • y = x;
  • 3
  • 2
  • 1
  • C сиз ҳам амалга ошириш мумкин?
  • ?
  • http://acm.tuit.uz
  • 11:30
  • Дастур
  • 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;
  • }
  • // олинган массивни чиқариш
  • }
  • http://acm.tuit.uz
  • 11:30
  • Вазифа
  • «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
  • http://acm.tuit.uz
  • 11:30
  • Циклли суриш
  • Масала: Массив элементларини битта катак чапга суринг, биринчи элемент охирги элемент ўрнига тушсин.
  • Алгоритм:
    • A[0]=A[1]; A[1]=A[2];… A[N-2]=A[N-1];
  • Цикл:
  • 3
  • 5
  • 8
  • 1
  • 9
  • 7
  • 0
  • 1
  • 2
  • 3
  • N-2
  • N-1
  • 5
  • 8
  • 1
  • 9
  • 7
  • 3
  • for ( i = 0; i < N-1; i ++) A[i] = A[i+1];
  • Нима нотўғри?
  • ?
  • Нима учун N эмас?
  • http://acm.tuit.uz
  • 11:30
  • Дастур
  • 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;
  • // натижавий массивни чиқаринг
  • }
  • http://acm.tuit.uz
  • 11:30
  • Вазифа
  • 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
  • http://acm.tuit.uz
  • 11:30
  • Статик берилганлар
  • ҳар бир ўзгарувчининг номи (массив) бўлади, ўша ном воситасида унга мурожаат қилинади.
  • ўлчами олдиндан маълум (дастур тузаётганда аниқланади)
  • хотира эълон қилинганда ажратилади
  • дастур ишлаш давомида ўлчамни ўзгартириш мумкин эмас.
  • int x, y = 20;
  • float z, A[10];
  • char str[80];
  • http://acm.tuit.uz
  • Динамик берилганлар
  • ўлчами олдиндан ноаниқ, дастур ишлаши давомида аниқланади.
  • хотира дастур ишлаш давомида ажратилади.
  • Муаммо:
  • агар берилганларнинг номи бўлмаса уларга қандай мурожаат қиламиз?
  • Ечим:
  • хотирадаги адреси орқали.
  • Муаммо: 1) қандай ўзгарувчиларда адресни сақлаш мумкин ?
  • 2) адреслар билан қандай ишланади?
  • http://acm.tuit.uz

Download 0.98 Mb.

Do'stlaringiz bilan baham:
  1   2   3   4




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