#1 Martin
Správně předáváš funkci ukazatel na int a velikost pole, správně ti funkce vrací int, ale zbytek funkce je úplně špatně. Na scopu funkce je nesmysl si vytvářet pole data. To pole máš mít vytvořené třeba v mainu
int pole[VELIKOST] = { jednotlive, prvky, pole };
a akorát ho své funkci předáš
nejmensiKladnaHodnota(pole, VELIKOST);
Implementace funkce pro nalezení nejmenší hodnoty v poli může vypadat například takhle:
/* nejmensi_kladna_hodnota
* @return int: -1 - v poli není ani jedno kladné číslo */
int nejmensi_kladna_hodnota(int *pole, int velikost)
{
int nejmensi = -1;
/* inicializace proměnné nejmenší na první kladné číslo v poli */
for (int i = 0; i < velikost; i++)
{
if (*(pole + i) > 0)
{
nejmensi = *(pole + i);
break;
}
}
/* samotný kód pro nalezení nejmenší hodnoty v poli */
if (nejmensi != -1)
{
for (int i = 0; i < velikost; i++)
{
if (*(pole + i) > 0)
{
int docasna = *(pole + i);
if (docasna < nejmensi)
nejmensi = docasna;
}
}
}
return nejmensi;
}
a main poté následovně:
int main()
{
int pole[] = { 13, 7, -5, 10, -8, 0, 3, -7 };
int velikost = sizeof(pole) / sizeof(int);
std::cout << std::endl;
std::cout << "Nejmensi hodnota: " << nejmensi_kladna_hodnota(pole, velikost) << std::endl;
std::cout << std::endl;
return 0;
}