Rückgabewerte
-
Hi,
ich hätte eine Frage, wann muss bzw. sollte man Rückgabewerte verwenden...z.b.
void qsplatdrr::Image_MaxMin (void) { for (int x = 0; x < interMedImage-> width(); x++) { for (int y = 0; y < interMedImage -> height(); y++) { uint value = interMedImage -> pixel(x,y); if (value > imgMax) { value = imgMax; } if (value < imgMin) { value = imgMin; } } } }wenn ich imgMin und imgMax global definiert habe...muss ich dann return..
nehmen???Oder bei dieser Funktion:
QImage* qsplatdrr::Image_Set(uint i,uint j) { for (i = 0; i < input; i++) { for (j = 0; j < input; j++) { uint value= interMedImage -> pixel(i,j); interMedImage -> setPixel ( i, j, value); } } return interMedImage; }hier habe ich global einen pointer auf interMedImage (QImage* interMedImage;).....passt hier das return???
Danke!
Lg
Devil's Daughter
-
Bei der ersten Funktion brauchst du definitiv ein "return value;", wenn du mit dem ermittelten Wert weiterarbeiten willst. (btw solltest du den Minimal/Maximalwert besser als Parameter übergeben, statt globale Variablen zu verwenden)
Bei der zweiten Funktion dürfte das return überflüssig sein - du hast genau ein QImage, mit dem du arbeitest, und jeder Beteiligte kennt dessen Adresse, also brauchst du diese Adresse nicht ständig herumreichen.
Edit: Entferne doch mal bitte das Häkchen vor "BBCode deaktivieren" in deinem Beitrag - bzw. setz im Profil die Einstellung "BBCode immer aktivieren" auf JA. Dann werden deine Code-Schnipsel auch vernünftig angezeigt.
-
Danke!!!!
Danke auch für den Hinweis mit dem BBCode!!!!
Und wie genau gebe ich am besten die beiden werte zurück...
mit nem struct???
-
Devil's Daughter schrieb:
Und wie genau gebe ich am besten die beiden werte zurück...
mit nem struct???Ja, das ist recht hübsch, z.B. mit der std::pair Klasse aus der Standardbibliothek.
MfG
GPC
-
könnte das so funktionieren????
std::pair<int,int>qsplatdrr::Volume_MaxMin() { Voxel vox; uint volIntMax=0; uint volIntMin=0; uint w = qsplatdrrVolume -> Width; uint h = qsplatdrrVolume -> Height; uint d = qsplatdrrVolume -> Depth; uint v = qsplatdrrVolume -> Value; for (uint wv=0; wv < w; wv++) { for (uint hv=0; hv < h; hv++) { for (uint dv=0; dv < d; dv++) { vox.X = wv; vox.Y = hv; vox.Z = dv; if (v > volIntMax) { volIntMax = v ; } if (v < volIntMin) { volIntMin = v; } } } } return std::make_pair(volIntMax,volIntMin); }und wie kann ich das dann in diesen teil einbauen??
float qsplatdrr::qsplatdrrPrepareVolume(uint intMin,uint intMax, short intensitiesSet) { if (!intensitiesSet) { intMin = (uint)volIntMin+1; intMax = (uint)volIntMax; } }
-
Was soll Volume_MaxMin bewirken? In der derzeitigen Form sind die Schleifen völlig sinnlos. Das return würde so schon funktionieren. Auf die einzelnen Werte eines pair greift man mit first und second zu.
BTW schau dir auch mal std::max und std::min an.
-
1. Auch wenn mir der Inhalt der Funktion nicht ganz klar ist - technisch ist das richtig.
2. first/second:
pair<int,int> vals=Volume_MinMax(); intMax=vals.first; intMin=vals.second;
-
Hi,
es soll den maximalen und minimalen value eines volumen finden.........
die schleifen sind dazu da...dass jeder einzelen voxel überprüft wird....aber mir kommt grad...da brauch ich den struct nicht...oder????
so sieht mein struct aus:
typedef struct { uint Width; uint Height; uint Depth; QGLColormap *Colormap; int VoxelWidth; int VoxelHeight; int VoxelDepth; uint Value; } Volume; typedef struct { uint X, Y, Z; } Voxel;
-
Bloß, dass du in deinen Schleifen nichts prüfst. Irgendwo müsste doch v neu belegt werden. So vergleichts du immer das gleiche v mit deinen Werten.
-
und wie könnte ich das verbessern???
im prinzip ist der value ja an jeder stelle im volumen unterschiedlich....
-
Um das sagen zu können bräuchte man wohl mehr Informationen.
Du hast da eine Variable vom Typ Voxel die die Raumkoordinaten hält. Was genau macht Volume? Wie ist die Verknüpfung zwischen Volume und Voxel? Irgendwo brauchst du doch ein 3D-Array der voxel in dem die Daten gespeichert sind. Wo ist das?
Das sind aber eher Design-Fragen.
-
ja bei der verknüpfung ist mein problem...weiß nicht wie ich das genau anstellen soll.......
wie könnte man volume struct und voxel struct durch einen 3d array verbinden???
-
Um was geht es denn eigentlich.
Ich denke übrigens, dass das jetzt eher eine Frage fürs "Rund um die Programmierung" oder "Projekte"-Forum ist. Mit dem eigentlichen Thread-Titel hat das jetzt ja nichts mehr zu tun.
-
habs schon verschoben...
danke für den hinweis!