ich hab keine ahnung mehr



  • Nexus schrieb:

    nina1980 schrieb:

    ja super danke für die ganz tollen antworten
    wenn ich das alles wüsste hätte ich hier keine frage gestellt

    nina1980 schrieb:

    mein problem ist das das untere programm so läuft und die strucktur beim starten des 2 programm teils auch läuft und speichert wenn ich jetzt aber die struktur erweitern will also die ausgeblendete variable in der strucktur und die 2 dazugehörigen zeilen weiter unten aktiviere bekomme ich vom compieler keinen fehler aber das programm stürzt immer ab worann kann das liegen ich komme schon seit stunden nicht weiter und weiß nicht was ich noch machhen soll
    und montag muss das fertig sein.

    Das nenne ich keine Frage.

    Nina1980 schrieb:

    wenn ich mir sicher währe das es genau an dem cod teilen liegt dann hätte ich die auch einzeln gepostet ich weiß es aber nicht bzw. denke das es auch durchaus an etwas anderem liegen könnte.

    Wie wärs, wenn du dich selber ein bisschen bemühen würdest? Wir haben es hier nicht so gerne, wenn man kommt und sagt "Hallo, in meinem 233-zeiligen Programm ist ein Fehler, bitte sucht ihn". Du solltest eventuell mal aktuell Header einbinden und int main() schreiben, wobei das kaum die Fehlerursache ist.

    Ja das ist mir schon klar wenn ich nicht seit heute morgen um 7 an dem einn blöden fehler sitzen würde dann hätte ich auch nicht gefragt sorry ich behmühe mich jetzt seit c. 12 stunden und ich komme keinen deut weiter.
    Das programm war heute morgen um sieben schon genauso weit wie jetzt ich mittlerweile hab ich allen möglichen blödsinn ausprobiert und das programm ist mir bestimmt 80 mal abgestürzt!!!



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

    Wenn du mehr funktionen verwendest, wird das programm besser strukturiert.
    Daduch besser lessbar.



  • 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