fehler beim algorithmus



  • hallo.

    ich brauche einen algorithmus, der bei einem beliebigem string überprüft, ob irgendeines der zeichen, die darin vorkommen, nicht in einem andren string vorhanden ist.

    string eins = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //der überprüfstring
    string test = "AKSJFKASKF"; // funktion gibt true zurück
    string test2 = "ASKFJALkFAS"; // funktion gibt false zurück, wegen des kleinen k's
    

    was ich bisher habe ist das hier:

    bool check_zeichen ( char das) {
    	 bool returnbool = false;
    	 string alphabet = "ABCDEFGHIJKLMNOPQRSTUVXYZ";
    	 for(int i; i < alphabet.length(); i++) {
    	 		 if ( das == alphabet[i] ) {
    			 	returnbool = true;
    				break;
    				}
    		}
    	  return returnbool;
    }
    
    bool check_eing_string (string eing) {
    	 bool check;
    	 check = true;
    	 for(int i; i < eing.length(); i++) {
    	 		 if (check_zeichen(eing[i]) == false) {
    			 	check = false;
    				}
    				}
    	return check;
    	}
    

    er gibt aber immer false zurück. wo liegt mein fehler? kann mir wer helfen?

    grüße



  • Hi,
    habe mir jetzt deinen Quellcode nicht weiter angeschaut, aber ich denke du kannst das auch einfacher loesen:

    #include <iostream>
    #include <string>
    using namespace std;
    
    bool Test(string const& s1, string const& s2)
    {
      return s2.find_first_not_of(s1) == string::npos;
    }
    
    int main(int argc, char *argv[])
    {
      string s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //der überprüfstring
      string s2 = "AKSJFKASKF"; // funktion gibt true zurück
      string s3 = "ASKFJALkFAS"; // funktion gibt false zurück, wegen des kleinen k's
    
      cout << Test(s1, s2) << endl;
      cout << Test(s1, s3) << endl;
    
      return 0;
    }
    

    Gruss,
    DeSoVoDaMu



  • wahh.. das geht ja sogar xD
    ca. 20 zeilen eingespart. woah.

    danke.

    kann ich aber noch irgendwie machen, dass 0 und 1 bei der rückgabe vertauscht werden? mit not oderso? naja, eher nur bei schaltungen.



  • inline bool some_dumpshit_function (std::string const& lhs, std::string const& rhs)
    {
      return (lhs.find_first_not_of (rhs) != std::string::npos);
    }
    

Anmelden zum Antworten