ВНИМАНИЕ
Ïðè îïèñaíèè ìaññèâîâ êâaäðaòíûå ñêîáêè яâëяþòñя ýëåìåíòîì ñèíòaêñèña, a íå óêaçaíè- åì ía íåîáяçaòåëüíîñòü êîíñòðóêöèè.
Ýëåìåíòû ìaññèâa íóìåðóþòñя ñ íóëя. Ïðè îïèñaíèè ìaññèâa èñïîëüçóþòñя òå æå ìîäèôèêaòîðû (êëaññ ïaìяòè, COnst è èíèöèaëèçaòîð), ÷òî è äëя ïðîñòûõ ïå- ðåìåííûõ. Èíèöèaëèçèðóþùèå çía÷åíèя äëя ìaññèâîâ çaïèñûâaþòñя â ôèãóð- íûõ ñêîáêaõ. Çía÷åíèя ýëåìåíòaì ïðèñâaèâaþòñя ïî ïîðяäêó. Åñëè ýëåìåíòîâ â ìaññèâå áîëüøå, ÷åì èíèöèaëèçaòîðîâ, ýëåìåíòû, äëя êîòîðûõ çía÷åíèя íå óêa- çaíû, îáíóëяþòñя:
int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=0, b[4]=0
Ðaçìåðíîñòü ìaññèâa âìåñòå ñ òèïîì åãî ýëåìåíòîâ îïðåäåëяåò îáúåì ïaìяòè, íå- îáõîäèìûé äëя ðaçìåùåíèя ìaññèâa, êîòîðîå âûïîëíяåòñя ía ýòaïå êîìïèëяöèè, ïîýòîìó ðaçìåðíîñòü ìîæåò áûòü çaäaía òîëüêî öåëîé ïîëîæèòåëüíîé nîíñòaí- òîñ èëè nîíñòaíòíûì âûðaæåíèåì. Åñëè ïðè îïèñaíèè ìaññèâa íå óêaçaía ðaç- ìåðíîñòü, äîëæåí ïðèñóòñòâîâaòü èíèöèaëèçaòîð, â ýòîì ñëó÷aå êîìïèëяòîð âû- äåëèò ïaìяòü ïî êîëè÷åñòâó èíèöèaëèçèðóþùèõ çía÷åíèé.  äaëüíåéøåì ìû óâèäèì, ÷òî ðaçìåðíîñòü ìîæåò áûòü îïóùåía òaêæå â ñïèñêå ôîðìaëüíûõ ïaða- ìåòðîâ (ñì. ðaçäåë «Ïaðaìåòðû ôóíêöèè», ñ. 77).
Äëя äîñòóïa ê ýëåìåíòó ìaññèâa ïîñëå åãî èìåíè óêaçûâaåòñя íîìåð ýëåìåíòa (èíäånñ) â êâaäðaòíûõ ñêîáêaõ.  ñëåäóþùåì ïðèìåðå ïîäñ÷èòûâaåòñя ñóììa ýëåìåíòîâ ìaññèâa.
inClude int main(){
COnst intn= 10; int i, sum;
int marks[n] = {3, 4, 5, 4, 4};
fOr (i = 0, sum = 0; ireturn 0;
}
Ðaçìåðíîñòü ìaññèâîâ ïðåäïî÷òèòåëüíåå çaäaâaòü ñ ïîìîùüþ èìåíîâaííûõ nîí- ñòaíò, êaê ýòî ñäåëaíî â ïðèìåðå, ïîñêîëüêó ïðè òaêîì ïîäõîäå äëя åå èçìåíå- íèя äîñòaòî÷íî ñêîððåêòèðîâaòü çía÷åíèå êîíñòaíòû âñåãî ëèøü â îäíîì ìåñòå ïðîãðaììû. Îáðaòèòå âíèìaíèå, ÷òî ïîñëåäíèé ýëåìåíò ìaññèâa èìååò íîìåð, ía åäèíèöó ìåíüøèé çaäaííîé ïðè åãî îïèñaíèè ðaçìåðíîñòè.
ВНИМАНИЕ
Ïðè îáðaùåíèè ê ýëåìåíòaì ìaññèâa aâòîìaòè÷åñêèé êîíòðîëü âûõîäa èíäåêña ça ãðaíè- öó ìaññèâa íå ïðîèçâîäèòñя, ÷òî ìîæåò ïðèâåñòè ê îøèáêaì.
Ïðèìåð. Cîðòèðîâêa öåëî÷èñëåííîãî ìaññèâa ìåòîäîì âûáîða. Àëãîðèòì ñîñòî- èò â òîì, ÷òî âûáèðaåòñя íaèìåíüøèé ýëåìåíò è ìåíяåòñя ìåñòaìè ñ ïåðâûì ýëå- ìåíòîì ìaññèâa, çaòåì ðaññìaòðèâaþòñя ýëåìåíòû, ía÷èíaя ñî âòîðîãî, è íaè- ìåíüøèé èç íèõ ìåíяåòñя ìåñòaìè ñî âòîðûì ýëåìåíòîì, è òaê äaëåå n-1 ðaç (ïðè ïîñëåäíåì ïðîõîäå öèêëa ïðè íåîáõîäèìîñòè ìåíяþòñя ìåñòaìè ïðåäïîñëåäíèé è ïîñëåäíèé ýëåìåíòû ìaññèâa).
inClude int main(){
COnst int n = 20; // êîëè÷åñòâî ýëåìåíòîâ ìaññèâa
int b[n]; // îïèñaíèå ìaññèâa
int i;
fOr (i = 0; i> b[i]; // ââîä ìaññèâa
fOr (i = 0; i// ïðèíèìaåì ça íaèìåíüøèé ïåðâûé èç ðaññìaòðèâaåìûõ ýëåìåíòîâ: int imin = i;
// ïîèñê íîìåða ìèíèìaëüíîãî ýëåìåíòa èç íåóïîðяäî÷åííûõ: fOr (intj=i+ 1; j// åñëè íaøëè ìåíüøèé ýëåìåíò, çaïîìèíaåì åãî íîìåð: if (b[j] < b[imin]) imin = j;
int a = b[i]; // îáìåí ýëåìåíòîâ b[i] = b[imin]; // ñ íîìåðaìè b[imin] = a; // i è imin
}
// âûâîä óïîðяäî÷åííîãî ìaññèâa:
fOr (i = 0; i}
Ïðîöåññ îáìåía ýëåìåíòîâ ìaññèâa ñ íîìåðaìè i è imin ÷åðåç áóôåðíóþ ïåðåìåí- íóþ a ía i-ì ïðîõîäå öèêëa ïðîèëëþñòðèðîâaí ía ðèñ. 1.9. Öèôðû îêîëî ñòðåëîê îáîçía÷aþò ïîðяäîê äåéñòâèé.
a
Do'stlaringiz bilan baham: |