Problem mit Schleife.



  • Guten Tag ich schreibe gerade an einem kleinen Programm habe hier aber ein Problem mit einer schleife es soll halt aus einer Datei die Menge gleicher Zahlen abzählen und in eine andere hinein schreiben soweit so gut funktioniert es auch aber nur einmal es läuft aber es soll über eine Schleife immer wieder ablaufen also ist meine Frage wo hier mein Fehler ist wodurch dieser Code Abschnitt übersprungen wird.

    file2.open(string("C:\\Users\\Neurotrin\\Desktop\\Test1\\" + name2 +".txt" , ios::out).c_str());
    
    		 input.clear();
    
    ifstream input("C:\\Users\\Neurotrin\\Desktop\\Test1\\" + name +".txt");
    
      if (!input)
      {
    cerr << "Datei beim Oeffnen der Datei " << "C:\\Users\\Neurotrin\\Desktop\\Test1\\" + name +".txt" << "\n";
    system("Pause");
      }
    
    string line;
    
      while (getline(input, line))
      {
    	  cout << "Datei: " << "C:\\Users\\Neurotrin\\Desktop\\Test1\\" + name +".txt";
    int b = atoi(line.c_str());
    if(b > a){
    	a = b;
    }
    	cout << b << '\n';
    
      }  
    
      while(c2 <= a){
    
    ifstream input("C:\\Users\\Neurotrin\\Desktop\\Test1\\" + name +".txt");
    
      if (!input)
      {
    cerr << "Datei beim Oeffnen der Datei " << "C:\\Users\\Neurotrin\\Desktop\\Test1\\" + name +".txt" << "\n";
    system("Pause");
      }
    
    string line;
    
      while (getline(input, line))
      {
    
    int b = atoi(line.c_str());
    if(c2 == b){
    
    c1++;
    e8 = b;
    d = b;
    }
    
      }
    
    if(c1 != 0){
    	cout << c2 << endl << c1 << endl << '\n';
    
    	file2 << c2 << "x" << c1 << endl;}
    c1 = 0;
    c2++;
    
      if(e8 == a){goto p2;}
    
      }
    


  • Also du hast eine Datei mit Zahlen? Und du willst nun zählen, wie oft welche Zahl vorkommt? Und das Ergebnis dann in eine andere Datei schreiben?

    Zeig mal einen Ausschnitt der Datei.



  • Erste Datei
    11
    97
    197
    1

    Zweite Datei
    1x1
    11x1
    97x1
    197x1

    Soweit funktioniert es aber ich hab mehrere dateien und beim zweiten Durchlauf funktioniert der Programmcode nicht mehr nur beim ersten durchlaufe



  • Wenn es dir nicht der Mühe wert ist, den Code lesbar zu formatieren, spare ich mir die Mühe ihn mir anzuschauen.



  • Oh, du bist auf dem völlig falschen C++ Dampfer. Du brauchst nur std::map<int,int>, kein getline sondern nur >>. Das Programm schaffst du in 15 Zeilen.



  • okay



  • Neurotrin schrieb:

    okay

    Ich kann das Programm schreiben und du kommentierst es. Denke da hast den größten Lernerfolg



  • Wäre gut ("dann kann ichs mir anschauen") das programm welches ich hier gemacht habe ist ein haufen aus Google und zusammengeworfen 😋
    Problem hat sich gelöst ich habe

    ofstream file2;
    an falscher stelle stehen gehabt.



  • #include <fstream>
    #include <map>
    using namespace std;
    
    int main()
    {
        map<int,int> zahlen;
        {
            ifstream file("zahlen.txt");
            for(int zahl; file>>zahl;)
            {
                ++zahlen[zahl];
            }
        }
        {
            ofstream file("ergebnis.txt");
            for(const auto& p : zahlen)
                file << p.first << "x" << p.second << endl;
        }
    }
    

    Poste dann deine Kommentare.



  • Ich hab definitiv noch viel zu lernen aber danke schön.



  • Neurotrin schrieb:

    Ich hab definitiv noch viel zu lernen aber danke schön.

    Joa ein gutes Buch spart da ziemlich viel Zeit.


Anmelden zum Antworten