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.
-
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
undstd::endl
angebracht, sonst meint der Nutzer noch, das Inkrementieren geht viel länger als das Probieren.
-
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
undstd::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.