003
09.05.2017, 20:37 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat: |
irgendwo sind aber definitiv Fehler vorhanden...
|
allerdings.
Da wäre zunächst einmal der Schleifenkopf, also die Zeile mit for (...)
C++: |
for (i=1; i==k;) cout << "Die Summe der ersten" << k << "Kubikzahlen ist:" << sum (i*i*i);
|
wenn die Schleife den Wert i von 1 bis k hochzählen soll, fehlt dafür die Anweisung, genau dieses zu tun. Wie man das macht, kannst Du etwa hier im Abschnitt The for loop nachlesen. (Eine deutsche Anleitung weis ich gerade nicht.)
Zitat: |
Wie ich das mit der Summe mache, habe ich leider noch nicht so verstanden. Bei einer Recherche habe ich gesehen, dass man dafür "sum" wählen kann.
In Visual Studio wird mir hier allerdings eine Fehlermeldung angezeigt .
|
Ja, "sum" kann man die Variable nennen, das ist sinnvoll. Du hast da allerdings drei Fehler in Deiner Konstruktion: der Erste ist, dass Du die Variable sum am Anfang, d.h. vor der Schleife, nicht auf Null stetzt, also ihr den Wert Null (0) zuweist. Das sollte man in C++ aber immer tun, weil der Compiler es einem nicht abnimmt. Der Zweite ist, dass Du sum in der Schleife wie eine Funktion benutzt. Was Du da stehen hast, liest der Compiler als "Rufe die Funktion sum mit dem Parameter i*i*i auf". Da sum aber eine Variable ist, bekommt man eine Fehlermeldung. Und der dritte Fehler ist schlieslich die Abbruchbedingung: Eine for-Schleife wird solange durchlaufen, wie diese Bedingung wahr ist. So wie Du es da stehen hast, wird die Bedingung aber erst in ihrem letzten Durchgang wahr. Vorher trift die Bedingung nicht zu, was dazu führt, dass die Ausführung der Schleife abgebrochen wird. Die Lösung für diesen logischen Fehler liegt in der Formulierung der Abbruchbedingung. D.h. Du musst diese Abbruchbedingung anders formulieren. Dazu brauchst Du die Vergleichsoperatoren "grösser als" und/oder "kleiner als".
Zitat: |
Am Anfang habe ich jeweils für i,k und sum die Definition vorgenommen. Dies ist doch notwendig oder irre ich mich da?
|
Nein, da irrst Du nicht. Aber die Definitionen besagen nur, dass es Variablen mit diesen Namen gibt, und dass sie vom Typ "int" sein sollen und Speicherplatz für sie bereit gestellt wird. Es werden aber keinerlei Werte rein geschrieben. Es ist aber zumindest für die Variable "sum" notwendig, diese vor der Schleife mit dem Wert Null zu initialisieren, d.h. ihr den Wert Null zu geben, was man auch als "zuzuweisen" bezeichnet. Wenn man das nicht tut, arbeitet man mit einem nicht definierten Wert, der an jener Stelle im Speicher liegt, wo der Compiler die Variable sum platziert hat.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |