Vorkommen eines bestimmes Strings zählen
-
Hi.
Ich bin ziehmlich neu im gebiet C++, aber das tut jetzt eigentlich nicht zur Sache. Ich bin gerade dabei (nur aus Intresse) ein Programm zu schreiben, dass mit alle Volkommen Zahlne ausgibt, bzw. alle Zahlen dessen Teiler Addiert die Zahl ergeben (z.b. 6 : 1,2,3 = 1+2+3 = 6). Dies ist auch in PHP kein Problem und war in 5min. zu realisieren aber in C++ funktioniert die Funktion strstr(); nicht. Sie soll das vorkommen eines Punktes in einer Zahl nachkontrolieren. Wenn ein Punkt exestiert ist es kein Teiler, wenn keiner exestiert ist die jeweilige Zahl ein Teiler ://--------------------------------------------------------------------------- #include <iostream.h> #include <conio.h> #include <iomanip.h> #include <cstring.h> //--------------------------------------------------------------------------- int main() { cout << "Dieses Programm zaehlt die vollkommen Zahlen von 1-1.000.000 auf !\n\n"; for(int nenner=1; nenner<10000; nenner++) { int ges = 0; for(int i=1; i<nenner; i++) { int result = nenner / i; if(strcmp(".", result >= 1) { ges = ges + i; } } if(ges==nenner) { cout << nenner << " ist eine vollkommene Zahl !\n"; } } getch(); return 0; } //---------------------------------------------------------------------------
Aber irgentwie gibt mir mein Compiler immer nur ein Fehler aus !?
-
Hi,
nun ja, integer kann man in C nicht unbedingt mit einer Stringfunktion bearbeiten. Wenn Du mal erklären kannst, was vollkommene Zahlen sind, kann Dir vielleicht geholfen werden.
grüße Con@n
-
Hi.
Ich habe doch schon erklärt was Vollkommene Zahlen sind. Das sind Zahlen, die wenn man dessen gesamten Teiler addiert die Zahl selbst ergibt. Wie oben schon gesagt z.B. 6. 6 ist durch 1,2 und 3 teilbar. zusammen ergeben 1,2,3 =6. Aber das ist ja eigentlich auch garnicht das Wichtige ;-). Mir geht es nur darum, wie die Funktion heisst, um das Vorkommen einen bestimmten Strings in einen String zu zählen.
-
Hallo,
also, du kannst in c++ nicht einfach eine int-Variable als string verwenden.
Das versuchst du aber mit result.Ich weiß nicht, ob du ich wirklich verstanden hab, was du mit den Zeilen
int result = nenner / i; if(strcmp(".", result >= 1) { ges = ges + i; }
machen willst, aber ich versteh das so, dass du wissen willst, ob (nenner / i) eine ganze Zahl ist oder nicht. Wenn nicht, soll ges hochgezählt werden.
Das würd ich so machen:
if (((double)nenner / i) != (nenner / i)) { ++ges; }
mfg
rodo
-
Hi.
Nein ich will mit dieser Zeile bewirken (strcmp muss eigentlich strstr heissen) das wenn RESULT keinen "." entählt, der GES + I der forschleife rechnet.
-
Hallo,
dann schreib
if (((double)nenner / i) == (nenner / i))
statt
if (((double)nenner / i) != (nenner / i))
mfg
rodo
-
Vielen Dank