brute force programm schreiben



  • tori1117 schrieb:

    hallo, ich bin ein anfänger in c++ und habe in der letzen zeit die basics angeschaut.

    Ich bezweifele, dass unter Basics Templates/Klassen/Iteratoren/Algorithmen fallen... 🙄



  • Werner Salomon schrieb:

    while( any_of

    Ich würde links noch ein unsichtbares Rad anbringen, und wenn es sich zum erstenmal dreht, ist die Feier gelaufen.



  • irgendwie verstehe ich nur bahnhof muss mir nochmal die basics anschauen.
    Hatte vor, dass man eine zahlenkombination eingibt und das programm alles ausprobiert bis er es raus hat.


  • Mod

    tori1117 schrieb:

    irgendwie verstehe ich nur bahnhof muss mir nochmal die basics anschauen.
    Hatte vor, dass man eine zahlenkombination eingibt und das programm alles ausprobiert bis er es raus hat.

    😕

    #include <iostream>
    int main()
    {
     using namespace std;
     cout << "Zahl: ";
     unsigned int zahl;
     cin >> zahl;
     cout << "Suche nach " << zahl << '\n';
     for(unsigned i = 0; ; ++i)
     {
       cout << "Probiere " << i << " ... ";
       if (i == zahl)
       {
         cout << "Gefunden!\n";
         return 0;
       }
       else
         cout << "daneben\n";
     }
    }
    

    Dies ist eines der merkwürdigsten Programme, die ich je geschrieben habe 🕶



  • SeppJ schrieb:

    Dies ist eines der merkwürdigsten Programme, die ich je geschrieben habe 🕶

    Fehlt nur noch Fehlerbehandlung einer falschen Eingabe, aktuell wird dann immer '0' gefunden.

    Ausserdem wäre hier std::flush und std::endl angebracht, sonst meint der Nutzer noch, das Inkrementieren geht viel länger als das Probieren.


  • Mod

    xXxbennixXx schrieb:

    SeppJ schrieb:

    Dies ist eines der merkwürdigsten Programme, die ich je geschrieben habe 🕶

    Fehlt nur noch Fehlerbehandlung einer falschen Eingabe, aktuell wird dann immer '0' gefunden.

    Ausserdem wäre hier std::flush und std::endl angebracht, sonst meint der Nutzer noch, das Inkrementieren geht viel länger als das Probieren.

    Oh ja (ungetestet):

    #include <iostream>
    #include <unistd.h>
    
    int main()
    {
     using namespace std;
     cout << "Zahl: ";
     unsigned int zahl;
     if (cin >> zahl)
     {
      cout << "Suche nach " << zahl << '\n';
      for(unsigned i = 0; ; ++i)
      {
        cout << "Probiere " << i << flush;
        for (int i = 0; i < 5; ++i)
        {
          cout << '.' << flush;
          usleep(100000);  // 0.1 Sekunden
        }
        if (i == zahl)
        {
         cout << "Gefunden!\n";
         return 0;
        }
        else
         cout << "daneben\n";
      }
     }
     else
      cout << "Das war keine Zahl.\n";
    }
    


  • ich bekomme zwei fehlermeldungen

    #include <unistd.h> kann nicht geöffnet werden
    usleep ist nicht definiert



  • Du nutzt Windows? Dann musst du stattdessen windows.h inkludieren und Sleep nutzen, wobei Sleep nur im Millisekundenbereich arbeitet.



  • ja hat funktioniert. Wenn ich eine Zahl eingebe steht da: probiere 0.



  • tori1117 schrieb:

    ja hat funktioniert. Wenn ich eine Zahl eingebe steht da: probiere 0.

    Nicht immer so ungeduldig sein. Nach 100000 Millisekunden (knapp 2 min) probiert er 1. Ich würde das sleep ganz rausnehmen.


Anmelden zum Antworten