Įdėtos C ++ kilpos

Autorius Stephenas R. Davisas

Pats kilpos kūnas gali turėti kilpą; šis susitarimas yra žinomas kaip įdėtos kilpos . Vidinė kilpa turi būti užbaigta kiekvieną kartą per išorinę kilpą.



C ++ programa naudojo įdėtas kilpas, kad sukurtų daugybos lentelę šia forma:



 0 1 2 3 4 5 6 7 8 9 0 0*0 0*1 0*2 0*3 0*4 0*5 0*6 0*7 0*8 0*9 1 1*0 1*1 1*2 1*3 1*4 1*5 1*6 1*7 1*8 1*9 2 2*0 2*1 2*2 2*3 2*4 2*5 2*6 2*7 2*8 2*9 //... and so on...

Galite pamatyti, kad 0 eilutėje programa turi kartotis nuo 0 iki 9 stulpelių. Programa pakartoja procesą 1 eilutėje, vėl 2 eilutėje ir taip toliau tiesiai iki 9 eilutės. Tai reiškia, kad reikia dviejų kilpų : vidinė kilpa kartojama virš stulpelių ir antroji išorinė kilpa kartojama virš eilučių.

oksikodono pusinės eliminacijos periodo skaičiuoklė

Kiekviena lentelės vieta yra tiesiog eilutės numeris ir stulpelio numeris.



vaistai nuo vėjaraupių

Tai yra būtent taip, kaip nurodyta toliau„NestedLoops“programa veikia:

// // NestedLoops - this program uses a nested loop to // calculate the multiplication table. // #include #include #include using namespace std; int main(int nNumberofArgs, char* pszArgs[]) { // display the column headings int nColumn = 0; cout << ' '; while (nColumn < 10) { // set the display width to two characters // (even for one digit numbers) cout.width(2); // now display the column number cout << nColumn << ' '; // increment to the next column nColumn++; } cout << endl; // now go loop through the rows int nRow = 0; while (nRow < 10) { // start with the row value cout << nRow << ' - '; // now for each row, start with column 0 and // go through column 9 nColumn = 0; while(nColumn < 10) { // display the product of the column*row // (use 2 characters even when product is // a single digit) cout.width(2); cout << nRow * nColumn << ' '; // go to next column nColumn++; } // go to next row nRow++; cout << endl; } // wait until user is ready before terminating program // to allow the user to see the program results cout << 'Press Enter to continue...' << endl; cin.ignore(10, 'n'); cin.get(); return 0; }

Pirmajame skyriuje sukuriamos stulpelių antraštės. Šis skyrius inicijuojamasnKolonasiki 0. Tada jis kartojasinKolonasišspausdinant jo vertę, atskirtą tarpu ikinKolonaspasiekia 10. Šiuo metu programa išeina iš pirmosios kilpos, o po to užmauna naują eilutę, kad užbaigtų eilutę. Paveiksle grafiškai pavaizduotas šis procesas.

image0.jpg



Vien tik vykdant šį skyrių, gaunamas toks išvestis:

vaisto žindymo laikotarpiu
0 1 2 3 4 5 6 7 8 9

Išsireiškimascout.width (2)nustato ekrano plotį į du stulpelius - C ++ kairėje užpildys tarpą vienženkliams skaičiams.

Antrasis kilpų rinkinys, įdėtos kilpos, prasideda nuonRowlygus 0. Programa išspausdina eilutės numerį, po kurio yra brūkšnys, prieš paleidžiant į antrą prasidedančią kilpąnKolonasvėl ties 0 ir pakartoja jį atgal iki 9. Kiekvieną kartą einant per šią vidinę kilpą, programa nustato išvesties plotį į du tarpus ir tada rodonRow * nColumnpo kurio - tarpas.

Ekrano plotis iš naujo nustatomas kiekvieną kartą, kai ką nors išvedate, todėl prieš išvesdami skaičių, kiekvieną kartą jį reikia nustatyti atgal į 2.

Programa išleidžia naują eilutę, kad kiekvieną kartą, kai tik padidinsite, išvestis bus perkelta į kitą eilutęnRow. Tai grafiškai parodyta čia:

image1.jpg

Šios programos išvestis rodoma taip:

amox/k clav
 0 1 2 3 4 5 6 7 8 9 0 - 0 0 0 0 0 0 0 0 0 0 1 - 0 1 2 3 4 5 6 7 8 9 2 - 0 2 4 6 8 10 12 14 16 18 3 - 0 3 6 9 12 15 18 21 24 27 4 - 0 4 8 12 16 20 24 28 32 36 5 - 0 5 10 15 20 25 30 35 40 45 6 - 0 6 12 18 24 30 36 42 48 54 7 - 0 7 14 21 28 35 42 49 56 63 8 - 0 8 16 24 32 40 48 56 64 72 9 - 0 9 18 27 36 45 54 63 72 81 Press Enter to continue . . .

Šioje lentelėje nėra nieko stebuklingo nuo 0 iki 9. Jūs tiesiog galėtumėte lengvai sukurti 12 x 12 daugybos lentelę (ar bet kurią kitą kombinaciją), pakeisdami trijų palyginimo išraiškąkolkilpos. Tačiau jei norite didesnio nei 10 x 10 dydžio, turite padidinti minimalų plotį, kad tilptų trijų skaitmenų produktai: naudokitecout.width (3).