anfänger frage funktionen...
-
camper schrieb:
das ist ein kleines L und keine 1

ja eben
*d'oh*Ich habs jetzt selbst nochmal gemacht:
#include <iostream> using namespace std; bool isPrime(int number) { for (int i = 2; i < number ; i++) { if (number % i == 0) // ist ohne Rest teilbar return false; // Zahl ist keine Primzahl } // konnte nicht ohne Rest geteilt werden return true; // Zahl ist eine Primzahl } int main() { for (int i = 1; i < 100; i++) { if (isPrime(i)) cout << i << " ist eine Primzahl" << endl; } system("PAUSE"); // Taste drücken return 0; }
-
hi
ja mei wieso komm ich nie auf so einfache sachen grml wieso is das bei mir immer so umständlich aber habs auf deine idee mal selbst aufgesetzt und es klappt super
danke für die hilfe...mal gucken mit was ich jetzt weiter mach

mfg
chrisi01
-
chrisi01->wie wärs mal mit
int main
-
und wieso net void main(void) ??
was spricht dagegen? zumindest funzt es auch so...
mfg
chrisi01
-
chrisi01 schrieb:
was spricht dagegen? zumindest funzt es auch so...
Klar, man kann ja auch rückwärts auf der Autobahn fahren!
An implementation shall not predefine the main function. This function shall not be overloaded. It shall
have a return type of type int, but otherwise its type is implementation-defined. All implementations
shall allow both of the following definitions of main:
int main() { /* ... / }
and
int main(int argc, char argv[]) { /* ... */ }Gruß
-
Soweit ich weiß wegen dem Rückgabewert.
return 0;signalisiert Windows glaube ich, dass alles in Ordnung lief.
Bin mir aber nicht sicher.
-
Hab was gefunden:
Rückgabewert ist der Fehlercode
Auch der Rückgabewert der Funktion main ist von Bedeutung. Gibt sie 0 zurück, wird dies als fehlerfreier Ablauf gewertet. Alle anderen Werte sin Hinweis auf einen Fehler bei der Ausführung. Gerade wenn Fehler entstehen, ist es oft sehr umständlich, wieder zur Funktion main zurückzukehren. Hier hilft die Funktion exit. Sie beendet das Programm und der Übergabeparameter wird als Rückgabewert an den Aufrufer des Programms weitergereicht.
*exit(0);
-
nee
return 0;muss man nicht schreiben, aber das muss man:
int main(){/*....*/}@chrisi01
außerdem benutzt du veraltete header, benutz mal#include <iostream>statt *.h.
welcher compiler lässt das denn noch durchgehen
-
hi
also ich verwende bisher void main (void) werd dann aber doch wenn ihr es sagt auf int main() umsteigen und ein return 0;
iostream.h lässt visual studio 6 durchgehen und auch borland 5 in der beruffschule ließ es durchgehen werd das h aber weglassen
soll ich das dann bei allen header files weglassen oder dreht es sich hier nur um die?!mfg
chrisi01
-
iostream.h und iostream sind zwei unterschiedliche Dateien.
iostream ist neuer.MfG
-
edit: wieder mal zu langsam beim korrigieren...
stimmt, nur die C-header und <strstream> sind standard
-
camper schrieb:
icepacker schrieb:
welcher compiler lässt das denn noch durchgehen

jeder standard-konforme würde ich sagen...

