Ergebnis: Immer "-858993460"



  • Huhu,
    in einem Programm, welches ich in der Schule schrieb, erhalte ich mysteriöserweise als Ergebnis immer "-858993460", obwohl er egtl. ja nur vorher eingegebene Array wieder ausgeben soll.
    Nicht wegen dem IF-Wundern, die Zensuren/Nummern sollten egtl. je nach ihrer Größe wieder ausgegeben werden.
    //Nachtrag: OK, IF-Anweisung auskommentiert, dann funktioniert es. Aber warum?

    //Header-Files
    #include <iostream>
    #include <iomanip>
    #include <cstdio>
    #include <cstdlib>
    #include <process.h>
    
    //namespace
    using namespace std;
    
    int main(void)
    {
    
    	system("title Zensur © Zensursula Fanboy");
    	system("color F0");
    	system("cls");
    	int i, j;
    	int zensur[7];
    	int hilfsfeld = 0;
    
    	for(i=0; i<6; i++)
    	{
    	cout << "Bitte Zensur " << i+1 << " eingeben:";
    	cin >> zensur[i];
    					if (zensur[i+1] < zensur[i])
    				{
    
    					hilfsfeld = zensur[i];
    					zensur[i] = zensur[i+1];
    					zensur[i+1] = hilfsfeld;
    				}
    	}
    
    	for (i = 0; i <6; i++)
    	{
    		cout << endl << setw(8) << zensur[i];
    
    	}//for
    	cout << endl << endl;
    	system("pause");
    	return EXIT_SUCCESS;
    }//Main
    


  • "-850 Millionen" ist der Weg des MS-Compilers, Dir zu sagen, daß eine Variable nicht initialisiert wurde. Achte mal drauf, es ist immer -850 Millionen.



  • zensur[i] = zensur[i+1];
    

    zensur{i+1] ist nicht initialisert. das ist dann ein wert wie -858993460.



  • Hm, wie kann ich den dann Zensur [i+1] initialisieren (= Einen Wert zuweisen, korrekt?)?



  • Du liest eine Zensur (nämlich i+1) die Du noch nicht kennst.
    Lies erst alle ein und sortiere dann

    std::sort(zensur, zensur+7);
    


  • Hm, wie kann ich den dann Zensur [i+1] initialisieren (= Einen Wert zuweisen, korrekt?)?

    Kein Kommentar.

    hilfsfeld = zensur[i];
    zensur[i+1] = hilfsfeld;
    
    zensur[i] = zensur[i+1];
    

    oder gleich:

    zensur[i+1] = hilfsfeld = zensur[i];
    
    zensur[i] = zensur[i+1];
    


  • Ah yo, nun fällt es mir wie Schuppen von den Augen, was das Problem ist: Ich wollte zensur[i] einen Wert von einem Array zuweisen, was noch gar nicht definiert wurde/initialisiert wurde. Das kann naütrlich nicht hin hauen (oder anders gesagt: In der IF-Anweisung müssen nur die beiden letzten Zeilen vertauscht werden. Thema gelöst, vielen Dank ! (Man sollte nicht alles blind vom Lehrer abschreiben >_<)
    Int -850 Millionenblabla ist vermutlich der geringste Wert, der durch Int berechnet werden kann?



  • nö, eigentlich "−2.147.483.648"

    "-850 Millionen" ist der Weg des MS-Compilers, Dir zu sagen, daß eine Variable nicht initialisiert wurde. Achte mal drauf, es ist immer -850 Millionen.

    Auch nicht, mit Common Language Runtime Unterstützung 0 und ohne um die 420000.



  • Basinator schrieb:

    Int -850 Millionenblabla ist vermutlich der geringste Wert, der durch Int berechnet werden kann?

    Neun, das wären -2.1 Milliarden. Der Wert -850 Millionen ist nur da zu da, uninitialsisierte Variablen zu melden. Der MS-Compiler legt im Debug-Modus absichtlich lauter -850 Millionen rein. Besondere Einsichten sind zu erwarten, wenn man im Taschenwindowsrechner mal 2^32 addiert und sich in hex anschaut.



  • Benutze doch einfach die Mittel die dir C++ bietet. Dann brauchst Du gar nicht so einen Kram zu schreiben mit denen man sich vertut.

    #include <iostream>
    #include <algorithm>
    #include <iterator>
    #include <vector>
    
    int main()
    {
        const size_t anzahl = 7;
        std::vector<int> zensuren(anzahl);
        for(size_t i(0); i < anzahl; ++i){
            std::cout << "Bitte Zensur " << i+1 << " eingeben:";
            std::cin >> zensuren[i];
        }
    
        std::sort(zensuren.begin(), zensuren.end());
        std::copy(zensuren.begin(), zensuren.end(),
            std::ostream_iterator<int>(std::cout, "\n"));
    
        return 0;
    }
    


  • volkard schrieb:

    Basinator schrieb:

    Int -850 Millionenblabla ist vermutlich der geringste Wert, der durch Int berechnet werden kann?

    Neun, das wären -2.1 Milliarden. Der Wert -850 Millionen ist nur da zu da, uninitialsisierte Variablen zu melden. Der MS-Compiler legt im Debug-Modus absichtlich lauter -850 Millionen rein. Besondere Einsichten sind zu erwarten, wenn man im Taschenwindowsrechner mal 2^32 addiert und sich in hex anschaut.

    200000000



  • khjkhjk schrieb:

    200000000



  • tip: c
    ;o)


Anmelden zum Antworten