Keresés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz Dave-11 #2178 üzenetére

    Ha szabad néhány dolgot megjegyeznem (konstruktív célzattal):
    * a magyar és az angol elnevezések keverése nem szép dolog.
    * return után nem kell else
    * ha már c++ akkor van benne sort gyárilag
    * ha nem használod a sort-ot akkor legalább függvénybe illene kitenni a saját implementációt
    * a négyzetgyökre még meg kell nézni az oszthatóságot, vagyis <= kell
    * nem kell float-ra castolni az sqrt hívásban
    * a 2-t nem kell speciálisan kezelni
    * nem kell új vektor

    Az én megoldásom így néz ki (bele szabad kötni):

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

    static bool isPrime(int a)
    {
    if (a <= 1) return false;
    for(int i = 2; i <= sqrt(a); i++)
    {
    if ((a % i) == 0) return false;
    }
    return true;
    }

    static void problem5(vector<int>& v)
    {
    vector<int>::iterator boundary = partition(v.begin(), v.end(), isPrime);
    sort(v.begin(), boundary, less<int>());
    sort(boundary, v.end(), greater<int>());
    }

    int main()
    {
    int numbers[] = { 2, 3, 1, 6, 7, 4, 5, 9, 8 };
    vector<int> v(numbers, numbers + sizeof(numbers) / sizeof(numbers[0]));
    problem5(v);
    for(unsigned i = 0; i < v.size(); i += 1)
    {
    cout << v[i] << ' ';
    }
    cout << endl;
    return 0;
    }

Új hozzászólás Aktív témák