Nur for-Schleifen Block verwenden



  • Bei folgendem Code, gibt es eine Eingabeaufforderung, in der man solange Zahlen eingibt bis "temp == -1". Anschließend wird die größt eingegebene Zahl herausgefunden, und ausgegeben.

    vector<int> vec;
    int temp = 0;
    while(cin >> temp && temp != -1)
    {
        vec.push_back(temp);
    }
    
    int max = 0; 
    max = vec[0];
    for(vector<int>::iterator iter = vec.begin() + 1; iter != vec.end(); ++iter)
    {
        if(max < *iter) max = *iter;
    }
    
    cout << max << endl;
    

    Schafft es jemand auch ohne die Zeile "max = vec[0]" also dass sich die Zähler Variable max nur im Gültigkeitsbereich der for-Schleife befindet, und dann ganz zum Schluss in den Gültigkeitsbereich der main gebracht wird und ausgegeben. (cout << max_main <<......; )
    Versteht jemand überhaupt was ich will? 🙂 (is alles zurückzuführen auf eine Aufgabe ausm C++ Primer)

    MfG
    Stromberg



  • vector<int> vec;
    
    for (int temp=0; cin >> temp && temp != -1; vec.push_back(temp))
    {} //empty loop body
    
    for(vector<int>::iterator maxiter = vec.begin(), compiter = vec.begin(); 
        compiter != vec.end() || vec.size() == 0 ? false : !cout<<*maxiter<<endl;
        maxiter = (++compiter != vec.end() && *maxiter < *compiter) ? compiter : maxiter)
    {} //empty loop body
    

    /edit: ups, hatte gelesen nur for-schleifenköpfe...



  • int max = 0; 
    
    for(max = vec[0], vector<int>::iterator iter = vec.begin() + 1; iter != vec.end(); ++iter)
    


  • 1. Nur mal ganz blöd dass das nicht funktioniert (im Initialisierungsteil einer for-Schleife darf man doch nur immer einen Typ verwenden hab ich gedacht, man darf zwar mehrer Objekte von diesem deklarieren also int a, b, c.... aber nicht string z, int a,b......Oder?) und 2. hast du "int max" ja trotzdem im Gültigkeitsbereich der main verwendet.

    MfG
    Stromberg



  • hm ich hab meins grade mal durch den Compiler gejagt, im MSVC2008 Express compilierts zwar, aber das push_back wird nicht ausgeführt - der vector bleibt leer 😞



  • Stromberg schrieb:

    Schafft es jemand auch ohne die Zeile "max = vec[0]" also dass sich die Zähler Variable max nur im Gültigkeitsbereich der for-Schleife befindet, und dann ganz zum Schluss in den Gültigkeitsbereich der main gebracht wird und ausgegeben.

    Ich glaube, du unterliegst da einem Denkfehler. Wenn du die Variable nur lokal innerhalb des Blocks brauchst, könntest du das mit static tun. Aber da sie in main() verwendet werden soll, kannst du sie auch dort deklarieren.

    Welchen Vorteil erhoffst du dir davon, wenn die Variable nur innerhalb der Schleife bekannt ist? Klar kann es sinnvoll sein, so lokal wie möglich zu bleiben, aber hier ist es das eben nicht.


Anmelden zum Antworten