einfacher Code gibt falsche Werte raus



  • Ja, es ist eine große Datei entstanden. Ich will eigentlich hiermit in einen anderen Programm, Werte zu gegebenen Zeitpunkten zuweisen: also entweder ein "1" oder ein "A".

    Übrigens habe ich die .txt Datei immer geändert bsw. zu test20.txt, test21.txt wenn ich was im Code geändert habe. Ich schaue dann im neuesten .txt Datei nach. Ich schaue nicht in die falsche Datei..

    Vielleicht ein anderes C++ Programm benutzten? 😕



  • Du schreibst pro Durchlauf ja auch immer 2 Zeichen: 'A' und ';'.



  • Ja das tue ich.. Ist das das Problem?



  • har761 schrieb:

    Deswegen verstehe ich nicht wiese es das nicht tut was im Code steht. Ich habs mit

    if (i==j*125/2)

    getestet und dann gibt er mir mal im 124 Schritt ein "A" und mal im 126 Schritt ein "A" raus.

    Genau wie der vorherige Code auch wenn man mal nur den Bereich um Zeile 125 betrachtet. Siehst du nicht, dass immer wenn die Bedingung wahr ist eine '1' ausgegeben wird und in allen anderen Fällen ein 'A'? Also genau verdreht mit dem was du eigentlich haben möchtest?



  • Wenn ich dein rat folge und das umdrehe, bekomme ich A,A,A,A,... und alle 250 Schritt ein "1"...



  • har761 schrieb:

    Ja das tue ich.. Ist das das Problem?

    Nee, verguckt. Ich dachte es geht um Zeichen, nicht um Zeilen.



  • Ändere den Code bitte mal so ab:

    #include <iostream> 
    #include <fstream> 
    using namespace std; 
    
    int main() { 
         ofstream myfile; 
         myfile.open ("test19.txt"); 
    
         int i; 
         int j=1; 
         for (i=1; i<=345600; i++) 
         { 
             if (i==j*125) 
             { 
                 myfile << i << " 1;" << endl; 
                 j++; 
             } 
             else 
             { 
                 myfile << i << " A;" << endl; 
             } 
    
         } 
         myfile.close(); 
    }
    

    Und sag, was dabei herauskommt.



  • jetzt bekomme ich 1 A; 2 A; 3 A;.... dann ein 125 1; dann 126 A; 127 A;... usw. Im Prinzip befolgt er zumindest die Regel dass es alle 125 Schritt was ändern soll und nicht alle 250 Schritt.



  • MFK schrieb:

    Ändere den Code bitte mal so ab:

    Mach mal aus der 345600 eine 25 und aus der 125 eine 5.

    MFK schrieb:

    Und sag, was dabei herauskommt.

    Das Ergebnis kannst du dann hier (zwischen Code-Tags) einstellen.



  • har761 schrieb:

    jetzt bekomme ich 1 A; 2 A; 3 A;.... dann ein 125 1; dann 126 A; 127 A;... usw. Im Prinzip befolgt er zumindest die Regel dass es alle 125 Schritt was ändern soll und nicht alle 250 Schritt.

    Und wenn du jetzt die zusätzliche Ausgabe von i wieder entfernst, geht er wieder auf 250 und vertauscht A und 1?

    Dann ist dein Compiler ernsthaft kaputt.



  • Hier das Ergebnis:

    1 A;
    2 A;
    3 A;
    4 A;
    5 1;
    6 A;
    7 A;
    8 A;
    9 A;
    10 1;
    11 A;
    12 A;
    13 A;
    14 A;
    15 1;
    16 A;
    17 A;
    18 A;
    19 A;
    20 1;
    21 A;
    22 A;
    23 A;
    24 A;
    25 1;
    


  • har761 schrieb:

    Hier das Ergebnis:

    Das hat sich jetzt etwas mit dem Code von MFK überschnitten.
    Bitte Ohne das << i

    har761 schrieb:

    ..., das ist der Code den ich in Bloodshed Dev C++ geschrieben habe.

    Die IDE/Compiler ist über 10 Jahre alt.

    Hol dir mal die neuste Version.
    https://de.wikipedia.org/wiki/Orwell_Dev-C%2B%2B



  • Ok ich werde mein Compiler wechseln.. Ich glaube was anderes bleibt mir nicht übrig.

    Danke für eure Mühe Leute 🙂 🙂



  • Da es noch niemand getan hat geb ich dir mal noch einen Tipp:

    Deine Hilfsvariable j kannst du dir ganz sparen, mit

    if(i%125 == 0)
    

    kannst du genausogut prüfen ob i durch 125 teilbar ist.



  • har761 schrieb:

    Ok ich werde mein Compiler wechseln.. Ich glaube was anderes bleibt mir nicht übrig.

    Danke für eure Mühe Leute 🙂 🙂

    Am Compiler liegt es nicht. In den aller meisten Fällen, wo die Leute einen Fehler im Compiler vermuten, ist es das eben nicht. Compilerfehler sind extrem selten und bei so einem einfachen Programm kann sowas eigentlich gar nicht auftreten.


Anmelden zum Antworten