Anfänger: Frage zum Gleitkommatyp float
-
Seltsam - g++ sollte das wissen. (
g++ -vgibt dir übrigens die Version des Compilers aus)
Vielleicht hat ja deinemain()eine falsche Signatur.~Oder ich erzähle hier Blödsinn.~
-
Caligulaminus schrieb:
Vielleicht hat ja deine
main()eine falsche Signatur.das würde dir der g++ auch sagen.
-
vario-500 schrieb:
Caligulaminus schrieb:
Vielleicht hat ja deine
main()eine falsche Signatur.das würde dir der g++ auch sagen.
Hat er doch: Main muss int zurückgeben. Das bedeute nicht, das da kein return steht sondern das der Rückgabetyp falsch ist.
-
vario-500 schrieb:
das würde dir der g++ auch sagen.
Nicht wirklich. http://www.c-plusplus.net/forum/302868

@yihaaa
Du hast wahrscheinlich void main() statt int main() oder so irgendwo stehen. Richtig muss es aber int main() heißen. Ansonsten kompiliere mal mitg++ -std=c++0x -Wall -pedantic blubb.cpp
-
@cooky451: Du hattest Recht; Ich hatte void main() statt int main() da stehen. Da ich den Unterschied gar nicht kenne ist mir das auch nicht aufgefallen.
Der Code zum kompilieren ändert aber nichts.
Allerdings hab ich es leider immer noch nicht ganz zum laufen bekommen.Hier nun nochmal meine überarbeitete Datei und die Fehlermeldungen:
#include <iostream> //std::cout, std::endl #include <cmath> //exp, sin, cos #include <iomanip> //std::setprecision int main() { using namespace std; float exp (const float & x) float { ergebnis = 0.0, schritt = 1.0; int n=1; for (; n<50; ++n) { ergebnis += schritt; schritt *= x/n; } cout << "Mit n = "<<n<<" Schritten:" << endl; return ergebnis; } { float x; ///Einlesen des Exponenten cout << "x = "; std::cin >> x; //Ausgabe cout << std::setprecision(12) << " mein exp(x) = " << exp( x ) << "\n"; << " cmath exp(x) = " << exp( x ) << endl; return 0; } }potenz.cc: In Funktion »int main()«:
potenz.cc:11:2: Fehler: expected initializer before »float«
potenz.cc:31:2: Fehler: expected »}« at end of inputInitializer sind ja die Dinger die ganz am Anfang stehen. Wozu ist denn bei mir zum Beispiel der dritte gut?
Und der letzte Fehler deutet doch auf eine falsche Klammersetzung; Diese habe ich allerdings mehrfach überprüft und kann auch hier meinen Fehler nicht finden.
-
Dein Programm sieht aus wie eines dieser Puzzles, bei denen die Zeilen zufällig vertauscht wurden und nun wieder in die richtige Reihenfolge gebracht werden müssen.
-
Was soll denn Zeile 11 machen? oO
-
Letztendlich habe ich die Datei ja so ungefähr von meinem Leiter bekommen und da nur ein bisschen was verändert.
Ich dachte mir Zeile 11 heißt, dass man bei dem Wert Null anfängt und immer um 1 erhöht.Nun bräuchte ich wohl noch jemanden, der mir erklärt wie das Puzzle zu ordnen ist.
-
Und was soll die Klammer da?
-
Hm gute Frage. Gehört die nicht zu dem float-Befehl dazu?
Mir fällt es noch recht schwer, das Programm nachzuvollziehen.
-
Nein, gehört sie nicht. Und float ist auch kein Befehl, das ist ein Typ. Wenn du das nicht weißt solltest du vielleicht erstmal die Grundlagen der Sprache lernen, bevor du da wild rumsortierst. Nur so als Tipp, so bringt das nämlich nichts.
-
Das sieht unser Prof wohl leider etwas anders, aber ich versuche mich da nebenbei so gut es geht einzulesen. Werds dann nochmal weiter versuchen, für weitere Tipps, wie das Programm funktionieren könnte, wäre ich sehr dankbar.
-
Die Definition von exp hat nichts innerhalb der main() zu suchen.
Und wie du auf die Klammer kommst, ist immer noch nicht klar - in deinem ersten Post hattest du die schließlich noch an der richtigen Stelle.
-
Ich hab mal ein bisschen umsortiert: http://ideone.com/4oZI9
Euer Prof lässt euch Zeilen sortieren (was an sich schon irgendwie Quatsch ist..) bevor ihr die Sprache könnt? Wie soll das funktionieren?
-
@cooky451: Ja, das fragen ich und meine Kommilitonen uns auch. Diese Syntaxfehlersucherei scheint mir kein sehr sinnvoller Einstieg ins Erlernen einer Programmiersprache, aber was will man tun.
Vielen Dank fürs Zusammenpuzzeln! Ich werde mich nun mal weiter daran machen es nachzuvollziehen und die weiteren Aufgaben zu lösen

-
Nun schieb mal nicht alles auf den Prof. Ihr habt bestimmt schon besprochen, dass es in C++ keine verschachtelten Funktionen gibt (in Pascal oder Modula z.B. gibts sowas). Und ihr habt auch besprochen, wie man Variablen deklariert bzw. definiert (bei einfachen Variablen fällt das zusammen). Das float kein Befehl sondern ein Variablentyp ist, ist wohl auch bekannt. Und das main in C++ einen int-Wert zurückgibt, ist wohl auch bekannt (C hat auch void main verziehen).
-
Das tue ich ja auch nicht. Ich denke bloß, dass hier extrem viel Eigeninitiative gefragt, was ja an einer Uni auch zu erwarten ist.
Allerdings fällt es mir doch recht schwer solche Aufgaben auf Anhieb zu lösen. Wir hatten bisher 45min Vorlesung, in denen er uns das alles wohl so runtergerattert hat, wovon du da sprichst - aber mehr auch nicht. Wenn man vorher noch nie in seinem Leben irgendetwas mit Programmieren zu tun hatte fällts einfach sehr schwer, da so schnell zu folgen und sich alles zu merken geschweige denn es zu verstehen.
-
Du bist auf der Uni. Wenn du Probleme hast, kauf dir ein Buch und lies es. So schwer ist das nun auch wieder nicht. (Siehe FAQ für Buchempfehlungen.)