| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  26-04-2007, 12:12 | #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 | 
|   |   | 
|  26-04-2007, 13:49 | #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 | 
|   |   | 
|  26-04-2007, 13:50 | #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~ | 
|   |   | 
|  26-04-2007, 13:53 | #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 | 
|   |   | 
|  26-04-2007, 14:22 | #5 | 
| Junior Member Iscritto dal: Apr 2007 
					Messaggi: 26
				 | |
|   |   | 
|  26-04-2007, 16:17 | #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; | 
|   |   | 
|  26-04-2007, 16:28 | #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 | 
|   |   | 
|  26-04-2007, 16:41 | #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 | 
|   |   | 
|  26-04-2007, 16:44 | #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; | 
|   |   | 
|  26-04-2007, 16:51 | #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??? | 
|   |   | 
|  26-04-2007, 16:53 | #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 | |
|   |   | 
|  26-04-2007, 16:54 | #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 | 
|   |   | 
|  26-04-2007, 17:11 | #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 17:15. | 
|   |   | 
|  26-04-2007, 17:35 | #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 | 
|   |   | 
|  27-04-2007, 07:06 | #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 | |
|   |   | 
|  27-04-2007, 11:00 | #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 | |
|   |   | 
|  27-04-2007, 11:41 | #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: 09:22.









 
		 
		 
		 
		


 
		





 
  
 



 
                        
                        










