Dichiarazione matrice

di il
11 risposte

Dichiarazione matrice

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 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.

Buona giornata

#include  se la dichiarazione della matrice<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]);	
}

11 Risposte

  • Re: Dichiarazione matrice

    Ciao, quanto vale maxr e maxc in questo caso?

    #include <stdio.h>
    
    int main() 
    {
    	int maxr, maxc, vett[maxr][maxc];
    	...


    P.S.
    Lo sai che nel tuo caso vett non è un array statico ma un VLA?

  • Re: Dichiarazione matrice

    Ciao Nippolo, perdona la mia ignoranza …ma cosacentrano gli VLA (gli array con dimensione variabile) con il mio problema?

    Non essere cattivo con me !( come già detto sono una new entry )  :-) 

  • Re: Dichiarazione matrice

    Ti ho solo fatto delle domande… non mi sembra di essere stato particolarmente “cattivo”!

    Peraltro hai risposto al mio P.S. e non alla domanda precedente che aveva appunto lo scopo di farti capire in modo autonomo dove fosse il problema col tuo codice. Provo quindi a riformularti la domanda: se scrivi

    int maxr, maxc, vett[maxr][maxc];

    la matrice vett dichiarata che dimensioni avrà?

  • Re: Dichiarazione matrice

    No la mia era solo una battuta suggerita dall'indicazione sotto il tuo avatar.

    bhe , maxr e maxc sono di tipo int, tra 0 e 32767.

  • Re: Dichiarazione matrice

    Hai modificato il codice del primo post?

  • Re: Dichiarazione matrice

    21/01/2023 - oregon ha scritto:


    Hai modificato il codice del primo post?

    non quello con il listato. perche?

  • Re: Dichiarazione matrice

    Se le scrivi nella stessa riga sono eseguite in quel momento PRIMA delle scanf quindi il loro valore non può essere corretto. Capito? 

  • Re: Dichiarazione matrice

    21/01/2023 - oregon ha scritto:


    Se le scrivi nella stessa riga sono eseguite in quel momento PRIMA delle scanf quindi il loro valore non può essere corretto. Capito? 

    no, perdonami ma non ho capito.

    Una volta che dichiaro una variabile , il compilatore alloca dello spazio in memoria in funzione del tipo dichiarato.giusto?

    Vedo su internet e libri di testo dichiarare le variabili all' inizio del listato senza alcun problema.

    Non capisco perche nel mio caso mi genera problemi. 

    grazie

  • Re: Dichiarazione matrice

    No, sbagliato. La alloca secondo il valore delle dimensioni nel momento in cui esegue la linea di codice.

    Se hai trovato questo tipo di codice con delle variabili (non costanti) è codice sbagliato.

    È corretto scrivere la linea dopo le scanf che valorizzano le variabili usate per le dimensioni, come hai fatto nel codice.

  • Re: Dichiarazione matrice

    Ok grazie mille a tutti 

    buona giornata

  • Re: Dichiarazione matrice

    A te, spero sia tutto chiaro

Devi accedere o registrarti per scrivere nel forum
11 risposte