Domanda Dichiarazione matrice[c]

Cingetorge

Utente Iron
22 Gennaio 2023
31
5
2
12
Salve a tutti sono nuovo di questo forum come lo sono del linguaggio , per cui siate clementi :)

Stavo provando questo semplice listato che chiede in ingresso dei valori per “riempire ” la matrice. Vorrei sapere ,partendo dal fatto che bisogna dichiarare le variabili prima del suo utilizzo.come mai la dichiarazione della matrice “int vett[maxr][maxc];”( 8# riga) la lascio li dov'è, il programma funziona.Se invece, la metto insieme alle altre dichiarazioni delle variabili, (4° rigra) l'eseguzione si blocca.
Grazie a chiunque vorrà rispondermi.
#include <stdio.h>
main() {
int maxr, maxc,r,c,posr,posc;
printf ("inserisci valore max riga:");
scanf("%d", &maxr);
printf("inserisci valore max colonna:");
scanf("%d", &maxc);
int vett[maxr][maxc];

for (r=0; r<maxr; ++r){
for(c=0; c<maxc;++c){
printf("inserisci valore %d riga, %d colonna",r,c);
scanf("%d", &vett[r][c]);
}
}

printf("quali riga vuoi modificare");
scanf("%d",&posr);
printf("quali colonna vuoi modificare");
scanf("%d", &posc);
printf("inserisci il nuovo valore della cella %d%-%d",r,c);
scanf("%d", &vett[posr][posc]);
}
 
Salve a tutti sono nuovo di questo forum come lo sono del linguaggio , per cui siate clementi :)

Stavo provando questo semplice listato che chiede in ingresso dei valori per “riempire ” la matrice. Vorrei sapere ,partendo dal fatto che bisogna dichiarare le variabili prima del suo utilizzo.come mai la dichiarazione della matrice “int vett[maxr][maxc];”( 8# riga) la lascio li dov'è, il programma funziona.Se invece, la metto insieme alle altre dichiarazioni delle variabili, (4° rigra) l'eseguzione si blocca.
Grazie a chiunque vorrà rispondermi.
#include <stdio.h>
main() {
int maxr, maxc,r,c,posr,posc;
printf ("inserisci valore max riga:");
scanf("%d", &maxr);
printf("inserisci valore max colonna:");
scanf("%d", &maxc);
int vett[maxr][maxc];

for (r=0; r<maxr; ++r){
for(c=0; c<maxc;++c){
printf("inserisci valore %d riga, %d colonna",r,c);
scanf("%d", &vett[r][c]);
}
}

printf("quali riga vuoi modificare");
scanf("%d",&posr);
printf("quali colonna vuoi modificare");
scanf("%d", &posc);
printf("inserisci il nuovo valore della cella %d%-%d",r,c);
scanf("%d", &vett[posr][posc]);
}
Ciao, questo accade perché, se dichiari insieme alle altre variabili il vettore bidimensionale, il calcolatore ancora non sa quanta memoria allocare per quella matrice, dato che le variabili "maxr" e "maxc" non sono state ancora acquisite dall'utente. Dichiarando il vettore, invece, dopo l'acquisizione del numero di righe e colonne il calcolatore riesce ad allocare la memoria per l'array.
 
Ciao CreazyMonk,
grazie per la tua risposta. Ora mi è tutto molto più chiaro.
Quindi il fatto di dichiarare tutte le variabili forzatamente all'inizio del listato non è sempre corretto .
grazie mille
 
  • Mi piace
Reazioni: --- Ra ---
Esatto, se la dimensione iniziale della struttura dati non è nota a priori devi fare così. Perché in questo caso parliamo di Array, che sono strutture dati non dinamiche.