Schleifenproblem



  • Ich hab gehört lesen hilft.
    http://tutorial.schornboeck.net/inhalt.htm



  • überleg dir lieber was das machen soll und wie man sowas schön macht, als das chaos direkt in code umzusetzen.



  • Das ist schwierig,

    ich muss ja ne Bedingung schreiben, und wenn die zutrifft -> ausführen, ansonsten wieder hoch gehen mit ensprechenden veränderungen zB zähler +1 oder so ...

    nach was sollt ich in dem Tut genau gucken?



  • Vielleicht wären break und continue etwas, damit kann man den Programmfluss innerhalb einer Schleife manipulieren.

    Bis jetzt war ich eigentlich noch nie so tief gesunken, dass ich auf goto zurückgreifen musste.



  • was ist an goto so schrecklich??





  • kann sich das mal einer angucken, da sind am Ende zahlen die da nicht hingehören, bin schon am verzwefeln, find kein Fehler, krieg auch keine Meldung ...

    #include <iostream>
    using namespace std;
    int main(void)
    {
    const int zeilenzahl=4, spaltenzahl_A=4, spaltenzahl=5;
    int matrix_A[zeilenzahl][spaltenzahl_A]={{2,1,0,3}, {0,2,6,1}, {3,4,0,1}, {4,1,2,0}};
    int matrix_B[zeilenzahl][spaltenzahl], matrix_C [zeilenzahl][spaltenzahl];
    int zeile=0, spalte=0, summe=0, zaehler=0;
    
    cout << "\nGeben Sie bitte zeilenweise die Elemente der Matrix ein!\n\n";
    
    for(zeile=0; zeile<=zeilenzahl-1;zeile++)
    {	
    cout << "\nElement der "<<zeile+1<<"ten Zeile von B!\n\n";
    spalte=0;
    	for(spalte=0;spalte<=spaltenzahl-1;spalte++)
    	{
    	cin >> matrix_B [zeile][spalte];
    	}
    
    }
    cout << "\nDies ist die Matrix A:\n\n";
    zeile=0;
    	 for (zeile=0;zeile<=zeilenzahl;zeile++)
    	{
    
    		for (spalte=0;spalte<=spaltenzahl_A-1;spalte++)
    		cout << matrix_A[zeile][spalte];
    			cout <<endl;
    
    	 }
    
    return 0;
    }
    


  • SuperTalent schrieb:

    /* ... */
        for (zeile=0;zeile<=zeilenzahl;zeile++) 
        { 
            
            for (spalte=0;spalte<=spaltenzahl_A-1;spalte++) 
            cout << matrix_A[zeile][spalte]; 
                cout <<endl; 
            
         } 
            
    return 0; 
    }
    

    Das Problem ist die Bedingung der äußeren for -Schleife:

    for (zeile=0;zeile<=zeilenzahl;zeile++)
    

    Hier zählst du die Variable zeile von 0 beginnend hoch, bis sie nicht mehr kleiner gleich der Konstanten zeilenzahl ist. Also wird zeile von 0 bis einschließlich 4 hochgezählt. Das sind 5 Zahlen dein 2-Dimensionales Array matrix_A hat aber nur 4 Elemente in der 1. Dimension. Die Bedingung deiner äußeren for -Schleife müsste also so lauten:

    for (zeile=0;zeile<=zeilenzahl-1;zeile++)
    

    Dann sollte es funktionieren :).
    Übrigens könntest du die Bedingungen deiner for -Schleifen auch so schreiben:

    for (zeile = 0; zeile < zeilenzahl; zeile++) // nur 'kleiner als' anstatt 'kleiner gleich'
    

    oder so

    for (zeile = 0; zeile != zeilenzahl; zeile++)// 'nicht gleich'
    

    Dann bräuchtest du nicht immer die -1 mit hinschreiben :).



  • ok danke, wär ich nie drauf gekommen ^^



  • Ich hab ja schon viel geschafft vom Pgrogramm.. 😃

    mir fehlt nur der Teil, ich weiß einfach nicht wie man das am besten umsetzen sollte... ich brauch irgendnen denkanstoß´..

    http://i10.photobucket.com/albums/a110/Eisi_86/FD.jpg
    MFg


Anmelden zum Antworten