Ïîìîãíè íè äà íàïðàâèì Uroci.net ïî - áîãàò! Äîáàâè óðîê
Êàòåãîðèè Äðóãè óðîöè Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS è HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic JavaScript Ajax 3ds Max Maya 3D C++
C++
Sound Forge Gimp SWiSH

Ñ++ ÷àñò.2 (Òèïîâå äàííè)

C++ » C++
fix3d   òðóäíîñò:    âèäÿí: 8094



Ìíîãîìåðíè ìàñèâè

Âúçìîæíî å äà áúäàò äåôèíèðàíè è ìíîãîìåðíè ìàñèâè. Âñÿêà ðàçìåðíîñò ñå îïðåäåëÿ ÷ðåç ñîáñòâåíà äâîéêà îò ñêîáè. Íàïðèìåð, èçðàçúò

int ia[ 4 ][ 3 ];

äåôèíèðà äâóìåðåí ìàñèâ. Ïúðâàòà ðàçìåðíîñò ñå îòíàñÿ çà ðåäîâå, à âòîðàòà - çà êîëîíè. Ò.å. ia å äâóìåðåí ìàñèâ, ïðèòåæàâàù ÷åòèðè êîëîíè ñ ïî òðè åëåìåíòà. Äâóìåðíèòå ìàñèâè îáèêíîâåíî ñå íàðè÷àò ìàòðèöè.

Ìíîãîìåðíèòå ìàñèâè ìîãàò ñúùî äà áúäàò èíèöèàëèçèðàíè.

int ia[ 4 ][ 3 ] ={ { 0, 1, 2 }, { 3, 4, 5 },
{ 6, 7, 8 }, { 9, 10, 11 } }

Âúòðåøíèòå ñêîáè, óêàçâàùè ðàçäåëÿíåòî ïî ðåäîâå, íå ñà çàäúëæèòåëíè. Ñëåäíàòà èíèöèàëèçàöèÿ å åêâèâàëåíòíà íà ïðåäõîäíàòà, âúïðåêè ÷å íå å òîëêîâà ÿñíà.

int ia[4][3] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11 };

×ðåç äåôèíèöèÿòà, êîÿòî ñëåäâà, ñå èíèöèàëèçèðàò ïúðâèòå åëåìåíòè íà âñåêè ðåä. Îñòàíàëèòå åëåìåíòè ïîëó÷àâàò ñòîéíîñò íóëà.

int ia[4][3] = { {0}, {3}, {6}, {9} };

Êîãàòî âúòðåøíèòå ñêîáè ëèïñâàò ðåçóëòàòúò ùå áúäå ñúâñåì ðàçëè÷åí. Ñúñ ñëåäíàòà äåôèíèöèÿ

int ia[4][3] = { 0, 1, 2, 3 };

ñå èíèöèàëèçèðàò ïúðâèòå òðè åëåìåíòà íà ïúðâèÿ ðåä è ïúðâèÿ åëåìåíò íà âòîðèÿ. Îñòàíàëèòå åëåìåíòè ïîëó÷àâàò ñòîéíîñò 0. Çà äà ñå èíäåêñèðàò ìíîãîìåðíè ìàñèâè ñå èçïîëçóâàò äâîéêè ñêîáè çà âñÿêà ðàçìåðíîñò. Íàïðèìåð, ñëåäíàòà äâîéêà îò äâà âëîæåíè öèêúëà for èíèöèàëèçèðà äâóìåðåí ìàñèâ.

main() {
const rowSize = 4;
const colSize = 3;
int ia[ rowSize ][ colSize ];
for ( int i = 0; i < rowSize; ++i )
for ( int j = 0; j < colSize; ++j )
ia[ i ][ j ] = i + j;
}

 ïðîãðàìíèòå åçèöè Ïàñêàë èëè Àäà, ìíîãîìåðíèòå ìàñèâè ñå èíäåêñèðàò, êàòî ñå èçïîëçóâà ñïèñúê îò ñòîéíîñòè, ðàçäåëåíè ñúñ çàïåòàÿ, êîéòî å çàòâîðåí â åäíà äâîéêà îò ñêîáè. Âúïðåêè ÷å èçðàçúò

