Массивхо
- Подробности
- Обновлено 10.01.2011 17:57
- Просмотров: 1290
Массивхо дар халли бисёр масъалахо муфиданд. Масалан, барои нигох доштани кимати хамаи элементхои матриса, хачми махсулот дар хамаи моххои сол ва гайра. Массив (array) ин рохест барои нигох доштани бисёр киматхо зери як ном. Массив аз элементхо иборат аст, элементхои массив метавонанд тагйирёбандахои намуди дилхох бошанд. Камтар пештар рафта мегуям, ки сохтор (structure) ва синф (class) низ элементхои массив шуда метавонанд. Массивхоро метавон чунин тасаввур намуд:
[ ] [ ] [ ] [ ] [ ] ... [ ]
Дар ин чо хар як чуфти кафсхои квадрати ин элементи массив аст ва шумо метавонед маълумотро ба он дохил намоед. Массивро инчунин хамчун гурухи элементхои пахлуи хамдигар истода тасаввур кардан мумкин аст. Массивро, ба монанди тагйирёбандахо, пеш аз истифода бурдан эълон кардан зарур аст. Сохтори умумии эълони массив чунин аст:
type array_name[size];
Дар ин чо type - намуди элементхои массив, array_name - номи массив, size - микдори умумии элементхои массив дар кафсхои квадрати. Хар як элементи массив раками тартибии худро дорад, ки онро индекси элементи массив меноманд. Аён аст, ки индекс адади бутун аст. Ракамгузории элементхои массив дар C++ аз нул огоз меёбад. Яъне 0 - индекси элементи якуми массив мебошад. Индекси элементи дуюми массив 1 мебошад ва хоказо. Индекси элементи охирони массив size-1 (микдори умумии элементхои массив тархи 1) мебошад. Хамаи элементхои як массив як намуд доранд. Яъне, массиви ададхои бутун, массиви рамзхо, массиви ададхои хакики. Мисол:
//namuna20.cpp
#include <iostream>
#include <math>
int main() {
int i, x[5];
double y[5];
for(i=0; i<5; i++) {
cout<<"Elementi "<<i+1<<"-umro dokhil kuned: ";
cin>>x[i];
y[i]=sqrt(x[i]);
}
for(i=0; i<5; i++)
cout<<x[i]<<" "<<y[i]<<endl;
return 0;
}
Дар коди болои тагйирёбандаи бутун i, массиви x иборат аз 5 элемент, ки хар якаш тагйирёбандаи бутун ва массиви y иборат аз 5 элемент, ки хар якаш тагйирёбандаи хакики аст эълон шудаанд. Бо ёрии оператори for ду сикл ташкил карда шудааст. Дар сикл тагйирёбанда i аз 0 то 4 кимат гирифта, киматхои элементхои массиви x, элементи якум - x[0], элементи дуюм - x[1], ..., элементи панчум - x[4] аз клавиатура дохил карда мешаванд. Ва баробари ин киматхои элементхои массиви y хисоб карда мешаванд, ки онхо ба решаи квадрати аз элементхои мувофики массиви x баробар мебошанд. Хангоми ба 5 баробар шудани i сикл хотима меёбад. Баъди ин, сикли дуюм огоз меёбад, ки дар ин сикл кимати i ба нул баробар карда шуда, чопи киматхои массиви x ва решаи квадрати аз онхо ичро карда мешавад. Дар хотира расо барои 5 элементи бутун (массиви x) ва 5 элементи хакики (массиви y) мавкеъ забт карда шудааст. Агар кушиш кунед, ки ба элементи шашум y[i] кимат бахшед, барномаи шумо шикаст мехурад. Яъне бо элементи охирони массив эхтиёткорона рафтор намудан лозим аст.
Мисоли дигар:
//namuna21.cpp
#include <iostream>
#include <time>
#include <stdlib>
int main() {
const int n=15;
int i;
int y[n];
srand(time(NULL));
for(i=0; i<n; i++)
y[i]=rand()%100;
for(i=0; i<n; i++)
cout<<y[i]<<endl;
return 0;
}
Дар барнома калимаи махсуси const истифода шудааст, ки он барои эълон намудани ададхои доими, яъне ададхое, ки дар рафти ичрои барнома набояд тагйир ёбанд, лозим аст. Агар дар ёд дошта бошед, мо тагйирёбандаро ба пиёла монанд карда будем. Доими ин хамин хел пиёлаест, ки ба он чизе, ки даруни ин пиёла аст расидан мумкин нест. Функсияи srand барои хосил намудани мачмуи нави ададхои тасодуфи (random - тасодуф) лозим аст. Дар ин чо оператори srand(time(NULL)) барои дар вакти ичрои барнома функсияхои ададхои тасодуфи хосил намояндаро ба холати аввала овардан (initialize), яъне барои хар дафъа хосил намудани мачмуи нави ададхои тасодуфи лозим аст. Дар y[i]=rand()%100 мо адади тасодуфии дар байни 0 ва 100 бударо хосил мекунем ва онро ба элементи массиви y мебахшем. Ба шумо зарур аст, ки кисмхои гуногуни ин кодро тагйир дода, онро ичро карда бинед.
САВОЛХО БАРОИ МУСТАХКАМКУНИ
1. Массив чист?
2. Кимати индекси массив ва кимати элементи массив фаркият доранд?
3. Аломатхои { ва } чи вазифа доранд?
4. Функсияи srand() барои чи лозим?