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.