Die alten Header gibts nicht mehr nach dem Standard!
Gruß
-
Nochmal zum Thema Primzahlen.
Du kannst den Code folgendermaßen optimieren:
Nur die Teiler bis sqrt(Zahl) testen und auch nur die 2 und sonst ungerade Teiler.
-
so
woltle etz mal die zeit messen wie lang die berechnung braucht:
#include <iostream.h> #include <conio.h> #include <time.h> bool prim (int l) { int j; for (j = 2; j < l; j++) { if (l % j == 0) { return false; } } return true; } int main () { int z; time_t Zeitstempel; tm *nun; Zeitstempel = time(0); int i; int j; for (i = 1; i <= 5; i++) { if (prim(i)) { cout << i << " ist eine Primzahl" << endl; } } time_t Zeitstempel2; tm *nun1; Zeitstempel2 = time(0); z = Zeitstempel2 - Zeitstempel; cout << "Programmlaufzeit: " << z << " Sekunden"; getch(); return 0; }Zeitstempel hat einen wert aber Zeitstempel2 ist leer WARUM?! versteh das mal wieder nicht
und noch etwas was ich mir nicht erklären kann:
int main () { int z; int y; int x; int i; int j; time_t Zeitstempel; tm *nun; Zeitstempel = time(0); x = Zeitstempel; cout << x; for (i = 1; i <= 5; i++) { if (prim(i)) { cout << i << " ist eine Primzahl" << endl; } } cout << x; time_t Zeitstempel2; tm *nun1; Zeitstempel2 = time(0); cout << Zeitstempel2; z = Zeitstempel2 - Zeitstempel; ....wenn ichd as nun so schreib wird das erste x ausgegeben das zweite x wird aber nicht mehr angezeigt ich versteh etz echt nur noch bahnhof warum das so ist?!?
mfg
chrisi01
-
#include <time.h> clock_t timestart = clock(); /* rechnen */ clock_t timestop = clock(); clock_t clocks = timestop-timestart;Mit der Konstanten CLOCKS_PER_SEC kannst du in Sekunden umrechnen.
------------
chrisi01 schrieb:
bool prim (int l) { int j; for (j = 2; j < l; j++) { if (l % j == 0) { return false; } } return true; }Warum musst du den Parameter unbedingt l nennen? Das macht es unübersichtlicher.
Und warum schreibst du nicht "for (int j = 2; j < l; j++)" ? Finde ich auch schöner
-
hi
das mit den konstanten hab ich noch net ganz gepielt muss ich mal guckene rst

Warum musst du den Parameter unbedingt l nennen? Das macht es unübersichtlicher.
i
j
k
l
habs halt alphapetisch gemacht ^^ ach jeder meckert über meine variablen war bei php net anders bins also gewohnt ^^Und warum schreibst du nicht "for (int j = 2; j < l; j++)" ? Finde ich auch schöner
hmm keine ahnung ich find das andere schöner.... denk jedem dem seinen oder?
mfg
chrisi01
-
Variablen immer so lokal wie möglich deklarieren.
Also:for (int j = 2; j < l; j++)Wobei das mit dem VC++ 6 das gleiche wie
int j; for (j = 2; j < l; j++)ist.
MfG
-
hi
es ist zwar schönd as ihr mir alle euren code liefert aber ich möchte auch gern mal meinen laufen sehen

#include <iostream.h> #include <conio.h> #include <time.h> bool prim (int l) { int j; for (j = 2; j < l; j++) { if (l % j == 0) { return false; } } return true; } int main () { int z; int y; int x; int i; int j; time_t Zeitstempel; tm *nun; Zeitstempel = time(0); x = Zeitstempel; cout << x; for (i = 1; i <= 5; i++) { if (prim(i)) { cout << i << " ist eine Primzahl" << endl; } } cout << x; time_t Zeitstempel2; tm *nun1; Zeitstempel2 = time(0); cout << Zeitstempel2; z = Zeitstempel2 - Zeitstempel; //cout << "Programmlaufzeit: " << clock_t clocks << " Sekunden"; getch(); return 0; }wieso zur hölle zeigt er das erste x an und danach nicht mehr? ich versteh das einfach nicht (vllt. häng ich noch zu sehr an php? weil da würde sich x net ändern ;))
mfg
chrisi01
-
kann mir keiner helfen?
würde echt gern wissen wieso das erste x angezeigt wird das zweite aber nicht mehr?!?
edit: lol wenn ich an die 2 cout x ein endl häng gehts wieso das? wieso schreibt er das net in der gleichen zeile weiter sondern muss die zeile beenden? versteh ich net?!
edit2: so ich glaub ich versteh das prinzip irgendwie muss man manche zeilen beenden mit endl sonst gibt er nix mehr danach aus kann mir mal wer da nen grund dafür geben wieso das so ist?
mfg
chrisi01
-
chrisi01 schrieb:
so ich glaub ich versteh das prinzip irgendwie muss man manche zeilen beenden mit endl sonst gibt er nix mehr danach aus kann mir mal wer da nen grund dafür geben wieso das so ist?
cout ist gepuffert.
cout.flush();gibt den Pufferinhalt auch aus.
Kurt