Błędny zwracany wynik przez funkcję – co jest tego powodem?

0

Drodzy programiści C, czy ktoś mi uświadomi dlaczego wypisuje mi dwa różne wyniki?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define MAX 1000

void Wyswietl(const float * tablica, int rozmiar)
{
	float suma =  Suma(tablica, rozmiar);
	printf("SumaPoza: %f\n", suma);
}

float Suma(const float * tablica, int rozmiar)
{
	float suma = 0;

	for (size_t i = 0; i < rozmiar; i++)
		suma += tablica[i];

	printf("SumaWFunkcji: %f\n", suma);
	return suma;
}

int main()
{
	float tablica[MAX];
	float wprowadzona;
	int index = 0;

	while (1)
	{
		scanf("%f", &wprowadzona);

		if (wprowadzona != 0)
		{
			tablica[index] = wprowadzona;
			index++;
		}
		else
			break;
	}

	Wyswietl(tablica, index);

	system("pause");
	return 0;
}
Input: 1 2 3 0
output:  SumaWFunkcji: 6.0
             SumaPoza:       23.0

skąd te 23? (Srodowisko: VS 2017)

PS. Ja wiem, że nazewnictwo po polsku i zgodnie z zasadami SOLID to nie jest, ale to tylko prosty przyklad.

1

Na pewno pokazujesz faktyczny kod, który testujesz? Obecnie się on nie kompiluje, a po dokonaniu niezbędnych zmian "u mnie działa": https://wandbox.org/permlink/n5hIKXABauIDJJEu

0

no tak, deklaracja funkcji którą załączyłeś załatwiła sprawę.
Myślę, że problemem jest ta linijka:

#define _CRT_SECURE_NO_WARNINGS

załączyłem, ją aby kompilator nie czepiał się, gdy wykorzystuję scanf i printf, ale widać resztę ostrzeżeń też olewa. Dzięki za pomoc siedziałem nad tym z godzinę...

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