Maximum MinimumFunktion



  • int qsplatdrr::Volume_MaxMin ()
    {
    int wv,hv,dv;  // nicht initialisiert
    int w,h,d,v;
    Voxel vox;
    // ...
    vox.X = wv;  // Zuweisung von nicht initialisierten Variablen
    vox.Y = hv;
    vox.Z = dv; 
    // ...
    

    Besser wäre wohl:

    int qsplatdrr::Volume_MaxMin ()
    {
    int wv = 0, hv = 0, dv = 0;  // mit 0 initialisieren
    int w = 0, h = 0, d = 0, v = 0;
    Voxel vox;
    // ...
    vox.X = wv;
    vox.Y = hv;
    vox.Z = dv; 
    // ...
    

    Dann dürften die Warnings wegfallen.

    // EDIT: auch zu langsam ...



  • Danke für eure hilfe, habe das problem jetzt so gelöst....ich hoffe, dass das so auch passt....gibt zumindest keine warnings oder errors mehr aus:

    int qsplatdrr::Volume_MaxMin ()
    {
    int wv,hv,dv;  
    int w = 0, h = 0, d = 0, v = 0;
    Voxel vox; 
                  w = qsplatdrrVolume -> Width;
    	h = qsplatdrrVolume -> Height;
    	d = qsplatdrrVolume -> Depth;
    	v = qsplatdrrVolume -> Value;
    
    for (wv=0; wv < w; wv++) {
    	    for (hv=0; hv < h; hv++) {
    		for (dv=0; dv < d; dv++) {	
    	vox.X = wv;
    	vox.Y = hv;
                  vox.Z = dv; 
    
    	if (v > volIntMax){
    	    v = volIntMax;   
    	}
    	if (v < volIntMin)
    	{
    	    v = volIntMin;
    	}	
        } } }
    return (volIntMax);
    return (volIntMin);
    }
    


  • Klar, wenn die Änderung an der Programmlogik so beabsichtigt war, passt das...

    Ach, und nimm bitte [ cpp] Tags 😉



  • return (volIntMin);
    

    wird niemals erreicht!



  • und wie kann das umändern, dass es erreicht wird?

    ps:sorry werd ab jetzt c++ tags verwenden



  • Hallo

    Das sieh so aus, als willst du zwei Werte zurückgeben. Das geht aber nicht so, wei du das machst.

    chrische



  • Gar nicht. Funktionen können nunmal nicht zwei Werte zurückgeben. Pack die beiden Werte doch als Referenz in die Parameterliste.



  • Devil's Daughter schrieb:

    und wie kann das umändern, dass es erreicht wird?

    ps:sorry werd ab jetzt c++ tags verwenden

    gar nicht, beim Ersten return springte er aus der Funktion raus. Aber du könntest ein struct zurückgeben, welches die beiden ints wrappt.

    MfG

    GPC



  • Das einfachste wäre es auch, ein pair zurückzugeben:

    #include <utility>
    
    std::pair<int,int> qsplatdrr::Volume_MaxMin()
    {
      ...
      return std::make_pair(volIntMax,volIntMin);
    }
    
    ...
    qsplatdrr splat;
    pair<int,int> extrem = splat.Volume_MaxMin();
    cout<<"Max:"<<extrem.first<<", Min:"<<extrem.second<<endl;
    


  • oder mit referenzen arbeiten:

    void qsplatdrr::Volume_MaxMin(std::pair<int,int> &ausgabe)
    {
        ...
        ausgabe.first = volIntMax;
        ausgabe.second = volIntMin;
    }
    


  • Super vielen Dank für eure Vorschläge!!!!


Anmelden zum Antworten