Primzahl Programm stuertzt direkt nach eingabe von Zahlenbegrenzung ab.



  • Was hat das ganze den jetzt mit "Anwendung wird aufgrund eines ungültigen Vorgangs geschlossen." zu tun?

    Die Zahl am Ende soll eingegeben werden, damit man eine pause hat und der MSdos bildschirm nicht direkt verschwindet.



  • Online schrieb:

    main muss keinen Wert zurückgeben wenn es den Datentyp void hat.
    Mehr als ein ; ist zuviel.

    Laut standard-C++ muss main aber int sein(und muss keinen wert zurückgeben(aber sollte))
    Die Funktion void main schlucken einige Compiler nicht, z.B. Dev-C++ mit mingw.

    cu max



  • Hallo,
    du teilst durch 0, denn alle bis auf dein erstes Array-Element sind 0. Dadurch wird

    if(i%array[u]==0)
    

    zu

    if( i % 0 == 0)
    

    und das ist eine Division durch 0!



  • HumeSikkins schrieb:

    Online schrieb:

    main muss keinen Wert zurückgeben wenn es den Datentyp void hat.

    1. main darf laut Standard keinen anderen Rückgabewert als int haben
    2. main muss laut Standard kein explizites return-Statement enthalten. In diesem Fall wird implizit 0 zurückgeliefert.

    ok...dann wird das halt falsch an der FH unterrichtet und die 4 Bücher, die ich hier hab wissens auch nicht besser



  • Oki das programm stuertzt nicht mehr ab, aber die primzahlen wollen nicht. Das werd ich selber machen. Ich muss auch jetz ins bettchen, Morgen ersten beiden Mathe Klausur.



  • ';' kann es gar nicht zuviele geben, außer es ist eine von einer Kontrollstruktur kontrollierte Anweisung.
    Ich würde dir jetzt enpfehlen, mal als Debug-Version zu compilieren und zu starten, dann fängst du bestimmt ne Exception auf. 🙂



  • SparxII schrieb:

    Mein compiler compiled wie ne Fabrik. Mein problem ist waerend das prog läuft.

    du...mein Kompiler meldet hier Division durch Null...irgendwo wird in deinem Code Division durch Null durchgeführt



  • Online schrieb:

    HumeSikkins schrieb:

    Online schrieb:

    main muss keinen Wert zurückgeben wenn es den Datentyp void hat.

    1. main darf laut Standard keinen anderen Rückgabewert als int haben
    2. main muss laut Standard kein explizites return-Statement enthalten. In diesem Fall wird implizit 0 zurückgeliefert.

    ok...dann wird das halt falsch an der FH unterrichtet und die 4 Bücher, die ich hier hab wissens auch nicht besser

    Laut Stroustrup muss main tatsächlich int zurückliefern. Allerdings scheinen die meisten Compiler mit void zufrieden zu sein und ich tendiere auch dazu.



  • Wird da wirklich was zurückgegeben, auch wenn der Rückgabewert von main void ist ?



  • Jo, der Compiler ersetzt das vermutlich durch int main().



  • ok...dann wird das halt falsch an der FH unterrichtet und die 4 Bücher, die ich hier hab wissens auch nicht besser

    Na siehste. Wieviel so ein Besuch in diesem Forum einem doch bringt. Und wenn du immer noch an der Richtigkeit meiner Aussage zweifelst, dann schau doch einfach im Standard im Abschnitt 3.6.1 Main function nach.

    du...mein Kompiler meldet hier Division durch Null...irgendwo wird in deinem Code Division durch Null durchgeführt

    Sowas. Und alle Leute die sich Zeit nehmen und das Lesen erlernen, finden in einem meiner Beiträge auch einen konkreten Hinweis.

    Allerdings scheinen die meisten Compiler mit void zufrieden zu sein und ich tendiere auch dazu.

    Na wenn du dazu tendierst, dann sollten die vom Standardkomitee wohl unbedingt noch mal drüber nachdenken. Vielleicht wird void main dann ja schon in den neuen Standard aufgenommen. Das wäre doch toll, oder?
    Und bis dahin ignorierst du einfach die Leute mit ordentlichen Compilern. Was soll's? Hauptsache dein Code läuft bei dir.



  • Optimizer schrieb:

    Jo, der Compiler ersetzt das vermutlich durch int main().

    Der von Microsoft spuckt da ein dickes Error raus:

    d:\studium\Prog1\Test\main.cpp(43): error C2562: 'main' : 'void'-Funktion gibt einen Wert zurück

    muss höhstens so lauten:

    int main()
    {
      return 0;
    }
    


  • HumeSikkins schrieb:

    ok...dann wird das halt falsch an der FH unterrichtet und die 4 Bücher, die ich hier hab wissens auch nicht besser

    Na siehste. Wieviel so ein Besuch in diesem Forum einem doch bringt. Und wenn du immer noch an der Richtigkeit meiner Aussage zweifelst, dann schau doch einfach im Standard im Abschnitt 3.6.1 Main function nach.

    Ich hab deine Aussage ja nicht bezweifelt aber bei einer Funktion, bei der der Typ mit void deklariert wird kann es wohl keinen Rückgabewert geben.

    du...mein Kompiler meldet hier Division durch Null...irgendwo wird in deinem Code Division durch Null durchgeführt

    Sowas. Und alle Leute die sich Zeit nehmen und das Lesen erlernen, finden in einem meiner Beiträge auch einen konkreten Hinweis.

    Da warst du wohl einen Tick schneller...passiert halt oder, kein Grund so Bissig zu reagieren.

    Allerdings scheinen die meisten Compiler mit void zufrieden zu sein und ich tendiere auch dazu.

    Na wenn du dazu tendierst, dann sollten die vom Standardkomitee wohl unbedingt noch mal drüber nachdenken. Vielleicht wird void main dann ja schon in den neuen Standard aufgenommen. Das wäre doch toll, oder?
    Und bis dahin ignorierst du einfach die Leute mit ordentlichen Compilern. Was soll's? Hauptsache dein Code läuft bei dir.

    Es kann ja gut sein das das der Standard ist, es gibt aber genug Compiler bei denen void funktioniert. Und was verstehst du unter ordentlichen Compiler?



  • Online schrieb:

    Optimizer schrieb:

    Jo, der Compiler ersetzt das vermutlich durch int main().

    Der von Microsoft spuckt da ein dickes Error raus:

    d:\studium\Prog1\Test\main.cpp(43): error C2562: 'main' : 'void'-Funktion gibt einen Wert zurück

    muss höhstens so lauten:

    int main()
    {
      return 0;
    }
    

    Jo lol, wenn du void main() sagst, dann darfst du natürlich nicht return 0 schreiben.



  • HumeSikkins schrieb:

    2. main muss laut Standard kein explizites return-Statement enthalten. In diesem Fall wird implizit 0 zurückgeliefert.

    also wenn ich:

    int main() {}
    

    schreiben, sagt mein microsoft-compiler:

    warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen

    das bedeutet doch, dass nich "implitit 0" zurückgegeben wurde, oder ?



  • Optimizer schrieb:

    Online schrieb:

    Optimizer schrieb:

    Jo, der Compiler ersetzt das vermutlich durch int main().

    Der von Microsoft spuckt da ein dickes Error raus:

    d:\studium\Prog1\Test\main.cpp(43): error C2562: 'main' : 'void'-Funktion gibt einen Wert zurück

    muss höhstens so lauten:

    int main()
    {
      return 0;
    }
    

    Jo lol, wenn du void main() sagst, dann darfst du natürlich nicht return 0 schreiben.

    das ist es ja auch...jeder redet hier über return 0 dabei hat die Funktion main bei ihm den Datentyp void



  • entweder int main() mit return 0 (Standardgerecht)
    oder void main() ohne return oder return ohne Wert (M$-gerecht)

    Ich verstehe das Problem nicht.



  • nameless1337 schrieb:

    das bedeutet doch, dass nich "implitit 0" zurückgegeben wurde, oder ?

    dann ist dein compiler in dem punkt nicht standardkonform.
    ein guter compiler ist standardkonform.

    Online schrieb:

    Und was verstehst du unter ordentlichen Compiler?

    wenn ich c++ kompilieren will, dann wahrscheinlich einen c++ standardkonformen?
    wenn du nicht unbedingt c++ programmieren willst, kann es dir egal sein.
    allerdings weißt du dann nicht, ob du mit deinem C++ Dialekt dein Programm auf irgendeine andere Plattform portieren kannst, wo es diesen Dialekt nicht gibt.



  • hat mich nurmal interessiert. also gibt:

    void main() {return;}
    

    0 zurück, ist aber kein standard c++.



  • davie schrieb:

    Online schrieb:

    Und was verstehst du unter ordentlichen Compiler?

    wenn ich c++ kompilieren will, dann wahrscheinlich einen c++ standardkonformen?
    wenn du nicht unbedingt c++ programmieren willst, kann es dir egal sein.
    allerdings weißt du dann nicht, ob du mit deinem C++ Dialekt dein Programm auf irgendeine andere Plattform portieren kannst, wo es diesen Dialekt nicht gibt.

    hm...ist MS Visual C++.NET Std. 2003 nicht Standardkonform?


Anmelden zum Antworten