Problem z wypisaniem sredniej

Problem z wypisaniem sredniej
Wayne
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 3 lata
  • Postów:31
0

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

Kopiuj
#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;
}
szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:6 dni
  • Lokalizacja:Kraków
  • Postów:1694
3

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

Wayne
Nie rozumiem, wskk wskazuje na koniec tablicy?
szweszwe
A jak go przesuwasz w pętli for to gdzie wskazuje na końcu?
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
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.


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 3x, ostatnio: AnyKtokolwiek
Wayne
1. Ja też niezbyt taki sposób lubie, aczkolwiek nie wykorzystuje go na serio, a jedynie w ramach jakiś ćwiczeń związanych ze wskaźnikami. 2. ???
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 19 godzin
  • Lokalizacja:Szczecin
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.


Spine
  • Rejestracja:około 22 lata
  • Ostatnio:37 minut
  • Postów:6659
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;

🕹️⌨️🖥️🖱️🎮
edytowany 3x, ostatnio: Spine
kq
To jest ciekawe, bo gdyby suma była double, to takie rzutowanie by było zbędne. Ale ogółem się zgadzam - jak nie masz jasnych przesłanek aby robić inaczej, używaj double by default.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.