001
11.04.2008, 18:16 Uhr
0xdeadbeef
Gott (Operator)
|
Au weia. Also, folgende Kommentare:
1. = ist der Zuweisungsoperator, == ist ein Vergleichsoperator. Das bedeutet,
C++: |
if(primzahl = true) {
|
ist das selbe wie
C++: |
primzahl = true; if(primzahl) {
|
...und das ist nicht das, was du da willst. Dementsprechend
C++: |
if(primzahl == true) { // so ist's richtig
|
2. Lass das mit den globalen Variablen sein, das macht dir nur Ärger. Spätestens, wenn du Threads verwendest, höchstwahrscheinlich schon lange vorher, und später wiederverwenden kannst du den Code auf die Art nicht. Benutz lokale Variablen und Rückgabewerte, also zum Beispiel
C++: |
bool ist_primzahl(long x) { for(long i = 2; i * i <= x; ++i) { if(x % i == 0) { return false; } }
return true; }
|
...wobei das natürlich keine besonders hochoptimierte Prüfung auf Primzahlen ist, und
C++: |
int main() { int pz; //die primzahl long zsch; //das ergebnis von pz^4 + 1
// ... }
|
anstelle der globalen Deklaration.
3. Dinge wie
sind Konstanten, die zur Compilezeit vom Compiler geparst und durch den betreffenden Wert ersetzt werden. Das e ist hier kein Operator, der zur Laufzeit ausgewertet wird, dementsprechend kannst du ihn in Laufzeitberechnungen nicht benutzen. Außerdem ist 1.2e3 nicht etwa 1.2³, sondern 1.2 * 10³ bzw. 1200, und brächte dir hier dementsprechend überhaupt nichts. Wenn du Potenzen brauchst, das geht folgendermaßen:
C++: |
#include <cmath>
int main() { std::cout << std::pow(2, 3) << std::endl; // gibt 2³, also 8 aus. }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |