Textdatei
-
rüdiger schrieb:
Der Code von Kóyaánasqatsi ist Blödsinn. Ignoriere den einfach.
Warum sollte er Blödsinn seien? o0 Andere Dinge wird er nicht raffen (siehe Werner's post).
-
ok ihr c++ profis passt schon streitet euch nicht
ich brauch nur noch womit ich
das originale gefundene wort ausgeben kann ?fallst jemand eine eklärung braucht wofür ich das brauche weil ich das wort ja schon hab, dann eklär ich das .
-
Kóyaánasqatsi schrieb:
rüdiger schrieb:
Der Code von Kóyaánasqatsi ist Blödsinn. Ignoriere den einfach.
Warum sollte er Blödsinn seien? o0 Andere Dinge wird er nicht raffen (siehe Werner's post).
Naja:
1. Der Code ist falsch, du liest die letzte Zeile doppelt ein.
2. Dein Code ist genauso komplex, nur verwendest du ein paar zentrale Funktionen nicht, welche die Sache eigentlich eher vereinfachen würden.
3. Es hat ein paar Dinge drin, welche zwar nicht falsch sind, aber einfach unnötig.ali-g schrieb:
fallst jemand eine eklärung braucht wofür ich das brauche weil ich das wort ja schon hab, dann eklär ich das .
Jap, das brauch ich, sonst macht es für mich 0, Null, Zero, Non, Nullo Sinn

Grüssli
-
Dravere schrieb:
1. Der Code ist falsch, du liest die letzte Zeile doppelt ein.
2. Dein Code ist genauso komplex, nur verwendest du ein paar zentrale Funktionen nicht, welche die Sache eigentlich eher vereinfachen würden.
3. Es hat ein paar Dinge drin, welche zwar nicht falsch sind, aber einfach unnötig.Ok, könntest du den entsprechenden Code bitte berichtigen?
-
ali-g schrieb:
fallst du dir fragst wöfür ich das brauche weil ich das wort selber schon weiß kann ich dir gerne eklären wofür
schöner Satz - sollte mach sich irgendwie archivieren

Also wenn ich das alles mal zusammenfasse, so suchst Du nicht ein bestimmtes Wort, sondern ein Wort, was irgendeine Eigenschaft (MD5?) erfüllt, und dieses Wort möchtest Du dann auch ausgegeben haben. Dann erweitere ich den Code mal etwas:
#include <algorithm> // std::find_if #include <fstream> #include <iostream> #include <iterator> // std::istream_iterator #include <string> struct GuckMal { bool operator()( const std::string& wort ) const { // hier wird geprüft ob das Wort 'wort' das richtige ist, // falls ja, dann return true; sonst return false; if( wort[0] == 'h' && wort[wort.length()-1] == 'o' ) // z.B. vorne 'h' und hinten 'o' return true; // Ja das isses return false; // Nee noch mal versuchen } }; int main() { using namespace std; ifstream file("input.txt"); istream_iterator< string > i = find_if( istream_iterator< string >( file ), istream_iterator< string >(), GuckMal() ); if( i != istream_iterator< string >() ) cout << "gefunden: " << *i << endl; else cout << "nix gefunden" << endl; return 0; }kommen wir der Lösung näher?
-
also ich eklär es euch mal wofür ich dass z.b brauchen könnte
sagen wir mal du hast ein MD5 hash ok
bsp das
598d4c200461b81522a3328565c25f7c ( ich sag später mit welches wort der md5 hash generiert worden ist )
so
dann hab ich eine datei
wo die wörter drinn stehenhi
hallochs
hallo
kakalakedie wörter stehen drinn
also theoretisch geht dann das Programm jedes einzelne wort durch generiert
ein MD5 hash von jeden einzelnen Wort und schaut ob das mit den obigen MD5 Hash übereinstimmt
ok in diesem fall isthallo richtig
ok also so
eingabe = 598d4c200461b81522a3328565c25f7c
hallo -> MD5Hash == eingabe
cout << "Richtig ist: " << Wort << endl;
in diesem Fall ist dann Wort "hallo"
-
Juhee! - richtig geraten! dann lass' mich den Code noch etwas spezialisieren
#include <algorithm> // std::find_if #include <fstream> #include <iostream> #include <iterator> // std::istream_iterator #include <string> // eine Funktion, die den md5-Code von 'wort' erzeugt std::string md5( const std::string& wort ) { if( wort == "hallo" ) return "598d4c200461b81522a3328565c25f7c"; return "???"; //ich weiß nicht, wie md5 geht } struct GuckMal { GuckMal( const std::string& md5_code ) : m_md5_code( md5_code ) {} bool operator()( const std::string& wort ) const { // hier wird geprüft ob das Wort 'wort' das richtige ist, // falls ja, dann return true; sonst return false; return md5( wort ) == m_md5_code; } private: std::string m_md5_code; }; int main() { using namespace std; string md5_code; cout << "eingabe = ", cin >> md5_code; ifstream file("input.txt"); istream_iterator< string > i = find_if( istream_iterator< string >( file ), istream_iterator< string >(), GuckMal( md5_code ) ); if( i != istream_iterator< string >() ) cout << "Richtig ist: " << *i << endl; else cout << "nix gefunden" << endl; return 0; }
-
@Kóyaánasqatsi,
Korrektur ist fast nicht möglich, der würde am Ende komplett anders aussehen
Aber ich kann dir gerne mal die Codezeilen und co aufzeigen:
1. Du rufst gar nicht StringVectorFind auf.
2. Wozu diese Funktion überhaupt? Es gibtstd::find! Da verschwinden dann sogar diese komplizierten Typangaben, da diese automatisch gefunden und verwendet werden.
3.std::ifstream infile("test.txt", std::ios::in);Das
std::ios::inist unnötig. Ist der Defaultwert beistd::ifstream.
4.std::vector<std::string>::const_iterator it(Buffer.begin());Wozu diese Zeile? Nach dem ersten
push_backistitwieder ungültig. Zudem verwendest du die Variable gar nie.
5.if(!infile.is_open() || infile.fail()) std::cout<<"War nix -.-"<<std::endl;Nicht nur das die Formatierung unschön ist, sondern die Abfrage kann auch viel einfacher passieren:
if(!infile) { // ... }while(!infile.eof())std::istream::eof()prüft nur, ob du über das Ende hinaus gelesen hast und nicht, ob du am Ende bist. Dadurch kannst du am Ende sein und du führst nochmals einstd::getlineaus, welches fehl schlägt, aberlineist wahrscheinlich trotzdem noch, von der vorherigen Zeile befüllt. Dadurch fügst du die letzte Zeile ein zweites Mal ein.
Zudem ist es kein wortweise einlesen sondern zeilenweise.@Werner Salomon,
Puh, danke. Dachte schon, dass ich nun noch etwas dem ali-g hinschreiben müsste, aber in der Vorschau gesehen, dass du die kompetente Hilfe übernommen hast
Grüssli
-
ali-g schrieb:
also ich eklär es euch mal wofür ich dass z.b brauchen könnte
sagen wir mal du hast ein MD5 hash ok
bsp das
598d4c200461b81522a3328565c25f7c ( ich sag später mit welches wort der md5 hash generiert worden ist )
so
dann hab ich eine datei
wo die wörter drinn stehenhi
hallochs
hallo
kakalakedie wörter stehen drinn
Da du offensichtlich eine Attacke auf ein Passwort machen willst, dafür aber selber nicht programmieren lernen willst: Dafür gibt es schon dutzende leicht zu bedienende Programme, die dir vollautomatisch jedes Passwort knacken. Beispielsweise "John the Ripper". Erwarte aber nicht zu viel. Wenn die benutzten Passwörter nicht gerade in einem Wörterbuch stehen, dauert das mehrere CPU-Monate, eventuell auch Jahre.
-
wo ist der fehler sich von anderen helfen zu lassen
ich mein wenn du mal programmierst bei schweren sachen bsp.
brauchst du wahrscheinlich auch mal manchmal hilfe von anderen.EDIT:
auch wenn ich keine hilfe bekommen hätte, hätte ich das jeden tag etwas neues
versucht, ausprobiert. Meist ist es ja auch so wenn ich ein thread erstellen,
nützt der thread mir theoretisch garnicht mehr weil ich die antwort von selber schon gefunden habe.
-
ali-g schrieb:
wo ist der fehler sich von anderen helfen zu lassen
ist kein Fehler - und brauchst Dich auch nicht zu rechtfertigen.
Sag' uns lieber, ob der letzte Lösungsentwurf in Deinem Sinne ist - oder nicht.ali-g schrieb:
598d4c200461b81522a3328565c25f7c ( ich sag später mit welches wort der md5 hash generiert worden ist )
und wie heißt das Wort nun?
Gruß
Werner
-
Werner Salomon schrieb:
ali-g schrieb:
wo ist der fehler sich von anderen helfen zu lassen
ist kein Fehler - und brauchst Dich auch nicht zu rechtfertigen.
Sag' uns lieber, ob der letzte Lösungsentwurf in Deinem Sinne ist - oder nicht.ali-g schrieb:
598d4c200461b81522a3328565c25f7c ( ich sag später mit welches wort der md5 hash generiert worden ist )
und wie heißt das Wort nun?
Gruß
Wernerja der Lösungsentwurf ist in meinem Sinne
und das Wort heißt hallo :D:D
danke nochmal an alle die mir geholfen haben, vielleicht sehen wir uns ja wieder :D:D:D naja ich erstelle nur ein thread wenn mir echt nichts mehr einfällt,
naja bisdann.