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!


Log in to reply