ich hab keine ahnung mehr



  • OK, dein Programm ist strukturell soweit o.k.
    Code::Blocks 8.02 schluckt alles ohne Fehler und Warnungen.

    Wie sieht es mit anderen Arten von Fehlern aus?
    Werden Arrays (fangen bei 0 an!) über Grenzen hinaus überschrieben?

    Manchmal hilft es, TRACE-Funktionen einzubauen oder zu Debuggen, damit man logische Fehler findet.

    ZeileSpalte[10][10] Reichen diese 10*10 wirklich aus? Wo wird die Begrenzung auf Elemente 0 ... 9 gecheckt? usw.

    Einfach mal alles um Faktor 10 erhöhen und schauen, ob der logische Fehler dann verschwindet.

    Variablen TRACEN.



  • Prüf mal welchen Wert die Variable "i" hat wenn die entsprechende Codezeile erreicht wird. Sie wird nirgendwo initialisiert.



  • merker schrieb:

    Prüf mal welchen Wert die Variable "i" hat wenn die entsprechende Codezeile erreicht wird. Sie wird nirgendwo initialisiert.

    Hi erst mal danke schön 🙂
    aber in zeile 55 wierd die initalisiert und eigentlich müsste dann ja auch der compieler eine fehler melden.



  • Stimmt, ca. Zeile 113: wird i ohne Initialisierung verwendet.
    Am besten in jedem Block vorher die Laufvariablen auf den gewünschten Wert setzen.



  • int AnzahlReihen, AnzahlSpalten, i, k, m, z;

    Meinst Du dies hier? Das ist kein Initialiseren.



  • Nina1980 schrieb:

    aber in zeile 55 wierd die initalisiert und eigentlich müsste dann ja auch der compieler eine fehler melden.

    In Zeile 55 wird sie deklariert (d.h. bekannt gemacht) aber nicht initialisiert (d.h. einen Wert zugewiesen bekommen).



  • hallo Nina1980,

    Du hasst eine geschweifte Klammer falsch gesetzt.
    Und die lokalen Variablen in case 1 sind dann in case 2 ungültig.

    switch (Auswahl)
    {
    ...
    case 1
    {
    ...
    } <<<------------------ das hier fehlt bei dir
    break;
    case 2
    ...
    }
    


  • Erhard Henkes schrieb:

    OK, dein Programm ist strukturell soweit o.k.
    Code::Blocks 8.02 schluckt alles ohne Fehler und Warnungen.

    Wie sieht es mit anderen Arten von Fehlern aus?
    Werden Arrays (fangen bei 0 an!) über Grenzen hinaus überschrieben?

    Manchmal hilft es, TRACE-Funktionen einzubauen oder zu Debuggen, damit man logische Fehler findet.

    ZeileSpalte[10][10] Reichen diese 10*10 wirklich aus? Wo wird die Begrenzung auf Elemente 0 ... 9 gecheckt? usw.

    Einfach mal alles um Faktor 10 erhöhen und schauen, ob der logische Fehler dann verschwindet.

    Variablen TRACEN.

    Ja auch dank schjön ich weiss jetzt garnicht was Trace heißt *schäm* aber ich werd mal schauen.
    eigentlich dürfte es mit dem ersten programm abschnitt nichts zu tuhn haben weil das programm immer dann abstürzt wenn ich in der strucktur die 3 variable nicht auskommentiert habe und ich das 2 programm also die dreiecks darstellung aufrufe ansonsten läut das aber ich werd mal schauen.

    Liebe grüße
    nina



  • merker schrieb:

    Nina1980 schrieb:

    aber in zeile 55 wierd die initalisiert und eigentlich müsste dann ja auch der compieler eine fehler melden.

    In Zeile 55 wird sie deklariert (d.h. bekannt gemacht) aber nicht initialisiert (d.h. einen Wert zugewiesen bekommen).

    ohh sorry ähhm reicht das nicht im kopf der schleifen zeile 74 90 und 106 ????



  • Ramsis schrieb:

    hallo Nina1980,

    Du hasst eine geschweifte Klammer falsch gesetzt.
    Und die lokalen Variablen in case 1 sind dann in case 2 ungültig.

    switch (Auswahl)
    {
    ...
    case 1
    {
    ...
    } <<<------------------ das hier fehlt bei dir
    break;
    case 2
    ...
    }
    

    Ja danke schön 🙂 Freu
    das wars ich musste di klammer setzen am ende eine weg nehmen und in case 2
    i nochmal mit 0 initialisieren.

    🙂 🙂 🙂 🙂 👍 👍



  • Als Abschluss kannst Du Dein korrektes Programm mit sauberem strukturellen Aufbau (Konsequente Einrückungen, die man vertikal verfolgen kann; Kommentare an den schließenden Klammern; Strukturen schaffen durch Funktionen) als Positivbeispiel darstellen.

    Bsp.:

    switch ( expression )
     {
      //Zweig 1
      case 'a':
      case 'A':
        if ( i > 0 )
        {
           a = b;
           c = d;
        }//if
        else
        {
           a = b + 1;
           c = d + 1;
        }//else
      break;//Zweig 1
    
      //Zweig 2
      case 'b':
      case 'B':
        do
        {
           //blabla
           //blabla
        }while( x == 0 && y != NULL && z != blubb );
      break;//Zweig 2
    
      //Zweig 3
      case 'c':
      case 'C':
        statement_c;
      break;//Zweig 3
    
      default:
        statement_default;
     }//switch
    

Anmelden zum Antworten