ia[ 1, 2 ]

ïðåäñòàâÿ åäíà ñèíòàêòè÷íî ïðàâèëíà êîíñòðóêöèÿ êàêòî â Ñ++, òàêà è â Àäà, çíà÷åíèåòî ìó å ñúâñåì ðàçëè÷íî â äâàòà åçèêà.

-  Àäà ÷ðåç òîçè èíäåêñ ñå óêàçâà âòîðèÿ åëåìåíò íà ïúðâèÿ ðåä. Ñòîéíîñòòà ìó å öÿëàòà âåëè÷èíà íà òîçè åëåìåíò.
-  Ñ++ èçðàçúò óêàçâà òðåòèÿ ðåä íà ia (äà ñè ïðèïîìíèì, ÷å ðåäîâåòå è êîëîíèòå ñå èíäåêñèðàò, êàòî ñå çàïî÷âà îò 0). Ñòîéíîñòòà ìó å óêàçàòåë êúì òèï int*, àäðåñèðàù íóëåâèÿ åëåìåíò íà òîçè ðåä.

 Ñ++ èíäåêñíèÿ èçðàç îò ïðèìåðà

ia[ 1, 2 ]

ñå ðàçãëåæäà èçðàç çà ïîñëåäîâàòåëíî èçïúëíåíèå, êîéòî âðúùà öÿëà ñòîéíîñò - â òîçè ñëó÷àé:

ia[ 2 ]

Èçðàçúò çà ïîñëåäîâàòåëíî èçïúëíåíèå ïðåäñòàâëÿâà ñåðèÿ îò èçðàçè, ðàçäåëåíè ñúñ çàïåòàÿ. Òîçè èçðàç ñå èç÷èñëÿâà îò ëÿâî íà äÿñíî. Ðåçóëòàòúò ìó å ñòîéíîñòòà íà íàé-äåñíèÿ èçðàç. Íàïðèìåð, ñòîéíîñòòà íà ñëåäíèÿ èçðàç çà ïîñëåäîâàòåëíî èçïúëíåíèå å 3.

7, 6+4, ia[0][0] = 0, 4-1; // comma expression

Âðúçêà ìåæäó òèïîâåòå ìàñèâ è óêàçàòåë

Äåôèíèöèÿòà íà åäèí ìàñèâ ñå ñúñòîè îò ÷åòèðè ðàçëè÷íè åëåìåíòà: ñïåöèôèêàòîð íà òèï, èäåíòèôèêàòîð, èíäåêñåí îïåðàòîð (“[]”) è îçíà÷åíèå íà ðàçìåðíîñòòà. Íàïðèìåð,

char buf[ 8 ];

äåôèíèðà buf êàòî ìàñèâ îò 8 åëåìåíòà îò òèï char. Ïîäîïèñàíèå, îñúùåñòâåíî ÷ðåç ïðèëàãíå íà èíäåêñíèÿ îïåðàòîð êúì èäåíòèôèêàòîðà íà ìàñèâà, îò âèäà

buf[ 0 ];

âðúùà ñòîéíîñòòà íà ïúðâèÿ åëåìåíò, êîéòî ñå ñúäúðæà â buf. Êàêâî, îáà÷å, ñå ñëó÷âà, êîãàòî áúäå ïðîïóñíàò èíäåêñíèÿ îïåðàòîð? Êàêâà å ñòîéíîñòòà íà ñàìèÿ èäåíòèôêàòîð íà ìàñèâ?

buff;

Èäåíòèôèêàòîðúò íà ìàñèâà ïðåäñòàâÿ àäðåñà íà ïúðâèÿ åëåìåíò, êîéòî ñå ñúäúðæà â buf. Òîâà å åêâèâàëåíòíî íà

