Probleme mit Schleife



  • ja aber er gibt ja nur das print f aus wenn er einen wert findet der größer ist als der vorhige.

    Ja hab ALLE felder am anfang des Programmes ausgeben lassen und es stehen alle auf 0. Dann hab ich nochmal alle Felder ausgeben lassen in der 2ten Schleife und bekomme folgendes Ergebnis:

    [9][10] = 9

    [10][0] = 10

    [10][1] = 10

    ... danach geht es wieder mit 0 weiter also es sind wirklich nur diese 3 Felder wo er reinschreibt. und aufgrund der Zahlen kann nur sein das in den Schleifen irgendwo reingeschrieben wird....



  • Ich weiß nicht mehr so recht, was jetzt Debug-Ausgabe, und was Ergebnis ist. Zeig doch schnell mal ein lauffähiges Beispiel, in dem nur das Ergebnis ausgegeben wird, dann versteh' ich dich vielleicht besser.
    🙂



  • beide schleifen dürfen nur bis x<MAX_ORD und nicht x<=MAX_ORD laufen da kann es sein das du dir was madiges überschreibst, da du was haben willst was du nicht bestellt hast 😉



  • #include <stdio.h>
    
    #define MAX_ORD 10
    
    typedef int tiMatrix[MAX_ORD][MAX_ORD];
    tiMatrix matrix;
    int i;
    int gross = 0;
    
    int main(void)
    {
    	matrix[1][1] = 1;
    
    	matrix[1][5] = 2;
    
    	matrix[3][5] = 6;
    
    	matrix[2][5] = 8;
    
    	printf("%d", matrix[10][1]);
    
    	for(i=0; i <= MAX_ORD; i++)
    	{
    
    	for (int i2=0; i2 <= MAX_ORD;i2++)
    	{
    		if(matrix[i][i2] > gross)
    		{
    			printf("\n %d %d \n", i,i2);
    			gross = matrix[i][i2];
    			printf("%d ", gross);
    		}
    	}
    	}
    }
    

    Hier sollte er jede Zahle ausgeben die Größer ist als die Größte die er bisher gefunden hat und wenn du das mal Ausführst siehst du die komischen 2 Einträge am Ende

    Danke



  • kingmarv schrieb:

    Hier sollte er jede Zahle ausgeben die Größer ist als die Größte die er bisher gefunden hat und wenn du das mal Ausführst siehst du die komischen 2 Einträge am Ende

    Verstehe. Ich seh da leider keine Ausgabe, sondern schon in Zeile 21 einen Segfault. Warum das so ist? Keine Ahnung, vielleicht weiß es ja noobLolo.

    Von inklusive Null bis inklusive Zehn gibt es übrigens elf Zahlen.
    🙂



  • matrix[1][1] = 1;
    
        matrix[1][5] = 2;
    
        matrix[3][5] = 6;
    
        matrix[2][5] = 8;
    
        printf("%d", matrix[10][1]);
    

    Das sind doch nur Testwerte damit ich weiß das meine Routine auch funktioniert und printf("%d", matrix[10][1]); hab ich gemacht um zuschauen ob er auotmatisch Werte in die Zellen schreibt bevor meine Schleifen losgehen, das hat doch einer von euch vorgeschlagen



  • kingmarv schrieb:

    hab ich gemacht um zuschauen ob er auotmatisch Werte in die Zellen schreibt bevor meine Schleifen losgehen, das hat doch einer von euch vorgeschlagen

    Nur daß 10 kein zulässiger Index für dein Array ist. Mahnt das dein Compiler nicht an? Dann wirf ihn weg.
    🙂



  • ist vs08 ...
    Hat jemand den Code mal kompeliert und versteht warum die Einträge am Ende erscheinen ?



  • noobLolo schrieb:

    beide schleifen dürfen nur bis x<MAX_ORD und nicht x<=MAX_ORD laufen

    µngbd schrieb:

    Nur daß 10 kein zulässiger Index für dein Array ist.



  • Ok jetzt klappt alles danke...


Anmelden zum Antworten