008
31.05.2007, 14:29 Uhr
countless
|
ok... also dann noch mal: Du willst ein Programm schreiben, das die ersten n ungeraden Zahlen addiert (angefangen bei 1), wobei n vom Benutzer wählbar sein soll. Richtig?
Da gibt es jetzt (wie immer) verschiedene Möglichkeiten das zu realisieren. Zum Beispiel eben über Schleifen. Zum Beispiel so:
C++: |
sum=0; for(i=0;i<n;i++){ ungeradeZahl = 2*i+1; sum += ungeradeZahl; }
|
Ablauf: i ungeradeZahl sum 0 1 1 1 3 4 2 5 9 3 7 16 4 9 25
Die Variable i entspricht hier also der "Nummer" der ungeraden Zahl wenn man sie der Größe nach ordnet (i=0 ist die erste ungerade Zahl, i=1 die zweite usw.).
Eine andere Möglichkeit ist:
C++: |
sum=0; for(i=1;i<n;i+=2){ sum += i; }
|
Ablauf: i sum 1 1 3 4 5 9 7 16 9 25 Im Gegensatz zu oben entspricht hier i nicht dem Index der ungeraden Zahl, sondern der ungeraden Zahl selbst, die dann einfach hinzuaddiert wird. Allerdings hat sich hier auch die Bedeutung von n, geändert. Während in der ersten Möglichkeit oben n die Anzahl der ungeraden Zahlen war die addiert werden, sollen hier alle ungeraden Zahlen im Intervall [0,n) addiert werden.
Eine dritte Möglichkeit ist folgende:
C++: |
for(i=0;i<n;i++){ if(i%2!=0) //ueberpruefe ob i ungerade, wenn ja dann addiere sum += i; }
|
Ablauf: i sum 0 0 1 1 2 1 <-- 2%2==0, daher wird hier nix addiert 3 4 4 4 <-- 4%2==0, daher wird hier nix addiert 5 9 Hier hat n die gleiche Bedeutung wie in dem Bsp darüber.
Nun könnte man aber letztendlich auf diese ganzen Schleifen verzichten, denn für die Summe der ersten n ungeraden Zahlen gibt es einen mathematischen Zusammenhang. Schau dir mal die Summen oben an (1,4,9,16,25,..). Fällt dir was auf? Das sind alles Quadratzahlen (1^2,2^2,3^2,4^2,5^2). Die Summe der ersten n ungeraden Zahlen ist nämlich gerade n^2. Das vereinfacht dein Problem natürlich ungemein, es sei denn du willst/musst das ganze unbedingt über Schleifen lösen. Hoffe ich hab mich jetzt nirgends verschrieben und hoffe, jetzt ist dir das ganze etwas klarer. -- "I'm here..... yeah,.. I'm here.......... it's not that big of a deal......... i won't have to return to that shitty world.... this is....... not that bad." .hack//sign (tsukasa) |