PDA

Visualizza la versione completa : problema con le matrici [C]


LadyTime
07-02-2014, 11:37
salve, ho provato a fare un programma che legge dal un file il numero di elementi in esso contenuti (sono dei numeri) e mi crea una matrice quadrata con tutti zeri che ha tante righe e colonne quanto il numero degli elementi nel file.
ma non funziona, mi potete dare una mano e aiutare a capire dov' l'errore??
grazie :ciauz:

#include <stdlib.h>
#include <stdio.h>


int conta_elementi(file) { .
int n, x;
FILE *in; //puntatore all'inizio del file.


if(in = fopen (file, "r")){ // se il file si apre correttamente:
while(!feof(in)) { // fino a che non arrivo alla fine del file.
fscanf (in, "%d", &x); //leggo un numero alla volta nel file.
n = n++;// "n" serve per spostarsi nel file e contemporaneamente conta quanti
//elementi ci sono.
}
fclose(in); // chiudo il file.
} else { // se il file non si apre stampo a video un messaggio di errore.
fprintf (stderr, "errore nella lettura del file \n");
}
return (n); // alla fine mi ritorna n=numero di elementi.
}


int costruisci_matrice (int A[i][j]){//costruiamo una matrice con tutti zeri.
int i=0;
int j=0;
int n;
while(j< n-1){
A[i][j]=0;
j++;
while(i<n-1){
A[i][j]=0;
i++;
}
}
}


int stampa_matrice(int A[i][j]){
int i=0;
int j=0;
while(j<n-1){
printf("%d", A[i][j]);
j++;
}
printf("\n");
while(i<n-1){
printf("%d", A[i][j]);
i++;
}
}

int main (void){
int A[i][j];
int i, j;
n=conta_elementi(file);
costruisci_matrice(A[i][j]);
stampa_mtrice(A[i][j]);
return (1);
}

torn24
07-02-2014, 12:45
Se non usi i tag code e indentazione , diventa MOLTO difficile capire il tuo codice , che gi molto confuso da per s.

dichiari una matrice int A[i][j]; i e j non sono inizializzate e quindi hanno un valore casuale non puoi usare variabili per le dimensioni di una matrice .

usi nelle funzioni la variabile n nei cicli , dove non una variabile globale , e se dichiarata in alcuni
casi nella funzione non inizializzata , quindi altro valore casuale


come inizializzi e stampi la matrice con i while sbagliato


I PROBLEMI SONO MOLTI , e occorrerebbe un thread per ogni problema , segui le indicazioni che ti ho dato e prova a risolvere , cerca con google , "matrici e ciclo for " per vedere come stampare la matrice .

LadyTime
07-02-2014, 13:03
ok che ci sono diversi problemi, ma tu dici che devo usare il ciclo di for, ma a me il professore ha detto di usare il while. mi spieghi dove sbaglio a inizializzare e stampare la matrice?? perch non capisco!
grazie

Alex'87
07-02-2014, 13:15
Il codice illeggibile senza tag CODE.

Comunque... se devi usare per forza il while, fa una cosa del genere:



int riga = 0;
int colonna = 0;
int MAX = ... // devi dargli un valore, magari passandolo alla funzione

while (riga < MAX)
{
while (colonna < MAX)
{
matrice[riga][colonna] = 0;
colonna++;
}
riga++;
}

Loading