&buf[ 0 ];

Äà ñè ïðèïîìíèì, ÷å ïðèëàãàíåòî íà àäðåñíèÿò îïåðàòîð êúì äàííîâ îáåêò âðúùà óêàçàòåë îò òèïà íà îáåêòà.  òîçè ñëó÷àé, îáåêòúò å îò òèï char, êîåòî îçíà÷àâà, ÷å buf òðÿáâà äà âðúùà ñòîéíîñò îò òèï char*. Àêî òîâà å òàêà, òî åäèí óêàçàòåë áè ìîãúë äà áúäå è èäåíòèôèêàòîð íà ìàñèâ. Íàïðèìåð,

char *pBuf = buff; // ok

pbuf è buf ñåãà âå÷å ñà åêâèâàëåíòíè. Âñè÷êè èç÷èñëåíèÿ ñå èçâúðøâàò ñïðÿìî ïúðâèÿ åëåìåíò íà ìàñèâà. Çà äà áúäå àäðåñèðàí ñëåäâàùèÿ åëåìåíò, ñëåäîâàòåëíî, ìîãàò äà ñå ïðèëîæàò ñëåäíèòå äâà ìåòîäà, êîèòî ñúùî òðÿáâà äà áúäàò åêâèâàëåíòíè:

// equivalent addressing methods
pBuff + 1;
&buf[ 1 ];

È èçîáùî

for ( int i = 0; i < arraySize; ++i )
{ pBuf + 1;
&buf[ i ]; }

Îò òîâà ñëåäâà, ÷å ôîðìèòå

// two equivalent accessing methods
*pbuf;
buff[ 0 ];

ñà åêâèâàëåíòíè. Âñåêè îò òÿõ âðúùà ñòîéíîñòòà íà íóëåâèÿ åëåìåíò íà ìàñèâà. Çà äà ïîëó÷è äîñòúï äî ñëåäâàùèÿ åëåìåíò ïðîãðàìèñòúò òðÿáâà äà èçïîëçóâà åäèí îò ñëåäíèòå äâà íà÷èíà:

*( pBuff + 1 );
buf[ 1 ];

èëè ïî-îáùî êàçàíî,

*( pBuff + index );
buf[ index ];

Òåçè äâà ìåòîäà çà àäðeñèðàíå íà åëåìåíòè íà ìàñèâ ìîãàò äà áúäàò èçïîëçóâàíè ðàâíîñòîéíî. Ïðîãðàìèñòèòå, êîèòî ñåãà ñå çàïîçíàâàò ñúñ Ñ++ ÷åñòî òðóäíî áîðàâÿò ñ óêàçàòåëíèÿ ñèíòàêñèñ.  íà÷àëîòî òå ìîæå äà èñêàò äà ïðèëàãàò èíäåêñíèÿ îïåðàòîð êúì óêàçàòåëè, êîéòî àäðåñèðàò ìàñèâè. Ñëåäâàùàòà ðåàëèçàöèÿ íà ôóíêöèÿ, êîÿòî ñëåïâà äâà íèçà, å åäèí òàêúâ ïðèìåð.

#include <stream.h>
char *catString( char *st1, char *st2 ) {

// append st2 to st1 if two distinct strings
// if st1 does not address a string
// but st2 does, return st2

if ( st1 == 0 && st2 )
return st2;

// unless st1 and st2 address distinct
// strings, returns st1

if ( st2 == 0 || st1 == st2 )
return st1;

for ( int i = 0; st1[ i ] != ‘�’; ++i ) ;
// stpe through to end of st1

for ( int j = 0; st2[ j ] !=; ++i, ++j )
st[ i ] = st[ j ];
st2[ i ] = ‘�’;
return st1;
}

