Überprüfen von Zahl
-
Hallo!
Mein Problem:
Ich habe eine Zahl im Format XXXXXX zwischen 111111 und 666666.
Jetzt möchte ich überprüfen, ob diese Zahl eine 0, 7, 8 oder 9 enthält.
Wie mache ich das am besten?
-
Hallo, ich würds in etwa so machen, ist aber ungetestet, also einfach mal probieren:
bool contains(int zahl, int suche) { if(zahl%10 == suche) return true; if(zahl==0) return false; return contains(zahl/10, suche); }oder iterativ -->
bool contains_iterativ(int zahl, int suche) { while(zahl > 0) { if(zahl % 10 == suche) return true; zahl /= 10; } return false; }
-
oder ganz einfach

int contains (int zahl, int suche) { char b[32]; return !!strchr (itoa (zahl, b, 10), suche+'0'); }
-
Meins ist aber schneller *GG* Schenkt sich aber net viel^^
-
Ich würd boost nehmen:
bool containsAnyOf(int zahl, std::string const& zeichen) { asText = lexical_cast<string>(zahl); return asText.find_first_of(zeichen)!=string::npos; } // irgendwo: bool result = containsAnyOf(zahl, "0789");vielleicht nicht das Schnellste, aber das einfachste und recht flexibel.
-
Jester schrieb:
Ich würd boost nehmen:
mach'n template draus. vielleicht haste ja glück und der compiler macht 'ne stringkonstante

-
Ich sollte mich mehr mit C++ beschäftigen...
Ich hab das Problem etwas falsch gestellt... Ich muss wissen wie oft welche Zahlen (von 1-9) enthalten sind.
-
void analyse(int value, int* frequency) { do { ++frequency[value%10]; value /= 10; } while(value); } int main() { int zahl, stat[18] = {}; cin >> zahl; analyse(zahl, stat); for(int i=0; i<10; ++i) { cout << i << " -> " << stat[i] << endl; } }[edit]Ich habs mir ganz genau überlegt, und ich glaub in der 0 ist eine Null ;)[/edit]
-
Kommt in "0" keine 0 vor? :p