błąd w funkcji min

0

Witam,

Mógłby mi ktoś powiedzieć dlaczego funkcja min zwraca mi jakąs dziwna liczbę -8589....? Funkcja max działa dobrze a nie widzę żadnej różnicy.

#include <iostream>
#include <functional>
#include <algorithm>
#include <time.h>
#include <cstdlib>
using namespace std;

void sortuj(int *tabek)
{

int minimum, maximum;
//cout << max(3,2) << endl << endl;
int *w = tabek;
int *k = tabek;

for (int i = 0; i < 10; i++)
{

	minimum = min(minimum, *w);
	maximum = max(maximum, *w);
	w++;
}
cout << minimum << endl << maximum << endl;

cout << endl;

sort(tabek, tabek + 10);
for (int i = 0; i < 10; i++)
{

	cout << *k << endl;
	k++;
}
cout << endl;

}

void losuj(int *tablica)
{
int *w = tablica;
int *k = tablica;
for (int i = 0; i < 10; i++)
{
*w = rand() % 10 + 1;
w++;

}
for (int i = 0; i < 10; i++)
{

	cout << *k << endl;
	k++;
}
cout << endl;
sortuj(tablica);

}

int main()

{
int tab[10];

srand(time(0));

losuj(tab);



system("pause");
return 0;

}

2

Zmienne minimum i maximum ma początkowe wartości przypadkowe.

1

Tak jak @kaczus napisał. Oprócz tego istnieje funkcja, która szuka minimum w podanym zakresie:

#include <iostream>
#include <algorithm>
using namespace std;

int main() 
{
	int tab[] = { 1, 3, -13, 49, -2 };
	auto mini = min_element(begin(tab), end(tab));
	cout << *mini << endl;
	
	return 0;
}
0

Faktycznie tylko jak ustawie zero poczatkowa wartosc to minimum wtedy zawsze bedzie 0 ;/

2

Ustaw sobie tabek[0]

1

Ustaw na wartości pierwszych elementów tablicy zarówno minimum jak i maximum. To, że działa jedno poprawnie, to czysty przypadek.

0

dziala, dzieki!

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