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-4933
    
    long 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 > 0
    

    eben 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];
    	}
    }
    

Anmelden zum Antworten