Recalcularea manuală a indicilor

Caracteristicile de lucru cu matrice bidimensionale

Exemplu de utilizare a memoriei dinamice

În exemplul următor, memoria dinamică este utilizată pentru a stoca elemente de matrice cu o dimensiune predeterminată, a cărei intrare este terminată când un număr mai mare sau egal cu 1e300 apare în fluxul de intrare. În acest caz, segmentul de memorie, dimensiunea maximă, este mai întâi alocat matricei, atunci dimensiunea blocului de memorie este setată la dimensiunea reală corespunzătoare a matricei.







void * Malloc (dimensiune size_t)

void * p = malloc (dimensiune);

void * Realloc (blocul vid *, dimensiunea size_t)

void * p = realloc (bloc, mărime);

nesemnate i, n, maxN, goodIO;

A = (dublu *) Malloc (maxN = UINT_MAX);

pentru (goodIO = n = 0; n

printf ("A [.] =", n); scanf ("% lf", temp);

A = (dublu *) Realloc (A, n * sizeof (dublu));

/ * Prelucrarea matricei. De exemplu - tipărirea. * /

pentru (i = 0; i





printf ("% 10.3lf", A [i]);

dacă ((i + 6)% 5 == 0) printf ("\ n");

Dimensiunea maximă a segmentului în octeți este întotdeauna egală cu valoarea celui mai mare număr întreg nesemnat, valoarea căreia este determinată de constanta UINT_MAX din fișierul antet .

Programul folosește funcțiile Ajutor Malloc () și Realloc () pentru a controla alocarea memoriei. În ele funcționează ieșirea () cu prototipul din fișier Este folosit pentru a întrerupe funcționarea programului.

Atunci când lucrăm cu rețele dinamice bidimensionale, există anumite dificultăți asociate cu faptul că C nu are instrumente încorporate pentru a explica lungimea șirului când se indexează. De aceea, programatorul însuși trebuie să ofere posibilitatea indexării unei matrice bidimensionale. În plus, ar trebui să fie posibilă transferarea corectă a unei matrice dinamice unei funcții. În secțiunile următoare, un exemplu de program pentru a umple o matrice dreptunghiulară cu valori aleatorii va lua în considerare abordări diferite pentru a rezolva această problemă.

În următorul exemplu, o matrice bidimensională este reprezentată ca o matrice unidimensională, iar locația fiecărui element al unei matrice bidimensionale într-o matrice unidimensională este determinată de suma numărului coloanei și a produsului numărului de linie de lungimea liniei. Metoda de indexare este aceeași atât în ​​funcția de apelare cât și în funcția apelată.

#definiti MAXVAL 1000

void * Malloc (dimensiune size_t);

void RandomMatr (dublu * Matr, int n, int l);

void OutMatr (char * nume,

dublu * Matr, int n, int m);







Articole similare

Trimiteți-le prietenilor: