Arrays în c

Arrays sunt proiectate pentru a stoca mai multe valori de același tip. De exemplu, în programul Fahrenheit-Celsius, am calculat temperatura medie de trei. Dacă valorile nu sunt trei, dar mult mai mult, atunci trebuie doar să folosiți matrice.







Înainte de a putea utiliza o matrice, trebuie să o definiți. Definiția unei matrice include: tipul de date stocate în matrice, numele matricei și numărul elementelor din matrice sunt indicate în paranteze pătrate:

În acest cod, am definit o matrice cu un identificator de matrice (matrice) de zece elemente de tip int.
În această formă, toate elementele matricei sunt încă neinitializate. Pentru a le inițializa la declarație, trebuie să utilizați următoarea sintaxă:

int array [10] =;

În acest caz, primul element al matricei este setat la 0, iar ultimul element este setat la 9.
Pentru a atribui o valoare elementului matricei, puteți utiliza cicluri. Cel mai potrivit pentru acest lucru este buclă.

Aici se referă la fiecare element al matricei prin index - numărul din paranteze. La fiecare iterație a buclă, este nevoie de valori de la zero la 9.

Rețineți că indexarea începe de la zero. Prin urmare, numărul de indici este întotdeauna unul mai mic decât numărul elementelor din matrice.

Cu excepția parantezelor pătrate și a unui index, elementul matricei este utilizat ca orice variabilă.

Până acum, am putea stoca stringuri în constante: "Exemplu de șir constant". În variabile, am putea stoca un singur caracter - în tipul de caractere. În C ++ se folosesc două tipuri de șiruri de caractere: o serie de elemente char și un tip str. Acum ne vom concentra pe prima opțiune.

Pentru a stoca un șir, avem nevoie de o matrice. Arata cam asa:

Din fericire există o cale mai ușoară :)

șir de caractere [] = "șir";

În acest caz, se va crea automat o serie de șapte elemente. De ce șapte? Faptul este că fiecare linie trebuie să se termine cu o constantă caracter "\ 0", care reprezintă un octet gol.

În exemplele anterioare, dacă încercăm să introducem un șir mai mare de șase caractere în matricea de șir, matricea va depăși. Nu puteți schimba dimensiunea unui matrice la timpul de execuție (deși nu întotdeauna):

șir de caractere [7]; // șirul poate stoca șase caractere și "\ 0"

string = "string!"; // linia conține șapte caractere
Deci nu recomanda :)

Încă un lucru la care vreau să vă atrag atenția. În cazul în care utilizatorul introduce un șir, spațiile sunt numărate ca "\ 0". Nu vom intra încă în programele noastre, așa că nu voi explica acest caz în detaliu.

Arrays de matrice (matrice bidimensionale)

În cele din urmă, am ajuns la cele mai importante în această problemă.

Harta jocurilor strategice (și nu numai) (RTS) este împărțită în celule (în limba engleză - țiglă, țiglă). Aceste celule sunt reprezentate convenabil utilizând o matrice bidimensională.

În acest exemplu, vom continua să lucreze cu programul pseudo_game și cu ajutorul unui tablou bidimensional simula o hartă pe care jucător poate muta. Până în prezent, "interleaving" a fost reprezentată folosind coordonatele x, y.







Vom reprezenta celulele ca simboluri. Dimensiunea "cardului" este de 15x20. Cincisprezece în înălțime, de două ori pe lățime. Jucătorul pe care îl vom reprezenta simbolul lui T.

Mai întâi adăugați fișierul antet stdlib.h.

Aici noul operator pentru noi este definirea unei matrice bidimensionale. Dar aproape că nu diferă de unidimensional, se adaugă o altă pereche de paranteze pătrate. În primele paranteze am indicat numărul de rânduri, în al doilea - numărul de coloane.

După aceea, în două cicluri, inițializăm fiecare element al matricei cu valoarea '' - este doar un caracter al spațiului alb. În primul rând - în ciclul extern, trecem prin toate liniile. Pentru fiecare linie din bucla interioară, vom "trece prin" coloanele.

