Brauche Hilfe bei Schleife
-
Ich empfehle dir ein Grundlagenbuch, bevor du mit solchen "schweren" Aufgaben anfängst.
-
Das ist ne aufgabe die wir als Hausaufgabe von der Schule aufhaben.
#include <stdio.h> main() { int a=1, b=2, c; printf("\n\tProgramm zur Berechnung von Wurzel 2"); for(c=(a+b)/2; c*c>2; c=c*c); { b=c; } printf("\n\n"); printf("\tWurzel 2= %i",b); }Ich hab mir das in etwa so gedacht, nur leider weis ich net, wie ich das jetzt mit der For schleife machen soll.
Wir haben gerade erst damit angefangen.
-
Sehr "kreative" Formatierung.
Welchen Sinn haben die geschweiften Klammern nach der for-Schleife?
-
OK, dann fang nochmal von vorne an:
- Erste Lektion: Wie funktionieren Schleifen?
- Zweite Lektion: Wie funktioniert eine Verzweigung? (wenn/dann/sonst)
-
Bei der Aufgabe macht eine for-schleife nur in sofern sinn, dass man die Anzahl der der Durchgänge begrenzen kann. So wie es oben angegeben ist, ist es ja eine Endlosschleife. Du kannst es also nicht endlos oft machen, sondern nur eine bestimmte Anzahl von durchgängen mit der for-schleife machen.
Das "4) weiter bei 1." macht aber sowieso keinen Sinn, weil dann ja immer das gleiche gerechnet wird.
-
Ja das ist leider so eine scheiss aufgabe aus der schule die sich unser Lehrer ausgedacht hat, umm uns schüler zu ärgern.
-
Nero91 schrieb:
- a=1; b=2
Der Teil kommt vor die Schleife, um die beteiligten Variablen zu initialisieren
- c=(a+b)/2
- Wenn c*c>2 dann b=c
sonst a=c
Der Teil kommt als Anweisung in den Schleifenrumpf
- weiter bei 1.
Das sollte wohl eher "weiter bei 2." heißen - und stellt den Schleifenkopf dar. Außerdem solltest du dir noch ein Abbruchkriterium überlegen, mit dem du die Schleife verlassen kannst.
(PS: Für die Aufgabe würde ich eher eine do-while-Schleife verwenden)
-
oehm, int als Datentyp ist vielleicht nicht ratsam, nimm lieber double a=1.0, b=2.0, c=0.0
-
evt. so?=
#include <iostream> double radical(double value, std::size_t approx) { if (value == 0.0 || value == 1.0) return value; double a = 1.0, b = 2.0; for (; approx > 0; --approx) { double c = ((a + b) / 2.0); if ((c * c) > 2.0) b = c; else a = c; } return a; } int main() { std::cout << "Wuzel² Berechnung V0.1\n" << "Zahl: " << std::flush; double value = 0.0; std::cin >> value; std::cout << "Annäherungen: " << std::flush; std::size_t approx = 1; std::cin >> approx; std::cout << radical(value, approx) << std::endl; }... ist allerdings nen komischer Algo ^^
-
achja ... power sollt ihr dann bestimmt nachher auch schreiben

namespace math { template <typename T> T power(T const& value, std::size_t expo) { return value * power<T>(value, expo - 1); } };... ist nicht die beste Implementierung ... aber sollte gehen
