Concetti Chiave

  • La funzione matriceTriang crea e restituisce una matrice triangolare di interi allocata dinamicamente.
  • Gli elementi della matrice sono riempiti con valori sequenziali a partire da 1 fino a completare la matrice.
  • La matrice è strutturata in righe decrescenti, con la prima riga contenente il numero massimo di elementi.
  • Ogni riga della matrice è allocata separatamente per ottimizzare l'uso della memoria.
  • La funzione utilizza malloc per l'allocazione della memoria, garantendo che non venga utilizzata più memoria del necessario.

Scrivi una funzione C/C++ che crea e restituisce una matrice triangolare di interi i cui elementi hanno valori 1, 2, 3, ... . Naturalmente, la matrice deve essere allocata dinamicamente e non bisogna usare più memoria di quella strettamente necessaria.

Ad esempio se l’ordine (della matrice) è 5 la funzione deve creare la matrice:

1 2 3 4 5

6 7 8 9

10 11 12

13 14

15

Scrivi l’istruzione di chiamata e definisci tutte le variabili necessarie.

Definizione (codifica) della funzione:

Allocazione dinamica della matrice

int **matriceTriang(int ordine)

{

int **m = (int **) malloc(ordine*sizeof(int *)); //Alloca il vettore delle righe

int r, c, numCol = ordine, k = 1;

for (r = 0 ; r

{

m[r] = (int *) malloc(numCol*sizeof(int)); //Alloca la riga r-esima

for (c = 0 ; c

{

m[r][c] = k;

k++;

}

numCol--;

}

return m;

}

int ** matrix;

int ordine;

matrix = matriceTriang(ordine);

Domande da interrogazione

  1. Come viene allocata dinamicamente la matrice triangolare nella funzione matriceTriang?
  2. La funzione matriceTriang alloca dinamicamente la matrice triangolare utilizzando malloc per creare un array di puntatori per le righe e poi alloca memoria per ciascuna riga con un numero decrescente di colonne, partendo dall'ordine specificato.

  3. Qual è il ruolo della variabile 'k' nella funzione matriceTriang?
  4. La variabile 'k' viene utilizzata per assegnare valori incrementali agli elementi della matrice, iniziando da 1 e incrementando di 1 per ogni elemento successivo, garantendo che i numeri siano sequenziali.

  5. Come viene gestito il numero di colonne per ciascuna riga nella matrice triangolare?
  6. Il numero di colonne per ciascuna riga viene gestito dalla variabile 'numCol', che inizia con il valore dell'ordine e viene decrementata di 1 dopo ogni riga, creando così la forma triangolare della matrice.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community