Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C]matrice 2D con (V[i][0] double) e (V[i][J!=0] int)

    Ciao a tutti!In questo periodo sono ossessionata dalle matrici...

    Data una matrice 2D, con 'nline' righe e 'ncol' colonne, la dichiarazione "standard" è:
    codice:
    double V[nline][ncol]
    oppure
    codice:
    int V[nline][ncol]
    In questo modo si ottiene una matrice con nlinexncol elementi, esempio: se nline=10 e ncol=4, 10x4=40 elementi, tutti di tipo double (o int). E se invece volessi che la prima colonna (elementi V[i][0]) contenesse double, mentre la seconda la terza e la quarta colonna (elementi V[i][1,2,3]) contenessero int? E' possibile? Come deve essere fatta la dichiarazione? E' possibile attraverso una allocazione dinamica? (partendo, ad esempio, dal codice:
    codice:
    double **V;
    V = (double**) malloc( nline * sizeof(double*) );
    for(i=0; i<nline; i++)
    {
    V[i] = (double*) malloc( ncol * sizeof(double*) );
    }
    )

    P.S. Chiedo scusa se il titolo non è appropriato e invito a sostituirlo con uno migliore...

  2. #2

    Re: [C]matrice 2D con (V[i][0] double) e (V[i][J!=0] int)

    Se dichiari un array di double, tutti i suoi elementi saranno di tipi double...
    Quindi o ti crei due array distinti, uno per i double ed uno per gli int,
    oppure definisci un tuo tipo con una struttura :

    codice:
    typedef struct _ELEM
    {
    	double dval;
    	int    ival1;
    	int    ival2;
    	int    ival3;
    } ELEM;
    
    int main()
    {
    	int nline = 10;
    	ELEM *V = (ELEM*)malloc( nline * sizeof(ELEM) );
    	V[0].dval = 1.23;
    	V[0].ival1 = 2;
    	printf(" V[0].dval  = %g\n", V[0].dval);
    	printf(" V[0].ival1 = %d\n", V[0].ival1);
    	...
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    In questo caso e' meglio una UNION

  4. #4
    Originariamente inviato da oregon
    In questo caso e' meglio una UNION
    La union !, non ci avevo pensato :master:
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se pensi che quello che vuole realizzare e' praticamente un VARIANT e un VARIANT e' realizzato con una Union ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.