|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
[C]Dove sbaglio?
Salve ho dei problemi con questo codice(quando chiamo la funzione stampa mi stampa tutti 0)
Codice:
void video(int** A,int n); int main(int argc, char *argv[]) { int m; int i,j; double **matrice; printf("Inserisci la dimensione della matrice: \n"); scanf("%d",&m); int n=m+1; double b[n+1]; //vettore dei termini noti matrice=calloc(n,sizeof(double*)); double cont; for (i=0;i<=n;++i){ matrice[i]=calloc(n+1,sizeof(double)); } for(i=1;i<n;i++) { for (j=1;j<n;j++) { matrice[i][j]=cont; // printf("%f\t",matrice[i][j]); cont++; } // printf("\n\n\n"); } video(matrice,n); system("PAUSE"); return 0; } void video(int** A,int n) { int i; int j; for(i=1;i<n;i++) { for (j=1;j<n;j++) { printf("%f\t",A[i][j]); } printf("\n\n\n"); } } speriamo che qualcuno lo sappia perchè io tra un pò impazzisco |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
ehm ... la funzione stampa non c´e´
![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
matrice=calloc(n,sizeof(double**));
matrice[i]=calloc(n+1,sizeof(double *)); Prova così
__________________
Ciao ~ZeRO sTrEsS~ |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
double **matrice;
void video( int **A,int n ) printf("%f\t",A[i][j]); dichiari double, ricevi int e stampi float ... ![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
|
![]() |
![]() |
![]() |
#6 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
ne approffitto per chiedere il prototipo di una funzione per prendere una matrice dal file;
grazie solo il prototipo; |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
cosa intendi ? se sai le dimensioni della matrice leggi con una fread ...
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#8 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
ciao,
Allora ho la mia matrice salvata su file,(sono in possesso solo del nome del file) (non so gli elementi presenti) potrebbe essere anche 1000X1000 io avevo pensato cosi: void leggidafile() { FILE* fp; ..... ... ... adesso dovrei allocare una matrice double [n][n](quadrata) PARI AGLI ELEMENTI del file potrei contare solo le righe o solo le colonne ed aggiornare il valore di n man mano che incontro un elemento ma non so come fare |
![]() |
![]() |
![]() |
#9 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
ECCO DOVE MI SONO FERMATO
Codice:
void leggi_da_file() { FILE*fp; char buf[256]; int n; double A[n][n]; char* filename="C:\\matrice.txt"; int riga=0; if((fp=fopen(filename,"r+"))==NULL) { printf("Impossibile aprire il file"); return; } else { //in questo punto devo allocare una matrice pari alla dimensione degli elementi presenti nel file; |
![]() |
![]() |
![]() |
#10 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
un ultimo grandissimo problema...
all'uscita della funzione mi deve ritornare una matrice creata dinamicamente pari agli elementi del file; come si mette nel prototipo il ritorno??? |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
double **funz(...)
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#13 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
Grazie adesso mi manca solo il modo di leggere gli elementi del file e poi apro lo spumante!!!!!
![]() ![]() perchè non ho capito bene come fare sono elemento di tipo double Siete tutti bravissimi!! Ultima modifica di comm64 : 26-04-2007 alle 16:15. |
![]() |
![]() |
![]() |
#14 |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
Codice:
1.189207 1.259921 1.414214 2.000000 1.259921 1.414214 2.000000 4.000000 1.414214 2.000000 4.000000 8.000000 2.000000 4.000000 8.000000 16.000000 questo è un esempio del file che ha 16 elementi a me interesserebbe solo contare le righe o le colonne ma anche tutti gli elementi e poi ci faccio la radice quadrata che tanto è sempre una matrice NxN |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#16 | |
Junior Member
Iscritto dal: Apr 2007
Messaggi: 26
|
Quote:
quindi ho allocato la matrice dinamicamnte, il problema adesso è la lettura ed inserimento in mtarice degli elementi potresti farmi l'esempio di una fread? mettiamo caso che la mia matrice sia A[n][n] come uso la fread per inserire ? Grazie |
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
size_t fread(void *restrict ptr, size_t size, size_t nitems,FILE *restrict stream); quindi fai: fread( A, sizeof(A) * <numero matrici da leggere>, 1, pFile); se non ho sbagliato qualcosa, sono un po´ impegnatuccio e ho scritto al volo ciao
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:37.