Åêâèâàëåíòíîñòòà íà óêàçàòåëè è ìàñèâè òðÿáâà äà ñå ðàçáèðà â ñìèñúë íà äîñòúï èëè àäðåñèðàíå íà áëîêîâå îò ïàìåòòà. Ìåòîäúò, ïî êîéòî, îáà÷å, èäåíòèôèêàòîðúò íà ìàñèâ è óêàçàòåëÿò àäðåñèðàò ïàìåòòà å ñúùåñòâåíî ðàçëè÷åí.

Âñÿêà äåôèíèöèÿ íà ìàñèâ ïðåäèçâèêâà îòäåëÿíå íà áëîê îò ïàìåò. Èäåíòèôèêàòîðúò íà ìàñèâà ñå èíèöèàëèçèðà ñ òîçè àäðåñ, êàòî òîé íå ìîæå äà áúäå ïðîìåíÿí âúâ âúòðåøíîñòòà íà ïðîãðàìàòà. Íà ïðàêòèêà èäåíòèôèêàòîðà íà ìàñèâà ñå îáðàáîòâà êàòî êîíñòàíòà. Ñëåäîâàòåëíî, îïèòúò äà áúäå óâåëè÷åí buf â ñëåäâàùàòà ïðîãðàìà å íåêîðåêòåí. Èäåíòèôèêàòîðúò íà ìàñèâ íå å ñòîéíîñò çà çàïèñ.

char buf[] = "rampion";
main() {
int cnt = 0;
while ( *buf ) { ++cnt;
++buf; // error: may not increment buff
} }

Äåôèíèöèÿòà íà óêàçàòåë ïðåäëàãà ñàìî âúçìîæíîñò äà ñå ñúõðàíÿâà ñòîéíîñò íà àäðåñ îò ïàìåòòà. Ïðîãðàìèñòúò òðÿáâà äà äàäå íà óêàçàòåëÿ ñòîéíîñò, ïðåäñòàâëÿâàùà àäðåñ íà âå÷å ðàçïîëîæåí â ïàìåòòà îáåêò èëè íà ÷àñò îò òàêúâ, ïðåäè äà ìîæå äà áúäå èçïîëçâàí ñïîêîéíî. Òîâà îòäåëÿíå íà ïàìåò ÷åñòî ñå ïðàâè è ïî âðåìå íà èçïúëíåíèå íà ïðîãðàìàòà êàòî ñå èçïîëçóâà îïåðàòîðà new. (Âæ. ðàçäåë 5.1 çà ïîâå÷å èíôîðìàöèÿ).

Óïðàæíåíèå 1-13. Âúïðåêè ÷å ñëåäíàòà ïðîãðàìà ñå êîìïèëèðà áåç ïðåäóïðåæäåíèÿ èëè ñúîáùåíèÿ çà ãðåøêè, â íåÿ èìà íåùî íåïðàâèëíî. Êúäå å ïðîáëåìà? Êàê ùå ãî îòêðèåòå?

char buf[] = "fiddleferns";
main() {
char *ptr = 0;
for ( int i = 0; buf[ i ] != ‘�’; ++i;)
ptr[ i ] = buf[ i ];
}



Ñòðàíèöè: «3 4 5 6 7 8 »

Ðåãèñòðèðàéòå ñå, çà äà äîáàâèòå êîìåíòàð

ðåêëàìà

© Âñè÷êè ïðàâà çàïàçåíè. 2006-2008. Created by: Site.bg
Ïðåïîðú÷âàìå: IT Íîâèíè | Êèíî è èãðè | Äèïëîìà.áã | Paparak.bg | Òóíèíã Ïîðòàë | uchenik.com | TRAVEL òóðèçúì | Ðåôåðàòè | AmAm.bg | Èäå.ëè | Êóðñîâè ðàáîòè | AnimeS-bg.com | Ôîòî Ôîðóì | Çàïîçíàíñòâà | Ìðåæà îò ïðèÿòåëè | IT Light | Spodeli.net | Ôîòî-Êóëò | IDG.BG | Teenproblem.net | Áëîã - Îáðàçîâàíèå | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Êàçàíëúê.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com