Program - sumowanie w C, początek

0

Cześć
chciałam napisać program sumujący tyle liczb, ile podanych zostało z klawiatury. Niestety, przy obliczaniu sumy końcowej coś poszło nie tak i nie wychodzi mi poprawny wynik. Wydaje mi się, że będzie to związane z linijką kolejna=kolejna +i - po prostu nie wiem, jak zsumować liczbę wprowadzoną z klawiatury i je poprzedniczki. Ktoś może wskazać błąd kodu?

#include <stdio.h>


int main ()
{
	int ilosc, kolejna, suma;
	printf("Wprowadz ilosc liczb:");
	scanf("%d", &ilosc);
	for (int i = 1; i<ilosc+1; i++)
	{
		printf("Wprowadz liczbe:");
		scanf(" %d", &kolejna);
		kolejna = kolejna +i;	
	}
	suma = kolejna;
	printf ("suma = %d", suma);
	
	return 0;

}
4

Słusznie podejrzewasz, gdzie jest błąd. A jak sumować — trzymaj sobie tę zmienną suma, ustaw ją na początku na zero, a potem tylko zwiększaj ją o kolejne liczby: suma += kolejna.

2

Tak zrobiłam i udało się :) Jeszcze tylko gdybyś mógł mi wytłumaczyć, dlaczego sumę zeruje się do 0, a nie do innej liczby, np.2 czy 1?

Bo zero jest elementem naturalnym neutralnym dodawania. Innymi słowy, jak zaczniesz od niego i będziesz go zwiększać o kolejne liczby, to otrzymasz:
\Sigma = 0 + kolejna_1 + kolejna_2 + kolejna_3 + \ldots + kolejna_n,
czyli sumę n kolejnych liczb, a jakbyś zaczęła od jedynki czy dwójki, to by tam na początku wystąpiła jedynka czy dwójka, i zamiast tej sumy miałabyś sumę powiększoną o jeden czy dwa. A tak, masz sumę „powiększoną” o zero, czyli nie powiększoną wcale.

Analogicznie, jakby ktoś kiedyś od Ciebie chciał iloczyn tych kolejnych liczb, to najłatwiej byłoby startować od jedynki — bo mnożenie przez jeden nic nie zmienia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1