Hogyan lehet egy N elemű tömb szórását kiszámítani (C++ -ban)?
Matematikai műveleteket tudsz végezni C++-ban?
Be tudod járni a tömböt?
Tudod mi a szórás?
Ezek kellenek hozzá. Mi nem megy? :)
Nem tudom erre irányul-e a kérdés, de ha igen:
mivel az "átlagtól való átlagos eltérés"-ről beszélünk, egy naiv megoldásban nyilván kétszer kell iterálni a tömböt, egyből nem fog menni (előbb tudni kell az átlagot, ugye..)
Például így:
template<typename T, std::size_t N>
constexpr auto ArrLength(T(&)[N])
{
return N;
}
template<typename Iter>
auto Szoras(Iter first, Iter last)
{
auto elemekSzama = std::distance(first, last);
auto atlag = std::accumulate(first, last, 0.0) / elemekSzama;
auto eredmeny = 0.0;
for (; first != last; ++first)
{
eredmeny += std::pow(*first - atlag, 2);
}
return std::sqrt(eredmeny / elemekSzama);
}
int main()
{
std::vector<int> v = {1,1,1,1,2,2,2,3,3};
int arr[] = {1,1,1,1,2,2,2,3,3};
std::cout << "Szoras: " << Szoras(v.cbegin(), v.cend()) << '\n';
std::cout << "Szoras: " << Szoras(arr, arr + ArrLength(arr)) << '\n';
}
# 4/4 Időpont ma 22:40
És a lambda kifejezések hol maradnak? :-)
Elnézést, máris javítom.
auto iAmHere = [](auto&& container) { return Szoras(std::cbegin(container), std::cend(container)); };
std::vector<int> v = {1,1,1,1,2,2,2,3,3};
int arr[] = {1,1,1,1,2,2,2,3,3};
std::cout << "Szoras: " << iAmHere(v) << '\n';
std::cout << "Szoras: " << iAmHere(arr) << '\n';
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!