Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    55

    [C++] Calcolo distanza max euclidea in regioni

    Allora spiego brevemente e poi posto quello che ho fatto finora...
    Ho una matrice in cui ho delle varie regioni contrassegnate con interi.
    Devo calcolare la distanza massima tra il centro di queste regioni e il pixel piu lontano...

    Ossia se ho una matrice con 5 regioni diverse devo calcolare 5 distanze, che rappresentano le distanze massime tra il pixel più lontano di ogni singola regione e il centroide della regione stessa.


    Ho fatto questo come codice:

    codice:
    prlreal dmaxreg (riassStruct element, int rows, int columns);
    prlreal dmax=0; 
    prlreal temp = 0; 
    for (int r=1; r<countReg + 1; r++) 
    { 
    if (element.typeRegion == 0 && element.countPixel>0) 
    for (int i=0; i < rows; i++) 
    for (int j= 0; j < columns; j++) 
    { 
    temp = sqrt((pow((i - (element.Xc/element.countPixel)),2)) + (pow((j -(element.Yc/element.countPixel)),2))); 
    if (temp > dmax) 
    dmax = temp; 
    } 
    }
    Per completezza riporto questi parametri che ho usato:

    typedef struct
    {
    int countPixel; //numero di pixel appartenenti a quella regione
    bool typeRegion; //regione stabile (0) o instabile (1)
    endPixel sumValue; //somma delle firme dei pixel trovati nella regione (sestuple contenute nella matrice endMatrix)
    endPixel avgValue; //valor medio delle firme dei pixel della regione
    int Xc; // somma degli indici delle colonne di una data regione
    int Yc; //somma degli indici delle righe di una data regione
    //int Ps; //numero di pixel simmetrici rispetto al centroide della regione
    } riassStruct;



    prlreal è un float!




    Mi da però errore sul primo for e precisamente mi da:

    Multiple markers at this line
    - Syntax error
    - Syntax error
    - expected constructor, destructor, or type conversion before '<'
    token
    - expected constructor, destructor, or type conversion before '+
    +' token
    - expected unqualified-id before 'for'
    - Syntax error


    in cosa sbaglio che non sto capendo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ma questa riga

    prlreal dmaxreg (riassStruct element, int rows, int columns);

    cosa fa all'interno della funzione in questione?

    E poi

    countReg

    cosa è? Dove sta?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    55
    La prima riga è la definizione della funzione che poi richiamerò nel progetto...

    Mentre il countReg lo avevo definito nel main...quindi credo non sia un problema vero?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    55
    codice:
     prlreal dmaxreg (riassStruct element, prlreal **Matrix, int rows, int columns);
    {
            prlreal dmax=0;
    		prlreal temp = 0;
    
    
    for (int i=0; i < rows; i++)
    	for (int j= 0; j < columns; j++)
    
    	{
    		temp = sqrt((pow((i - (element.Xc/element.countPixel)),2)) + (pow((j - (element.Yc/element.countPixel)),2)));
                  if (temp > dmax)
    	              dmax = temp;
    	}
    }



    Ho ricambiato cosi il codice...

    Messo nel main esterno alla funzione questo pezzo

    codice:
     for (int i = 1; i < countReg + 1; i++)
    		{
    
    			if (riassArray[i].typeRegion == 0 && riassArray[i].countPixel>0)
    				dmaxreg (riassArray[i], MatrixRegion, endRows, endColumns);
    			//fileLogRegion << "\n";
    
    		}

    Ora l'errore che mi da è sulla parentesi graffa sotto prlreal dmaxregion

    ??????


    Mi dice:

    Multiple markers at this line
    - Syntax error
    - expected unqualified-id before

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In

    prlreal dmaxreg (riassStruct element, prlreal **Matrix, int rows, int columns);

    il ; finale non ci va altrimenti viene visto come il prototipo della funzione.

    Fai attenzione a questi errori di "base" sulla sintassi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    55


    pardon

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    55
    the address of 'float dmaxreg(riassStruct, prlreal**, int, int)' will always evaluate as 'true'



    Perchè mi viene a dire questa cosa ora?

    voglio dire se ho una regione a forma di stella come fa a darmi sempre 1 come distanza tra il centro e i suoi estremi?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ma in quale contesto c'è quell'errore? E' in compilazione? In quale linea? Nel main? Cosa c'è effettivamente in quella funzione dato che ancora non si è capito quale sia il suo contenuto effettivo?

    Mi sembra che tu non abbia ben chiaro come lavorare con una funzione ...

    1) la funzione non restituisce alcun valore con return

    2) nel main la funzione viene chiamata senza una variabile a cui restituire il valore
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    55
    ho messo return dmax alla fine della funzione quindi in teoria dovrei avere la distanza massima tra due pixel, ognuno descritto da un'ascissa e da un'ordinata.

    Quando vado a richiamare non mi da un proprio errore ma un simboletto giallo (uso Eclipse) e quando compilo nel file in cui vado a stampare mi da sempre 1

  10. #10
    Il simboletto giallo che ottieni penso sia un warning, in quanto il compilatore pensa (probabilmente ha ragione) che non stia accadendo qualcosa del tutto lecita. Sarebbe d'aiuto se riportassi quanto segnalato dal compilatore.

    Se non hai modificato il main allora non memorizzi il valore restituito da dmaxreg in nessuna variabile. Se il problema non era questo ti consiglio di riportare tutto il codice. Inoltre perché passi MatrixRegion alla funzione dmaxreg se poi non la usi?

    Comunque ti consiglio di ripassare tutto ciò che riguarda le funzioni.

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.