Primzahl Programm stuertzt direkt nach eingabe von Zahlenbegrenzung ab.
-
Ach ja, wäre besser wenn du vor der main einen Prototypen erstellst,
und deine Funktion nach die main schreibst, ist (finde ich übersichtlicher)#include <iostream> #include <cmath> using namespace std; void Prim(int zahl);//Prototyp int main() { int zahl; cout<<"Bis zu welcher Zahl sollen die Primzahlen ausgegeben werden?"<<endl; cin>>zahl; Prim(zahl); cin>>zahl; return 0; } void Prim(int zahl) { int array[100000]={2}; int i; int u; int count=1; int temp=0; float temp2=0; for(i=3;i<=zahl;i++) {temp=0; if(sqrt(zahl)<count) temp2 = sqrt(zahl); else temp2 = count;; for(u=1;u<=temp2;u++) { if(i%array[u]==0) temp=1; else;}; if(temp=1) {count++; array[count]=i; cout<<i<<endl;; temp = 0;} else;}; }
-
SparxII schrieb:
#include <iostream> #include <cmath> using namespace std; //<-- so wir das benutzt void Prim(int zahl) { int array[100000]={2}; int i; int u; int count=1; int temp=0; float temp2=0; for(i=3;i<=zahl;i++) {temp=0; if(sqrt(zahl)<count) temp2 = sqrt(zahl); else temp2 = count;; // ein ; ziviel for(u=1;u<=temp2;u++) { if(i%array[u]==0) temp=1;;}; // da auch ein ; zuviel if(temp==1) {count++; array[count]=i; cout<<i<<endl; temp = 0;};}; }; void main() { int zahl; cout<<"Bis zu welcher Zahl sollen die Primzahlen ausgegeben werden?"<<endl; cin>>zahl; Prim(zahl); cin>>zahl; //wozu wird die zahl nochmal eingegeben? };
-
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.
-
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 wirdif(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.