Problem z wypisaniem sredniej

0

To co w temacie funkcja w programie wypisuje jakieś dziwne wyniki i nie wiem jak to rozwiązać.
Kod:

#include <iostream>

using namespace std;
double srednia(float* tab, int ile)
{
	float suma = 0;
	for (int i = 0; i < ile; i++)
	{
		suma += *tab;
		tab++;
		
	}

	return suma / ile;
}

int main()
{
	int ile;
	cout << "Ile?: ";
	cin >> ile;
	float* wsk = new float[ile];
	float* wskk = wsk;
	for (int i = 0; i < ile; i++)
	{
		*wskk = i;
		cout << *wskk << endl;
		wskk++;
	}

	cout << srednia(wskk, ile);
	return 0;
}
3

Zrobiłeś sobie wskaźnik na początek wsk to go przekaż do funkcji srednia a nie ten który wskazuje na koniec.

2

1 .Jestem przeciwnikiem takiego pseudohakerskiego inkrementowania wskaźnika bez ważnych powodów.
Notacja tablicowa jest tutaj o wiele czytelniejsza , zwłaszcza, że jest gotowa pętla a indeksem.

2

https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

Arytmetykę wskaźników zostaw tam gdzie powinna zostać - w C.

1

Dorzucę jeszcze:

  • powinieneś ile rzutować na double, tam gdzie obliczasz średnią (dzielisz przez ile);
  • tablica, z której wyciągasz średnią, najlepiej gdyby była typu double, tak jak średnia;

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