|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
![]() |
#1 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
[C]Dove sbaglio?
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"); } } AIUTO! |
![]() |
![]() |
![]() |
#2 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
Ragazzi ho risolto, avevo sbagliato il prototipo delle funzione era double!
PS: qualcuno sa come si passa un file ad una funzione? Non l'ho trovato da nessuna parte! |
![]() |
![]() |
![]() |
#3 | |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
![]() |
Quota:
FILE *pDati; Poi usare la funzione fopen: pDati = fopen("modalità", "nomefile"); A questo punto il file sarà aperto ed utilizzabile tramite il puntatore pDati. http://www.acm.uiuc.edu/webmonkeys/b...uide/2.12.html |
|
![]() |
![]() |
![]() |
#4 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
ciao Ugo, grazie per avermi risposto,
ho quasi sistemato.... devo solo capire come fare a contare gli elementi che sono contenuti del file( nel mio caso è una matrice quadrata di double) e quindi mi basterebbe sapere solo le righe o solo le colonne per poi andare a creare dinamicamente una matrice pari a righe o colonne |
![]() |
![]() |
![]() |
#5 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
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 di fle 4righe *4 colonne |
![]() |
![]() |
![]() |
#6 |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
![]() |
Beh, se è un file binario contenente esclusivamente double puoi usare la funzione stat e vederne la dimensione... poi dividi per il numero di byte occupati da un double.
Oppure potrebbe essere più semplice sapendo come è stato salvato il file |
![]() |
![]() |
![]() |
#7 | |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
![]() |
Quota:
Se così fosse basta contare il numero di caratteri newline al suo interno (codice ASCII 10) e il gioco è fatto ![]() Ultima modifica di UG0_BOSS : 26-04-2007 alle ore 17.47.04 |
|
![]() |
![]() |
![]() |
#8 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
si è un file TXT
|
![]() |
![]() |
![]() |
#9 | |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
![]() |
Quota:
int contatore=0; char c; while( (c=fgetc(pDati)) !=EOF){ if(c==10){contatore++;} } in pratica: bisogna dichiarare una variabile (contatore) che conti il numero di righe del file e un carattere c; fgetc ottiene il carattere dal file passato come parametro e restituisce "EOF" se siamo arrivati in fondo al file; Finchè non arriviamo in fondo al file viene letto il carattere c, se questo carattere è uguale a 10 (newline), il contatore viene incrementato di 1. Alla fine contatore conterrà il numero di righe del file e quindi della matrice |
|
![]() |
![]() |
![]() |
#10 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
TU SEI UN MAGO!!!!
ALTRO CHE!!! FUNZIONA TUTTO!"!! POTRESTI ANALIZZARMI SOLO UN ALTRA COSA? TI FACCIO VEDERE IL CODICE COMPLETO che mi stampa tutti zero però il numero degli elementi gli ha azzeccati! Codice:
#include <stdio.h> #include <stdlib.h> void stampa_matrice(double** val,int n); int main(int argc, char *argv[]) { int i,j; int n; FILE*fp; char buf[256]; double **A; char* filename="C:\\matrice.txt"; int riga=0; if((fp=fopen(filename,"r+"))==NULL) { printf("Impossibile aprire il file"); return; } else { //devo allocare una matrice pari alla dimensione degli elementi presenti nel file; int contatore=0; char c; while( (c=fgetc(fp)) !=EOF) { if(c==10){contatore++;} } n=contatore-1; printf("%d",n); A=calloc(n+1,sizeof(double*)); for (i=0;i<n;++i) { A[i]=calloc(n+1,sizeof(double)); } do { for (i=0;i<n;i++) { for(j=0;j<n;j++) fgets(buf,256,fp); sscanf(buf,"%lf",&A[i][j]); } } while(!feof(fp)); fclose(fp); } stampa_matrice(A,n); system("PAUSE"); return 0; } void stampa_matrice(double **val,int n) { int i,j; for (i=0;i<n;i++) { printf("\n"); for (j=0;j<n;j++) printf("%lf\t",val[i][j]); } printf("\n\n\n"); } Ultima modifica di comm64 : 26-04-2007 alle ore 18.30.12 |
![]() |
![]() |
![]() |
#11 | |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
![]() |
Quota:
![]() Uhm... andiamo per passi ![]() Finora posso solo dire che la funzione stampa_matrice è ok ![]() |
|
![]() |
![]() |
![]() |
#12 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
si però quando la va a chiamare mi stampa tutti 0 ah... sono un fesso... ti dovevo passare il file matrix.txt da mettere in C:
cosi potevi vedere il contenuto che doveva stampare a video(se il programma riuscisse a leggere e memorizzare quei dati in A[][] ti ho allegato il file:! CIAO MITICO! |
![]() |
![]() |
![]() |
#13 |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
![]() |
Vediamo... non ho ancora capito dov'è il problema centrale
![]() Codice:
char* filename="C:\\matrice.txt"; Codice:
char* filename=argv[1]; Codice:
do{ for (i=0;i<n;i++){ for(j=0;j<n;j++){ fgets(buf,256,fp); sscanf(buf,"%lf",&A[i][j]); } } }while(!feof(fp)); Codice:
fgets(buf,256,fp); sscanf(buf,"%lf",&A[i][j]); Codice:
fscanf( fp, "%lf", &A[i][j]); ![]() |
![]() |
![]() |
![]() |
#14 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
Ti ringrazio UGO! mi stai dando un aiuto grandissimo...
adesso ci resta sempre capire perchè stampa tutti zero.... forse non riusciamo a memorizzare bene gli elementi dentro gli array... |
![]() |
![]() |
![]() |
#15 |
Newbie
Registrato: 26-04-2007
Messaggi: 24
![]() |
ciao ugo finalmente ho risolto ti volevo chiedere sai come fare in C per far eseguire un file da console?
ad esempio: MENU: 1)vuoi vedere il file della matrice? praticamente se l'utente preme 1 dovrebbe aprire il file.txt a schermo |
![]() |
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
![]() |
||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Hamachi...dove sbaglio? | taco | Internet e Reti locali | 1 | 16-01-2006 20.47.33 |
Multiserver in GrabIt. Dove sbaglio? | Zievatron | Software applicativo | 0 | 03-07-2005 21.44.01 |
Format ( per sbaglio ) | Annibale36® | Windows 7/Vista/XP/ 2003 | 9 | 23-03-2005 08.35.49 |
Ditemi se sbaglio per favore | melchizedek | Windows 7/Vista/XP/ 2003 | 3 | 30-12-2004 20.17.14 |
Certamente sbaglio! | andrea70 | Chiacchiere in libertà | 23 | 03-03-2004 10.19.33 |