Ìíîãîìåðíûå ìaññèâû çaäaþòñя óêaçaíèåì êaæäîãî èçìåðåíèя â êâaäðaòíûõ ñêîáêaõ, íaïðèìåð, îïåðaòîð
int matr [6][8];
çaäaåò îïèñaíèå äâóìåðíîãî ìaññèâa èç 6 ñòðîê è 8 ñòîëáöîâ.  ïaìяòè òaêîé ìaññèâ ðañïîëaãaåòñя â ïîñëåäîâaòåëüíûõ я÷åéêaõ ïîñòðî÷íî. Ìíîãîìåðíûå ìaññèâû ðaçìåùaþòñя òaê, ÷òî ïðè ïåðåõîäå ê ñëåäóþùåìó ýëåìåíòó áûñòðåå âñåãî èçìåíяåòñя ïîñëåäíèé èíäåêñ. Äëя äîñòóïa ê ýëåìåíòó ìíîãîìåðíîãî ìañ- ñèâa óêaçûâaþòñя âñå åãî èíäåêñû, íaïðèìåð, matr[i][j], èëè áîëåå ýêçîòè÷å- ñêèì ñïîñîáîì: *(matr[i]+j) èëè *(*(matr+i)+j). Ýòî âîçìîæíî, ïîñêîëüêó matr[i] яâëяåòñя aäðåñîì ía÷aëa i-é ñòðîêè ì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ìяòè:
int mass2 [][]={ {1, 1}, {0, 2}, {1, 0} };
int mass2 [3][2]={1, 1, 0, 2, 1, 0};
Ïðèìåð. Ïðîãðaììa îïðåäåëяåò â öåëî÷èñëåííîé ìaòðèöå íîìåð ñòðîêè, êîòîðaя ñîäåðæèò íaèáîëüøåå êîëè÷åñòâî ýëåìåíòîâ, ðaâíûõ íóëþ.
inClude int main(){
COnst int nstr = 4, nstb = 5; // ðaçìåðíîñòè ìaññèâa
int b[nstr][nstb]; // îïèñaíèå ìaññèâa int i, j;
fOr (i = 0; iint istr = -1, MaxKOl = 0;
fOr (i = 0; ifOr (j = 0; j MaxKOl){istr = i; MaxKOl = KOl;}
}
printf(" Èñõîäíûé ìaññèâ:\n"); fOr (i = 0; ifOr (j = 0; jif (istr == -1)printf("Íóëåâûõ ýëåìåíòîâ íåò"); else printf("Íîìåð ñòðîêè: %d", istr);
return 0;}
Íîìåð èñêîìîé ñòðîêè õðaíèòñя â ïåðåìåííîé istr, êîëè÷åñòâî íóëåâûõ ýëåìåí- òîâ â òåêóùåé (i-é) ñòðîêå — â ïåðåìåííîé KOl, ìaêñèìaëüíîå êîëè÷åñòâî íó- ëåâûõ ýëåìåíòîâ — â ïåðåìåííîé MaxKOl. Ìaññèâ ïðîñìaòðèâaåòñя ïî ñòðîêaì, â êaæäîé èç íèõ ïîäñ÷èòûâaåòñя êîëè÷åñòâî íóëåâûõ ýëåìåíòîâ (îáðaòèòå âíè- ìaíèå, ÷òî ïåðåìåííaя KOl îáíóëяåòñя ïåðåä ïðîñìîòðîì êaæäîé ñòðîêè). Íaè- áîëüøåå êîëè÷åñòâî è íîìåð ñîîòâåòñòâóþùåé ñòðîêè çaïîìèíaþòñя.
Äëя ñîçäaíèя äèíaìè÷åñêîãî ìíîãîìåðíîãî ìaññèâa íåîáõîäèìî óêaçaòü â îïåða- öèè new âñå åãî ðaçìåðíîñòè (ñaìaя ëåâaя ðaçìåðíîñòü ìîæåò áûòü ïåðåìåííîé), íaïðèìåð:
int nstr = 5;
int ** m = (int **) new int [nstr][10];
Áîëåå óíèâåðñaëüíûé è áåçîïañíûé ñïîñîá âûäåëåíèя ïaìяòè ïîä äâóìåðíûé ìaññèâ, êîãäa îáå åãî ðaçìåðíîñòè çaäaþòñя ía ýòaïå âûïîëíåíèя ïðîãðaììû, ïðèâåäåí íèæå:
int nstr, nstb;
COut << " Ââåäèòå êîëè÷åñòâî ñòðîê è ñòîëáöîâ :"; Cin >> nstr >> nstb;
int **a = new int *[nstr]; // 1 fOr(inti= 0; i…
 îïåðaòîðå 1 îáúяâëяåòñя ïåðåìåííaя òèïa «óêaçaòåëü ía óêaçaòåëü ía int» è âû- äåëяåòñя ïaìяòü ïîä ìaññèâ óêaçaòåëåé ía ñòðîêè ìaññèâa (êîëè÷åñòâî ñòðîê — nstr).  îïåðaòîðå 2 îðãaíèçóåòñя öèêë äëя âûäåëåíèя ïaìяòè ïîä êaæäóþ ñòðîêó ìaññèâa.  îïåðaòîðå 3 êaæäîìó ýëåìåíòó ìaññèâa óêaçaòåëåé ía ñòðîêè ïðèñâaè-
âaåòñя aäðåñ ía÷aëa ó÷añòêa ïaìяòè, âûäåëåííîãî ïîä ñòðîêó äâóìåðíîãî ìaññè- âa. Êaæäaя ñòðîêa ñîñòîèò èç nstb ýëåìåíòîâ òèïa int (ðèñ. 1.10).
int **a int *a[nstr] int a[nstr][nstb]
0 1 nstb–1
1
…
nstr–1
nstb
Do'stlaringiz bilan baham: |