einfacher Code gibt falsche Werte raus



  • Hey Leute,

    ich würde gerne ein Code schreiben wo alle 120 Schritte ein "A" rausgegeben wird, ansonsten ein "1". Aber irgendwie funktuniert es nicht. Ich bitte um eure Hilfe. Hier ist mein Code:

    #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 << "1;" << endl;
        		j++;
        	}
        	else
        	{ 
        		myfile << "A;" << endl;
    	}
    
        }
        myfile.close();
    }
    

    Er gibt erst in der 250 Zeile ein "A" und in der 500 Zeile ein "A" usw.

    Grüsse

    ~Edit durch Arcoth: Code-Tags und formattiert.~



  • Irgendwie hat dein Code so gar nichts mit der von Dir beschriebenen Funktion zu tun 😕



  • Es sollte alle 125 Schritte ein "A" ausgeben, nicht alle 120, sorry habe mich vertippt



  • har761 schrieb:

    Es sollte alle 125 Schritte ein "A" ausgeben, nicht alle 120, sorry habe mich vertippt

    Der Code macht trotzdem nicht das, was du beschreibst.

    Er gibt alle 125 Schritte eine 1 aus, ansonsten A. Das zu beheben, sollte aber doch kein großes Problem darstellen, oder?



  • Ich kann Dein Problem nicht nachvollziehen.

    Wenn Bei Dir nur alles 250Ticker ein A erscheint, ist der gezeigte Code nicht der, den Du testest. Daher gebe ich cvcv recht.



  • Ich beschäftige mich nur seit kurzem mit C++ und weiß daher nicht wo der Fehler liegt...

    Außerdem habe ich dich nicht ganz verstanden, weil der alle 250 Schritte ein "A" ausgibt und nicht alle 125 Schritte



  • har761 schrieb:

    Ich beschäftige mich nur seit kurzem mit C++ und weiß daher nicht wo der Fehler liegt...

    Wenn da, wo eigentlich ein A ausgegeben werden soll, eine 1 ausgegeben wird, und umgekehrt, dann solltest du vielleicht die Ausgabe von 1 und A vertauschen.

    har761 schrieb:

    Außerdem habe ich dich nicht ganz verstanden, weil der alle 250 Schritte ein "A" ausgibt und nicht alle 125 Schritte

    Zum dritten Mal: Das tut der Code nicht. Möglicherweise schaust du dir eine veraltete Datei an.



  • Furble Wurble, doch, das ist der Code den ich in Bloodshed Dev C++ geschrieben habe. Ich habs compiliert, und laufen lassen. Anschließend den Code hier ins Forum reinkopiert



  • 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.



  • Gehen wir mal davon aus, dass Du keinen Fehler oben gemacht hast. Evtl. schaust Du wirklich in die falsche Datei, oder verzählst Dich... 😉

    Was hast Du denn vor? Ich schätze, dass hat irgendwas mit Zeiten (Tage, Wochen...) zu tun.



  • 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;
    

Anmelden zum Antworten