|
valarray array1(ar, sizeof(ar)/sizeof(ar[0]))
|
bet | 4/4 | Sana | 17.07.2024 | Hajmi | 3,59 Mb. | | #267776 |
Bog'liq Hd5nlT7jqpJKv289QizxDT2s1tKYjszhHdm6EOlJvalarray array1(ar, sizeof(ar)/sizeof(ar[0]));
Valarray sinfi.
Esda tutish kerak bo'lgan yana bir narsa, agar biz har qanday arifmetik amallarni qiymatlar massivi bilan bajaradigan bo'lsak, ularning ma'lumotlar turlari bir xil bo'lishi kerak, aks holda xato bo'ladi. Mana bir misol:
valarray array(5);
array = 4 * array; // hato
array = float(4) * array;
Shuning uchun buni quyidagi holda yozish maqsadga muvofiq:
Ma'lumot turi int o'rniga double bo'lsa ham, ma'lumotlar turiga mos kelmaslik deb qaraladi.
Valarray sinfi.
#include "stdafx.h"
#include
#include
#include
#include
using namespace std;
int main()
{
srand(time(NULL));
valarray array1(15);
valarray array2(15);
Valarray sinfi.
cout << setw(21) << left << "1- massiv: ";
for(int i = 0; i < array1.size(); i++) {
array1[i] = rand() % 10;
cout << setw(2) << array1[i] << " ";
}
cout << endl << setw(21) << "2- massiv: ";
for(int i = 0; i < array2.size(); i++) {
array2[i] = rand() % 10;
cout << setw(2) << array2[i] << " ";
}
Valarray sinfi.
cout << "\nMassivlar yigindisi: ";
valarray array3 = array1 + array2;
for(int i = 0; i < array3.size(); i++) {
cout << setw(2) << array3[i] << " ";
}
cout<system("pause");
return 0;
}
Valarray sinfi.
Boshqa STL konteynerlarida bo'lgani kabi, valarray ham solishtirish operatsiyalarni qayta yuklaydi, ammo ular qaytaradigan natija tubdan farq qiladi. Masalan, quyidagi kodni ko'rib chiqing:
#include "stdafx.h"
#include
#include
#include
using namespace std;
int main()
{
srand(time(NULL));
valarray array1(5);
valarray array2(5);
Valarray sinfi.
cout << "1 - massiv: ";
for(int i = 0; i < array1.size(); i++)
cout << (array1[i] = rand() % 10) << " ";
cout << "\n2 - massiv: ";
for(int i = 0; i < array2.size(); i++)
cout << (array2[i] = rand() % 10) << " ";
valarray res(5);
res = (array1 < array2);
cout << "\nNatija: ";
for(int i = 0; i < res.size(); i++)
cout << res[i] << " ";
cout<system("pause");
return 0;}
Valarray sinfi.
Valarray sinfi funksiyalari
|
Vazifalari
|
apply()
|
Funktsiyani qo`llash
|
max()
|
Eng katta qiymatni qaytaradi
|
min()
|
Eng kichik qiymatni qaytaradi
|
operator=()
|
Qiymat berish, o’zlashtirish
|
operator[]()
|
Murojat qilish, qiymat olish
|
resize()
|
Massiv hajmini o’zgartiradi
|
shift()
|
Siklik siljish
|
size()
|
Massiv elemetlar soni
|
sum()
|
Massiv elemetlari yig’indisi
|
swap()
|
Massivlar qiymatlarini almashtiradi
|
Slice sinfi.
slice() - bu biron bir tarzda yoki boshqa usulda qayta ishlanadigan qism to'plamini, massiv qiymatlari oralig'ini belgilaydigan funktsiya. slice() funksiyasi uchta parametrga ega:
- birinchisi, tanlov boshlanadigan massiv elementi indeksidir, misolda indeks 0, ya'ni tanlov birinchi qator elementidan boshlanadi.
- uchinchisi - namuna olish qadami, misolda qadam 2, ya'ni har bir ikkinchi element qism to’plamga tushishini anglatadi.
array[slice(0, 3, 2)] = 5;
Slice sinfi.
#include "stdafx.h"
#include
#include
using namespace std;
int main()
{
valarray array(-1, 20);
cout << "Massiv: ";
for(int i = 0; i < array.size(); i++) cout << array[i] << " ";
Slice sinfi.
array[slice(2, 5, 4)] = 5;
// 2 indeksdan boshlab, har 4 chisiga 5 tasiga 5 qiymati //o'zlashtirilsin
cout << "\nslice ni qollagandan keyin massiv: ";
for(int i = 0; i < array.size(); i++)
{
cout << array[i] << " ";
}
Slice sinfi.
array[slice(0, 7, 3)] = 2;
// 0 indeksdan boshlab, har 3 chisiga 7 tasiga 2 qiymati //o'zlashtirilsin
cout << "\nslice ni qollagandan keyin massiv: ";
for(int i = 0; i < array.size(); i++) {
cout << array[i] << " ";
}
Slice sinfi.
// 0 indeksdan boshlab har 2 chisiga 10 tasini kvadratga //oshirish
array[slice(0, 10, 2)] = pow(static_cast >(array[slice(0, 10, 2)]), 2);
cout <<"\nslice ni qollagandan keyin massiv: ";
for(int i = 0; i < array.size(); i++) {
cout << array[i] << " ";
}
gslice sinfi sintaksisi.
gslice();
gslice ( size_t _StartIndex, const valarray& _LenArray,
const valarray& _IncArray);
gslice::gslice
|
gslice ni qurish
(public funksiya-a’zosi)
|
gslice::start
|
gslice ning dastlabki holati
(public funksiya-a’zosi)
|
gslice::stride
|
gslice ning qadam-baqadam massivga ruxsat berish
(public funksiya-a’zosi)
|
gslice::size
|
gslice dan massiv o’lchamlariga ruxsat berish
(public funksiya-a’zosi)
|
gslice sinfi.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 – asl massiv
gslice sinfi.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22…
gslice sinfi.
#include "stdafx.h"
#include
#include
#include
using namespace std;
int main()
{
valarray array(0, 60);
gslice sinfi.
// umumiy kesib olish massivlarini aniqlab olamiz
size_t length[] = {2, 6};
// har qaysida 6 tadan 2 ta qism to'plam
size_t stride[] = {4, 10};
// bir qism elemeentlari orasidagi masofa 10, gism to'plamlar //orasidagi masofa 4.
// 2 ta obyekt yaratamiz, va ularga massivlarni joylaymiz
valarray len(length, 2);
valarray str(stride, 2);
// qism to'plam indekslari bo'yicha 1 qiymat beramiz
array[gslice(2, len, str)] = 1;
gslice sinfi.
cout << "O'zgartirilgan massiv: ";
for(int i = 0; i < array.size(); i++) {
cout << array[i] << " "; }
cout << "\nQism to'plam(massiv indekslari): ";
for(int i = 0, j = 0; i < array.size(); i++, j++) {
if ( array[i] == 1) {
cout << setw(2) << i << " ";}
}
Dastur natijasi
Xulosa
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
E’TIBORINGIZ UCHUN RAXMAT!
ISHNIYAZOV
ODIL OLIMOVICH
KATTA O’QITUVCHI
SHOKIROV SHODMON
SHOYIMOVICH
Informatika asoslari kafedrasi
ASSISTENT
|
| |