Pentru a da un exemplu detaliat după mai multe iterații ale buclei exterioare, contorul i devine egal cu 9. începe care efectuează corpul buclei exterioare: j variabilă (interior contor buclă) este inițializat la zero, condiția este verificată și executată de către corpul buclei interioare: harta [9] [0] = „“ ,, care este primul caracter (indicele zero) a zecea rând (nu uitați că numărul este zero) este atribuit unui spațiu. Apoi, contorul j este atribuit 1, corpul bucla este executat. și așa mai departe până când contra j devine egal cu 20 - condiția nu este satisfăcută și există o ieșire din bucla interioară. Apoi, contorul extern este incrementat. Acum este de 10 și corpul bucla exterioară este executat din nou.

După inițierea cu spații, am pus caracterul jocului nostru în prima coloană a primului rând.

La începutul buclei principale, numim funcția sistemului () pentru a șterge ecranul de la ieșirea anterioară.

Apoi, există două cicluri care sunt similare cu ciclurile de inițializare. Ele sunt folosite pentru a afișa elemente de matrice pe ecran. Singura diferență semnificativă este rezultatul caracterului de linie nouă la sfârșitul corpului primului ciclu.

Ei bine, atunci există o ramură în care se determină ce tastă este presată. Nu mai este nevoie ramificare puțin sa schimbat de la ultima dată, dar există diferențe în blocuri de conținut: În primul rând, vom atribui coordonatele pe care există un obiect spațiu. Asta este, am șterge locul anterior. Apoi schimbăm una din coordonate. Apoi, la elementul matricei cu noi indici, atribuim simbolul "T".

Exemplu pentru codul "75" - mișcare spre stânga:

Ei bine, asta e tot. În prezent, avem o hartă de 15x20 pe care puteți folosi săgețile pentru a muta caracterul - litera "T". Pentru a șasea lecție nu este rău! Această aplicație va deveni baza tuturor programelor noastre de consolă. Nu vor exista îmbunătățiri grafice. Cea mai mare din consola consolei nu se stoarce, dar ferestrele de consolă nu vom lua în considerare. Acest lucru va economisi timp și energie considerabilă.

1. În lista completă a programului, am folosit comutatorul de ramură. Aici este codul unui bloc de ramură dacă. Adăugați blocurile rămase dacă.

2. Acum programul poate scrie către elementele inexistente ale matricei. Verificați dacă sunt depășite.

3. Pentru practică, creați un program care atrage pe ecran două câmpuri pentru lupta pe mare. Primul este pentru jucător, al doilea pentru adversar. Al doilea câmp ar trebui să fie în partea dreaptă a primului.
Umpleți celulele interioare cu un gol. Pentru a trasa o margine, utilizați linia minus și linia dreaptă: -, |, iar pentru colțuri - utilizați grila #. În stânga fiecărui câmp este un bloc de figuri; pe - scrisori.
Pentru a inițializa întregul câmp, este posibil să aveți nevoie de mai multe cicluri. Iată cum ar putea arăta codul să umple coloana a doua a celui de-al doilea câmp:

Ultimele de pe forum

WapCash → Wap.cash - cea mai bună soluție pentru generarea de bani pentru traficul mobil
Prieteni, salut! Nu am adăugat doar un nou operator MTS în Belarus, ca o grămadă.

Edvard007 → Ce trebuie făcut dacă Insorg este blocat
Dragi utilizatori. Am adăugat un plug-in pentru a ocoli blocarea site-urilor Insorg pentru browsere.

Appfoxapp → Programator Unity necesar pentru munca de la distanță
Unitatea dezvoltator este obligat să lucreze de la distanță, în programul de 5-2 de la 10.00 la 19.00 p.

proxyan → Instrumente PROXYAN.net - cumpara server proxy de incredere, rapid HTTP / SOCKS
Oferta speciala! Activați la plata codului promoțional 6DCEBF5601DF48B7 și obțineți o reducere de 5%. Acțiunea este valabilă.

dimaCyberpunk → Joc în curs de dezvoltare: Cronici de cyberpunk
Partea tehnică a dezvoltării este terminată, jocul poate fi trecut de la început până la sfârșit. Rămâne numai.

ZARR → instalarea motivată a aplicațiilor Android
Un serviciu pentru dezvoltatorii de aplicații Android, oferă cele mai ieftine instalații motivaționale.

Prietenii noștri







Articole similare

Trimiteți-le prietenilor: