größte zahl wird nicht gefunden.
-
also irgendwie werden die zahlen schon korrekt ausgegeben, aber die größte nicht ermittelt. irgendwie funktioniert der vergleich nicht!
dh, dass bei dieser ausgabe immer 0.00488934 rauskommen würde. und das ist vollkommen unsinnig, weil 1.31286e+4467 viel größer ist. theoretish müsste es doch klappen?!
0.00488934 0e-95 1.21564e+4465 -0e-3679 1.31286e+4467 0 -1.83551e-4580 -4.50689e+1783 2.86156e-4933long double greatestVal; int index[bilder]; for(int c = 0; c < bilder; c++) { greatestVal = outP[c][0]; for(int i = 0; i < Size; i++) { std::cout << outP[c][i] << std::endl; if(outP[c][i] > greatestVal) { //klappt einfach nicht std::cout << outP[c][i] << " > " << greatestVal << std::endl; greatestVal = outP[c][i]; index[c] = i; } } }hat jemand eine idee?
-
wenn outP[c][0] immer schon das maximum enthält, wird der teil im if-block nie ausgeführt.
ersetz mal deine zeile 4 durch
greatestVal = std::numeric_limits<double>::min();
-
scheiß drauf, schon am anfang die größte zahl gefunden wurde oder nicht. so spare ich sogar noch rechenzeit.
aber das problöem ist, dass die bedingung nie erfüllt wird, obwohl größere zahlen vorhanden sind, deshlab hilft dein tip leider nicht. und ich verstehe nicht warum!!! das ist der behindertste fehler den ich je hatte.
-
5.13001e-4937 > 0eben auch wieder eine tolle ausgabe erhalten... aber mal im ernst, das ist nicht logisch nachvollziehbar!
-
war ein speicherfehler, aber warum wird datenmüll nicht verglichen?
-
greatestVal = outP[c][0];- was macht das wohl bei jedem außer dem letzten äußeren Schleifendurchlauf?
greatest = minimum; for( int i=0; i<outer_size; ++i) { for( int j=0; j<inner_size; ++j) { if( outP[i][j] > greatest ) greatest = outP[i][j]; } }