• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd funkcji

Object Storage Arubacloud
0 głosów
185 wizyt
pytanie zadane 7 grudnia 2015 w C i C++ przez Plessio Obywatel (1,090 p.)

Witam, spotkałem się z pewnym problemem. Otóż stworzyłem funkcję do obliczania maksymalnej wartości w vectorze, która działa i analogicznie chciałem zrobić z minimum, niestety zawsze wyświetla wartość 0. Ktoś wie może o co chodzi?

 

int maximum(vector<int> VV)
{

	for (int i = 0; i < 5; i++)
	{
		if (VV[i] > max)
			max = VV[i];
	}
	cout << "Max: " << max << endl;
	return 0;
}

int minimum(vector<int> VV)
{

	for (int i = 0; i < 5; i++)
	{
		if (VV[i] < min)
			min = VV[i];
	}
	cout << "Min: " << min << endl;
	return 0;
}
vector<int> VV;
	VV.push_back(8);
	VV.push_back(7);
	VV.push_back(13);
	VV.push_back(19);
	VV.push_back(11);

	maximum(VV);
	minimum(VV);

 

3 odpowiedzi

+2 głosów
odpowiedź 7 grudnia 2015 przez Muminek Dyskutant (8,650 p.)
wybrane 7 grudnia 2015 przez Plessio
 
Najlepsza

Tak patrzę i patrzę a nigdzie nie widzę deklaracji min oraz max. Na pewno kompilator to przepuszcza?

komentarz 7 grudnia 2015 przez Plessio Obywatel (1,090 p.)
Globalnie zadeklarowane są.
komentarz 7 grudnia 2015 przez Muminek Dyskutant (8,650 p.)

Zmienna deklarowana jako globalna jako wartość przyjmuję 0, ty w vectorze masz takie liczby: 8, 7, 13, 19, 11. Żadna z tych liczb nie jest mniejsza niż wartość 0 zadeklarowanej globalnie min stą taki wynik. Powinienieś inaczej napisać tą funkcję.

komentarz 7 grudnia 2015 przez Plessio Obywatel (1,090 p.)
Poradziłem sobie, wystarczyło dodać w funkcji przed petlą min =19 (maksymalna wartość w vectorze podana w zadaniu) i wszystko działa elegancko. Dziękuję wszystkim za pomoc.
komentarz 8 grudnia 2015 przez Muminek Dyskutant (8,650 p.)
Zamiast maksymalnej wartośći przypisz mu pierwszą wartość z vectora w ciele funkcji, tak będzie przyzwoicie :)
0 głosów
odpowiedź 7 grudnia 2015 przez niezalogowany
Można wiedzieć w jaki sposób deklarujesz zmienne min i max? Obstawiam że błąd leży gdzieś tam, btw istnieją funkcje wbudowane w c++ do szukania minimum i maximum, podejrzewam że działają też nie najgorzej (chyba że robisz to dla siebie w celu rozwoju).
komentarz 7 grudnia 2015 przez Plessio Obywatel (1,090 p.)
Są zadeklarowane jako zmienne globalne.
komentarz 7 grudnia 2015 przez niezalogowany

Jakie wartości im przypisujesz na początku? Jeżeli wcale to błąd leży tutaj, bo na start otrzymują losowe* wartości

*śmieciowe dane, więc wartości mogą być dowolne

komentarz 7 grudnia 2015 przez Muminek Dyskutant (8,650 p.)

@Szymon, prawie masz rację. Fakt zwykle zmienne dostają śmieciowe dane, ale zmienne globalne oraz obiekty zdefinowane statycznie nie są przechowywane na stosie lecz w normalnej pamięci i nie posiadają śmieci lecz wartość 0 - tak wyczytałem z Symfonii C++ ;-)

0 głosów
odpowiedź 7 grudnia 2015 przez Damian11131 Stary wyjadacz (13,490 p.)
To pewnie nie jest przyczyna złego zachowania programu, ale ja bym zmienił te funkcje na procedury (czyli void), bo zwracanie wartości przez taką funkcję jest bezsensowne.
komentarz 7 grudnia 2015 przez Plessio Obywatel (1,090 p.)
Zmienienie na void nic nie zmienia.

Podobne pytania

0 głosów
2 odpowiedzi 232 wizyt
pytanie zadane 18 sierpnia 2019 w C i C++ przez Mavimix Dyskutant (8,390 p.)
0 głosów
2 odpowiedzi 342 wizyt
pytanie zadane 10 marca 2018 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
3 odpowiedzi 237 wizyt
pytanie zadane 25 sierpnia 2015 w C i C++ przez tomasztopolewski Początkujący (430 p.)

92,584 zapytań

141,433 odpowiedzi

319,668 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...