Gauß'sche Summenformel
-
Ich bin's wieder mit einem neuen Problem. Ich habe mich mit der Gauß'schen Summenformel befasst und beschlossen, diese in ein Programm umzuwandeln (ja, eventuell einfach überflüssig^^).
#include "stdafx.h" int main() { int n; int summe; SetConsoleTitle(TEXT("Gauss'sche Summenformel")); printf("Geben Sie n an: "); scanf("%i", &n); summe=((1/2)*n)*(n+1); if(summe==0) { MessageBox(NULL, TEXT("Da hat was nicht gestimmt"), TEXT("Fehler"), MB_ICONWARNING|MB_OK); return 0; } printf("Die Summe der Reihe ist %i\n", summe); system("PAUSE"); return 0; }
Doch egal welches 'n' man eingibt, es kommt immer die Fehlermeldung, also bleibt die Summe immer Null. Wie kann das sein?
-
3P!CF41L schrieb:
Doch egal welches 'n' man eingibt, es kommt immer die Fehlermeldung, also bleibt die Summe immer Null. Wie kann das sein?
Es liegt an
1/2
. 1 hat den Typ int, 2 hat den Typ int, und in C++ hat das Ergebnis dann auch den Typ int und nicht etwa double oder float. Das heißt: 1/2 ist 0 (eventuell theoretisch anfallende Nachkommastellen werden abgeschnitten).Du brauchst aber nicht unbedingt alles auf Fließkomma umzustellen, es reicht die Division nach hinten zu schieben:
summe = n*(n+1)/2;
-
Vielen Dank. Hat alles funktioniert!