auf 4
-
hi
wie kann ich auf die zahl nicht draufkommen durch xxx++; ? mit binären zahlen müsste es gehen oda?
es muss so sein: 1 2 3 5 6 7 8 9 10 11 12 13 15 16 17 .. ohne 4 halt.
mit schiebeoperatoren wärs was, oder?
thx
-
??was meinst di??
-
for(int i = 0; i < n; i++) if(i == 4) continue; else ...?
-
also ich will,dass alles was mit 4 beginnt, endet oder halt ne 4 drinnen hat, ausgelassen wird.
aber wie mach ich das nur?
-
Hallo
Dann must du ins Dezimalsystem umrechnen, denn so eine Eigenschaft kannst du in anderen Zahlensystem gar nicht abbilden.
Also wandle die Zahl in einen std::string um und such in dem String nach der Ziffer '4'bis bald
akari
-
bool hat4(int zahl) { unsigned int betrag = abs(zahl); while (betrag >= 4) if (betrag % 10 == 4) return true; else betrag %= 10; return false; }
-
Hallo
Was glaubst du wohl wie eine Umwandlung in einen String abläuft?

bis bald
akari
-
@akari: Je nach Implementation entweder mit string-streams, welche die aktuelle locale-Einstellung bzw. das Encoding beachten, oder auch manuell (z. Bsp. ASCII '0'==48), wie auch immer, die Berechnung hat4 ist unabhängig davon.
Vielleicht verstehe ich aber auch nicht, welche der Möglichkeiten einer Konvertierung du meinst.
-
Hallo
Was auch immer noch in den Streams abläuft, zunächst einmal wird auch die String-Umwandlung die Integer-Zahl in die einzelnen Dezimalstellen aufteilen. Das dürfte deiner Funktion ähnlich aussehen.
bis bald
akari
-
akari schrieb:
Hallo
Was auch immer noch in den Streams abläuft, zunächst einmal wird auch die String-Umwandlung die Integer-Zahl in die einzelnen Dezimalstellen aufteilen. Das dürfte deiner Funktion ähnlich aussehen.
bis bald
akariabgesehen davon das du erst in einen String umwandelst, und ihn dann durchsuchst...
Alternativ könnte man natürlich die Zahl als Ziffern darstellen, und dann jeweils die Ziffern prüfen, um nur die zu speichern, welche keine 4 enthalten.Mich würde eher interessieren, welchen sinn das machen soll

-
Hallo
Der Sinn ist es vorhandene Sachen zu benutzen. Ich glaube nicht das es hier um eine performance-kritische Anwendung geht, wo Mikro-Optimierungen nötog sind.
bis bald
akari
-
bool vier_enthalten (int zahl) { while (1) { if ((zahl - 4) % 10 == 0) { return true; } zahl = zahl / 10; if ( zahl < 4 ) { return false; } } }
-
von da hab ich das:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.htmlwie kann ich nun ein Programm damit machen, dass das bei einer "4" im GANZEN Wort was ausgibt?
Außerdem kann man das nicht hochzählen:
int zahl = 3; // NUR WENN 3 STEHT, funktioniert das, deswegen meine ich ja,dass es nicht hochgezählt wird .. int wert = zahl; std::ostringstream convert; // zu Str std::stringstream convert2; // zu Int std::string g; int tmp = 0; for(int counter = 0; counter != 80 + 1; ++counter) { ++zahl; ++wert; tmp = zahl; // Temp. Zahl convert << tmp; g = convert.str(); if(g == "4" || g == "14") { ++zahl; std::cout << "Zahl: " << zahl << "\t" << "Wert: " << wert << std::endl; } else { std::cout << "Zahl: " << zahl << "\t" << "Wert: " << wert << std::endl; } }außerdem
-
*außerdem wird ja tmp irgendwie nicht größer, also um genauer zu sein "zahl".
-
kann mir bitte jemand helfen?
-
bitte
-
kann mir bitte jemand helfen?
ich hab doch schon den source gegeben.
-
g = convert.str(); if(g.find('4') != std::string::npos) { // found a '4' in the string } else { // no '4' in this string }