Średnia z liczb po odrzuceniu dwóch najmniejszych wartości

0

Witam. Nie mogę doszukać się błędu w tak prostym zadaniu. Czy jest ktoś w stanie wskazać co jest nie tak? Treść: Napisz program wczytujący 4 liczby rzeczywiste i wyznaczający średnią
arytmetyczną z liczb pozostałych po odrzuceniu dwóch najmniejszych wartości.

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <algorithm>

using namespace std;

int main()
{
	const int ROZMIAR = 4;
	float tab[ROZMIAR], *wsk;
	for (wsk = tab; wsk < tab + ROZMIAR; wsk++)
	{
		cout << "Podaj kolejny znak: ";
		*wsk = _getch();
	}
	wsk = tab;
	sort(wsk, wsk + ROZMIAR);
	cout << "Srednia z pozostalych liczb wynosi: " << (wsk[ROZMIAR - 1] + wsk[ROZMIAR - 2]) / (ROZMIAR - 2) << endl;

	cin.ignore(INT_MAX, '\n');
	cin.get();
} 
1

Od kiedy to _getch zwraca liczbę rzeczywistą?
Btw, skorzystaj normalnie z vectora, a nie bawisz się we wskaźniki.

1
*wsk = _getch();

Od kiedy wczytanie liczby tak wygląda?

Po drugie, zapomnij o wskaźnikach. Nie są dla Ciebie na tym etapie. To czego potrzebujesz to:

for (int i = 0; i < ROZMIAR; ++i)
{
    cout << "Podaj kolejny znak: ";
    cin >> tab[i];
}
0
  1. To: *wsk = _getch(); - wczytuje kod przycisku, nie liczbę.
  2. dopóki nie ogarniasz wskaźników nie posługuj się nimi, po: wsk = tab; indeksujesz: wsk[ROZMIAR - 1]
  3. Nie używaj i++ tam gdzie można użyć ++i, ten durny nawyk się zemści.
  4. Jeżeli potrzebujesz tych dwóch ostatnich wierszy to zmień IDE na jakiś z tego tysiąclecia, lub poszukaj w ustawieniach.
  5. Nie zapominaj o return
0

Dzięki, już doszedłem do tego i zmieniłem _getch() na cin.
Używam Visual Studio 2013, konsola mi się nie zamyka bez dwóch ostatnich wierszy, ale czy nie powinno się tak robić na końcu programu? Przynajmniej mnie tak uczą na wykładach.
I co jest nie tak w moim nadaniu wartości elementom tablicy za pomocą wskaźnika?

0
Dudi879 napisał(a):

ale czy nie powinno się tak robić na końcu programu?
Nie. Na końcu powinno być tylko return 0;

I co jest nie tak w moim nadaniu wartości elementom tablicy za pomocą wskaźnika?
Nie rozumiesz i nie potrzebujesz wskaźników, więc ich nie używaj. Oszczędzisz sobie wielu błędów.

0

Wiem, że powinno być jeszcze return, chodziło mi o dwie wcześniejsze isntrukcje...
Podany sposób nadania wartości elementom tablicy został mi podany na ćwiczeniach i rozumiem go w 100%, więc nie wiem o co chodzi. Program dzięki temu szybciej działa.

0

program dzięki temu szybciej działa.

Gdybyś wczytywał jakieś 50 milionów liczb to może byłaby różnica...
http://c2.com/cgi/wiki?PrematureOptimization

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