Geometrische Reihen *Grübel*
-
Man könnte jetzt auch sich an Mathe in der 8. Klasse (wars mein ich, bin nemmer ganz sicher) erinnern und sich erinnern, dass
1+1/2+1/4+...+1/2[h]n[/h] = 2 - 1/2[h]n[/h] ist...
oder in Code
x = 2 - std::pow(0.5, n);
/edit: btw, ums genau zu nehmen ist die geometrische Reihe der Grenzwert der Summe mit n -> ∞
Aber wenns schon in der Aufgabenstellung so salopp genahndhabt wird scheint das ja nicht weiter wichtig zu sein.
-
Also ich dachte die Formel für eine geometrische Reihe wäre das hier:
sn = a1 * (1-q^(n+1))/1-q
q ist der konstante Faktor(ungleich 1)
a1 -> Startwert
(http://de.wikipedia.org/wiki/Geometrische_Reihe)In deinem Fall müsste q=1/2 sein und a1 (manchmal auch als a0 bezeichnet)müsste 1 sein.
Die Summenformel, die von Paul Manns vorgeschlagen wurde, kann man ,glaube ich, nur bei arithmetischen Reihen verwenden.
(http://de.wikipedia.org/wiki/Arithmetische_Reihe)
-
Ach man.. ich probier das jetzt mit den Schleifen, mal sehen wie weit ich komme, ich meld mich abends nochmal, wie weit ich bin ..
-
eins nach unten bitte
-
So hab mir doch mal die mühe gemacht und nen Flussdiagramm hereingestellt
http://i10.photobucket.com/albums/a110/Eisi_86/Flussdiagramm.jpg
dementsprechend hab ich neuprogrammiert.. abebr weiter komm ich nicht!
#include <iostream>
#include <math.h>
using namespace std;
int main(void)
{
int zaehler, n=0;
double teil_reihe, summe;while(n<=1)
{ cout << "Geben Sie bitte eine positive ganze Zahl groesser gleich 1 ein!\n\n";
cin >> n;
}
zaehler=1;
summe=1;
teil_reihe=1;while(zaehler<=1)
{ teil_reihe=teil_reihe/2;
summe=summe+teil_reihe;
zaehler=zaehler+1;
}cout << "\n\nDer Wert der geometrischen Reihe beträgt:"<< summe << "\n\n";
return 0;
}
-
zaehler=1; while(zaehler<=1) { ... zaehler=zaehler+1; }
den Teil würde ich nochmal überdenken.
-
hmm ich komm nicht drauf.. -.-
-
In deiner zweiten
while
-Schleife deines Codes hast duwhile(zaehler<=1)
als Bedingung geschrieben, allerdings heißt es an dieser Stelle in deinem Flußdiagramm:
zaehler <= n?
-
zudem kannst du
zähler = zähler +1;
durch
zähler++;
bei int variable -1 dementsprechend
variable--
Ich würde es an deiner Stelle mit der Summenformel versuchen
int n; .... cin >> n; ... float summe= 1 * (0,5)^n; //oder double summe = 1 .....
bin mir relativ sicher (habe mathe orientierungskurs auf gymnasium
)
-
sorry ich kriegs nicht gebacken...ich bin immer noch nicht weiter und komme natürlich nicht auf die 1.9 .. . . .
Ich versteh das langsam garnichts mehr.
Ich versteh zwar das Prinzip das n immer um 1 steigen muss (n+1) und bei 5 aufhören muss aber wie ich dit hier in c++ umsetzen soll weiß ich nciht
-
juhuuu hab den Fehler gefunden
#include <iostream>
#include <math.h>
using namespace std;
int main(void)
{
int zaehler, n=0;
double teil_reihe, summe;while(n<=1)
{
cout << "Geben Sie bitte eine positive ganze Zahl groesser gleich 1 ein!\n\n";
cin >> n;zaehler=1;
summe=1;
teil_reihe=1;while(zaehler<=n) <<<< hier stand vorher While(zaehler<=1)..einfach nur n statt eins lool
{
teil_reihe=teil_reihe/2;
summe=summe+teil_reihe;
zaehler=zaehler+1;
}
}cout << "\n\nDer Wert der geometrischen Reihe beträgt:"<< summe << "\n\n";
return 0;
}
-
halo schrieb:
Ich würde es an deiner Stelle mit der Summenformel versuchen
int n; .... cin >> n; ... float summe= 1 * (0,5)^n; //oder double summe = 1 .....
bin mir relativ sicher (habe mathe orientierungskurs auf gymnasium
)
Mal von der Summenformel abgesehen:
Es sollte
double summe = 1* pow(0.5, n);
heißen, denn erstens macht das ^ nicht das, was du willst (potenzieren), sondern bitweises XOR und zweitens benutzt du in 0,5 den Kommaoperator, so dass 0 und 5 ausgewertet werden und dann die 5 zurückgegeben wird.
Felix
-
nails extension
-
nails extension