Ungerade Zahlen und gerade Zahlen sortieren



  • Hallo ich folgendes array:

    int num[4] = {1,3,2,8};

    Die Ausgabe soll so aussehen:

    Ungerade Zahlen: 13 ( oder 31 die reihenfolge ist egal )
    Gerade Zahlen: 28 ( oder 28 die reihenfolge ist egal )

    Nun hab ich aber 0 ahnung wie ich prüfen kann ob die Zahl gerade ist oder ungerade.

    Wenn sich die Zahl z.b. durch 2 Teilen lässt dann ist diese ja gerade ansonsten ungerade aber wie soll ich das dem Programm beibringen o_O



  • rnd schrieb:

    Hallo ich folgendes array:

    int num[4] = {1,3,2,8};

    Die Ausgabe soll so aussehen:

    Ungerade Zahlen: 13 ( oder 31 die reihenfolge ist egal )
    Gerade Zahlen: 28 ( oder 28 die reihenfolge ist egal )

    Mach dein Array einfach in der Mitte durch. 💡



  • cout<<"ugz";
    for(int i=0;i<anz;++i)
       if(a[i]%2==1)
         cout<<a[i];
    cout<<"gz";
    for(int i=0;i<anz;++i)
       if(a[i]%2==0)
         cout<<a[i];
    


  • Achso geht das ist ja ganz einfach :>

    ty



  • Wenn du umsortieren willst, kannst du std::Algorithmen verwenden.

    int num[4] = {1, 3, 2, 8};
    int* const even = std::remove_if(num, num + 4, is_even);
    

    even zeigt dann auf die erste gerade Zahl im Array. Alle Zahlen davor sind ungerade, alle danach gerade. std::remove_if verschiebt alle Elemente, bei denen das Prädikat (hier: is_even) true zurückgibt, ans Ende des Containers.

    Gruß
    Don06



  • Don06 schrieb:

    std::remove_if verschiebt alle Elemente, bei denen das Prädikat (hier: is_even) true zurückgibt, ans Ende des Containers.

    Nein, die anderen werden nach vorn kopiert. Der hintere Teil bleibt, wie er ist. Wenn man beide Teile braucht, ist std::partition besser.


Anmelden zum Antworten