If Def. Problem
-
Nun sagt mir das Liebe Programm aber es ist noch ein Fehler vorhanden:
printf("\nIhr optimal Gewicht beträgt" " betraegt: %4.2f KG!", Ergebnis); // Ausgabe des Ergebnisses getchar (); // wartet auf Tastendruck } // EndeIrgendwie vermisst er für die Ende Klammer ein Argument oder so?
-
printf("\nIhr optimal Gewicht beträgt %4.2f KG!", Ergebnis); // Ausgabedes Ergebnisses getchar (); // wartet auf Tastendruck }probier mal das
-
if(Geschl! =w); // Uebermach mal das ; weg das gehört da nicht hin ist bei beiden if's
lg lolo
-
und main() mußt natürlich auch noch zu machen und was zurück geben, also fehlt am ende eine
... return 0; }doppelte zeilen blöcke sind immer bäh also eine neue variable
double factor; if(Geschl == 'w'){ factor = 0.95; }else{//Geschl == 'w' factor = 0.9; } Ergebnis = (Groesse - 100.) * factor; ...
-
Fires112 schrieb:
...
Ein paar weitere Anmerkungen, zumindest wenn du wirklich C++ programmierst...
Folgende beide Headerincludes sind unter C++ veraltet:
#include <stdio.h> #include <iostream.h>Und gehören wie folgt ersetzt:
#include <cstdio> // Die c-Kompatibilitätsheader beginnen mit einem c #include <iostream> // Und allgemein: die Header aus der Standardbibliothek // werden ohne .h angegebenNach dem C++ Standard, gibt es auch kein "void main()", die main-Funktion liefert Grundsätzlich einen int zurück, auch wenn hier eine Besonderheit gilt: du benötigst kein return - in dem Fall wird die main-Funktion mit 0 als Rückgabewert verlassen.
Des weiteren liegen die Funktionen/Objekte der Standardbibliothek im Namensraum std. Daher musst du entweder mit "using namespace" arbeiten, oder Diese explizit mit einem vorangestellten "std::" beginnen. Grundsätzlich solltest du using namespace aber nicht in Headern, und nach allen includes schreiben:
Also entweder...
#include <iostream> ... int main() { ... std::cout << "Geben Sie ihre Koerpergoeße ein!\n"; ...oder
#include <iostream> ... using namespace std; int main() { ... cout << "Geben Sie ihre Koerpergoeße ein!\n"; ...Zudem rückst du wirklich bescheiden ein. Unabhängig davon welchen Einrückstil man verwendet, sollte man anhand der Einrückung den Scope erkennen. Eine recht verbreitete Variante davon, ist der folgende Einrückstil:
#include <iostream> int main () { int zahl; std::cout << "Gebe eine Zahl ein: "; std::cin >> zahl; if(zahl == 1) { std::cout << "Die Zahl beträgt 1."; } }Und zu guter Letzt: Kommentare dienen der Dokumentation. Wie aber beim Allem sind Kommentare nur sinnvoll, wenn man sie an Stellen setzt, die eine Beschreibung verdienen. Ansonsten machen Kommentare einen Code sogar schlechter Lesbar.
Verwende Kommentare an den Stellen, die eine Beschreibung nötig haben, nicht aber bei sofort ersichtlichen Dingen (Wie Beginn, Ende... Zumindest wenn man sauber einrückt, ist das eh ersichtlich).
Zudem kann man Code teilweise noch viel besser dokumentieren, wenn man sprechende Bezeichner verwendet, und nicht unnötig abkürzt. Deine Variable "Geschl" sagt ohne das man den Code analysieren muss, garnichts aus. Ist "Geschlecht" wirklich soviel mehr Schreibaufwand?
-
noobLolo schrieb:
und main() mußt natürlich auch noch zu machen und was zurück geben, also fehlt am ende eine
... return 0; }Nein, das return 0 ist im Falle der main-Funktion nicht zwingend nötig (Dies ist ein Sonderfall in C++).
-
Also ich muss ja zugeben, Teile des Programmes habe ich aus der Vorlage unseres C++ Lehrers in der Schule übernommen, evtl. ist der nicht mehr auf dem neusten Stand der Dinge.
Das Problem mit der Endklammer besteht aber weiter habe die Vorschläge durch probiert.
-
noobLolo schrieb:
und main() mußt natürlich auch noch zu machen und was zurück geben, also fehlt am ende eine
... return 0; }doppelte zeilen blöcke sind immer bäh also eine neue variable
double factor; if(Geschl == 'w'){ factor = 0.95; }else{//Geschl == 'w' factor = 0.9; } Ergebnis = (Groesse - 100.) * factor; ...Der untere Teil ist die Lösung!
Danke Jungs und Mädels!
-
Fires112 schrieb:
Also ich muss ja zugeben, Teile des Programmes habe ich aus der Vorlage unseres C++ Lehrers in der Schule übernommen, evtl. ist der nicht mehr auf dem neusten Stand der Dinge.
Nicht nur nicht mehr auf den neuesten Stand der Dinge.
1. "void main()" war noch nie gültiges C++, wenn gleich es von einigen Compilern akzeptiert wird. In der Regel gibt ein Compiler spätestens auf der höchsten Warnstufe hierzu einen Fehler oder mindestens eine Warnung aus.
2. Die Headerangaben der Standardbibliothekt in der Form "#include <iostream>" wurden in dem C++98 Standard übernommen... Wir schreiben das Jahr 2010 - das heißt 12 Jahre veraltet (Auch wenn ich so fair sein will, das es auch eine Weile gedauert hat bis die wesentlichen C++ Features in den Compilern umgesetzt waren, nur nicht 12 Jahre - und der nächste Standard wird hoffentlich spätestens 2012 verabschiedet sein).
Es mag auf den meisten Compilern funktionieren, doch würde ich mir wünschen, wenn auch Lehrer alle paar Jahre mal ihr wissen auf den Prüfstand setzen würden.
-
Fires112 schrieb:
Das Problem mit der Endklammer besteht aber weiter habe die Vorschläge durch probiert.
Sofern du sauber einrückst, ist es nahezu unmöglich eine Klammer zu übersehen.