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

    c++ Allocazione array bidimensionali

    Salve a tutti,
    ho un problema: quando assegno dei valori a dei double anche parte di matrici si sovrascrivono.
    Riporto il codice che va a sovrascrivere la matrice maT in modo inspiegabile per me.

    Potete darmi una mano, sono disperato.

    GRAZIE

    codice:
    \\\\\\\\\\\\\\\\\\\ MAIN \\\\\\\\\\\\\
    
    //Istanzio le classi
    CCAD_Elaborazioni Cad;
    CUtilityFile FileUtility_src;
    
    //dichiarazioni e inizializzazioni
    double X,Y,Z,A_fi,B_teta,C_psi;
    X = 0;
    Y= 0;
    Z = 0;
    A_fi = 0;
    B_teta = 0;
    C_psi = 0;
    
    double maT_base_offset[4][4];
    double maT[4][4];
    
    // inizializzo le matrici con una semplice funzione
    GeneraMatIdentita(Matrice);
    GeneraMatIdentita(maT_base_offset);
    
    //apro file di testo e lo carico in un vettore
    ...
    //
    
    //scorro il vettore e cerco la tiga interessata
    for(int indice_linea=0;indice_linea<max_ind_linea_src;indice_linea++)
    {
    	// assegno alla stringa line una riga alla volta del vettore
    	string line = FileUtility_src.GetLineaString(indice_linea);
    
    	cerco in ogni riga del vettore "Base_Offset"
    	int pos = line.find("Base_Offset = {",0);
    	if(pos!=string::npos)
    	{
    		// trovata la riga: Base_Offset = {X 1, Y 2, Z 3, A 4, B 5, C 6}
    
    		//in questo punto la matrice è corretta:
    		// maT = [ 1 0 0 0
    		//		      0 1 0 0
    		//		      0 0 1 0
    		//		      0 0 0 1 ]
    
    //PROBLEMA>>>>>>>>>>>>>>>>>>>>>>
    		// estraggo dalla riga i valori della sestina e li metto in double 
                    //(la funzione è riportata sotto)
    		Cad.EstrazioneDatiRigaDat(line,X, Y, Z, A_fi, B_teta, C_psi);
    
    		//la matrice diventa:
    		//  maT = [ 1 0 0 0
    		//		      0 1 0 0
    		//		      0 0 1 6
    		//		      5 4 3 2 ]
    		//notare la somiglianza dell'ultima riga della matrice con con la linea letta 
    //PROBLEMA>>>>>>>>>>>>>>>>>>>>
    
    		// costruisco la matrice dalla sestina
    		CostruzioneMatOmogeneaTrasformazione(X, Y, Z, A_fi, B_teta, C_psi, maT_base_offset);			
    	}
    }
    
    .......
    
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    
    //
    //Estrae dalla riga del file dat i valori di
    //X, Y, Z, A_fi, B_teta, C_psi
    //
    void CCAD_Elaborazioni::EstrazioneDatiRigaDat(string linea_dat, double &O_X, double &O_Y, double &O_Z, double, &O_A, double &O_B, double &O_C)
    {	   
    	//questa funzione avrebbe dovuto estrare dei numeri dalla stringa che riceveva e
            //restituire dei double, ma l'ho semplificata per evitare errori inutili
    	
            O_X	= 1;
    	O_Y	= 2;
    	O_Z	= 3;
    	O_A	= 4;
    	O_B	= 5;
    	O_C	= 6;
    	
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Manca il codice in cui le matrici

    double maT_base_offset[4][4];
    double maT[4][4];

    sono scritte ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Scusa ma non ho capito quello che intendi dire.
    Le matrici sono dichiarate e inizializzate all'inizio del main.
    Cosa dovrei fare?

  4. #4
    Ho trovato scusate sbagliavo io, consideravo la matrice 4x4 da 1 a 4 anzichè da 0 a 3

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.