Wie kann ich in C++ herausfinden ob die eingegebene Zahl gerade/ungerade ist?
Hi Leute! Ich benötige Hilfe beim programmieren mit C++! (;
Also die Aufgabe, die ich zu lösen habe lautet: Es sollen ganze Zahlen in ein Feld eingelesen werden bis die Zahl 0 eingegeben wird. Eine "WERTFUNKTION" liefert an das Hauptprogramm die Anzahl der ungeraden und die Anzahl der geraden Zahlen zurück. Beide Werte werden im Hauptprogramm ausgegeben.
aus unerklärlichen Gründen schaffe ich es nicht, dies richtig zu programmieren (: Würde mich über Screenshots oder hilfreiche Erklärungen sehr freuen . Danke im Vorraus !
3 Antworten
weiß jetzt grade nich mehr so genau, wie die syntax con c++ aussieht aber so oder so ähnlich müsste es gehen:
if (zahl % 2 == 0) {
// hier steht alles das, was passieren soll, wenn die aussage wahr ist
}
Dafür ist wohl das Zauberwort Modulo. Damit kannst du den Rest einer Division ermitteln. In C++ ist der Operator dafür "%". Wenn du nun den Rest einer Division mit x % 2 ermittelst, erfährst du, ob es sich um eine gerade Zahl handelt. Denn wenn der Rest 0 ist, ist x eine Gerade. Alle Zahlen, die sich ohne Rest durch zwei teilen lassen, sind gerade.
Bei Integern (Ganzen Zahlen, also etwa 'int x') kannst du auch einfach mittels einer bitweisen Und-Verknüpfung abfragen, ob das Einer-Bit gesetzt ist:
if (x & 1) {
// x ist ungerade
} else {
// x ist gerade
}
Das dürfte um ein Vielfaches schneller sein als eine Modulo-Operation. Geht aber so nur für Integers. Falls dein Wert zwar eine ganze Zahl, aber in einer Fließkommavariablen abgelegt ist, musst du auf Integer casten. Für (wirklich) Reelle Zahlen macht ein Prüfen auf gerade/ungerade sowieso keinen Sinn.