[C] Stampa di una matrice

di il
7 risposte

[C] Stampa di una matrice

Salve a tutti ragazzi,ho realizzato un programma che mi legge da file 3 numeri: indice riga,indice colonna,e valore dell'elemento e poi me li mette in una matrice e stampo la matrice risultante(prima dei valori nel file leggo due valori che sono le righe e le colonne della matrice)
es di file
3 3 (n righe e n colonne)
0 0 1 (indice riga indice colonna elemento corrispondente)
...

questo è il codice però non capisco perchè nella stampa finale mi ripete l'ultima riga 3 volte dove sbaglio?

#include <stdio.h>

int main(){
int i;
int j;
int indicer;
int indicec;
int elemento;
int DIMR;
int DIMC;
int mat[DIMR][DIMC];
FILE *fp;
fp=fopen("matrice.txt","r");
if(fp==NULL){
printf("errore");	
}
//LETTURA NUMERO RIGHE E COLONNE
fscanf(fp,"%d,%d",&DIMR,&DIMC);
printf("%d\n",DIMR);
printf("%d\n",DIMC);
printf("la matrice ha %d righe e %d colonne\n",DIMR,DIMC);

//LETTURA ALTRI ELEMENTI


fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Primo elemento:%d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Secondo elemento: %d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Terzo elemento: %d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Quarto elemento :%d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Quinto elemento: %d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Sesto elemento %d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Settimo elemento: %d\n",mat[indicer][indicec]);
	

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Ottavo elemento :%d\n",mat[indicer][indicec]);

fscanf(fp,"%d,%d,%d",&indicer,&indicec,&elemento);
printf("%d,%d,%d\n",indicer,indicec,elemento);
mat[indicer][indicec]=elemento;	
printf("Nono elemento : %d\n",mat[indicer][indicec]);

for(i=0;i<DIMR;i++){
for(j=0;j<DIMC;j++)
printf("%d",mat[i][j]);
printf("\n");	
	
}


	
	
	
	
}




7 Risposte

  • Re: [C] Stampa di una matrice

    Prima di tutto NON puoi scrivere

    int DIMR;
    int DIMC;
    int mat[DIMR][DIMC];

    dato che le due variabili non hanno un valore valido quando esegui la terza riga (errore grave).

    Ma che sono tutte quelle righe uguali? Usa un ciclo per leggere da file ...


    P.S. E come è finita con l'altro thread ?
  • Re: [C] Stampa di una matrice

    oregon ha scritto:


    Prima di tutto NON puoi scrivere

    int DIMR;
    int DIMC;
    int mat[DIMR][DIMC];

    dato che le due variabili non hanno un valore valido quando esegui la terza riga (errore grave).

    Ma che sono tutte quelle righe uguali? Usa un ciclo per leggere da file ...


    P.S. E come è finita con l'altro thread ?
    grazie ora va tutto,anche se non vorrei usare un ciclo sennò non mi stamperebbe l'elemento a ogni scanf
    se usassi un ciclo es
    while(!eof(fp)
    poi il valore di indicer e indicec sarebbe quello dell'ultima riga e non potrei stampare i singoli elementi...
  • Re: [C] Stampa di una matrice

    Funziona tutto, come?

    E che problema hai ad usare il ciclo, non l'ho capito ...
  • Re: [C] Stampa di una matrice

    oregon ha scritto:


    Funziona tutto, come?

    E che problema hai ad usare il ciclo, non l'ho capito ...
    si il programma fa quello che dico,però il programma a ogni scansione della "riga"
    es
    0 0 1 (riga /colonna/ valore elemento corrispondente)
    voglio stampare gli indici e il valore corrispondente
    quindi per esempio : "il primo elemento è %d in posizione %d % d",elemento,indcer,indicec)


    in un ciclo for non saprei far valere tutte queste condizioni
  • Re: [C] Stampa di una matrice

    Ma hai letto quello che ti ho scritto prima ?

    A volte mi pare di scrivere al vento ...

    Hai letto dell'ERRORE GRAVE sul dimensionamento dell'array ?
  • Re: [C] Stampa di una matrice

    oregon ha scritto:


    Ma hai letto quello che ti ho scritto prima ?

    A volte mi pare di scrivere al vento ...

    Hai letto dell'ERRORE GRAVE sul dimensionamento dell'array ?
    sisi ho letto,notato e risolto
  • Re: [C] Stampa di una matrice

    Sarebbe bene che postassi il codice, per chi ha problemi simili nel forum ... se hai risolto.
Devi accedere o registrarti per scrivere nel forum
7 risposte