Unterscheidung gerader und ungerader Zahlen in C

Hallo,
ich soll ein Programm schreiben in dem ausgegeben wird ob es sich bei einer Variablen um eine gerade oder eine ungerade Zahl handelt. Ich darf aber nur die vier Grundrechenarten verwenden, also kein Differentialrest bzw. modulo2.
Ideen?

Hallo,
bin leider kein Informatiker, deswegen kann ich dir da schlecht weiterhelfen. Meine Idee wäre einfach durch 2 zu teilen und dann die Anzahl der Nachkommastellen zu überprüfen, aber ich vermute genau das meintest du bereits mit Differentialrest? Ansonsten vielleicht die geteilte Zahl in einen Datentyp ohne Nachkommastellen umwandeln, wiederum mit 2 multiplizieren und schauen ob die Zahlen noch übereinstimmen.

Viel Erfolg noch

ich soll ein Programm schreiben in dem ausgegeben wird ob es
sich bei einer Variablen um eine gerade oder eine ungerade
Zahl handelt. Ich darf aber nur die vier Grundrechenarten
verwenden, also kein Differentialrest bzw. modulo2.
Ideen?

wer stellt solche Aufgaben :wink:

Wie wäre es dann mit Ganzzahldivision durch 2 bspw. durch Bitshift >> oder

Hallo,
deine antwort hat mir sehr geholfen! Mein Programm funktioniert jetzt! Vielen Dank!
^^

Hi BlaBlaBlubber,

ich würde die Funktion so machen: (ungrade 0, grade 1)

int istUngrade( int n) {
int result = 0;
int help = (int) n/2;
help = 2*help;
if( help == n)
result = 1;
return result;
}

Division durch 2 -> Ergebnis davon mit 2 multiplizieren
-> Ist gleich Zahl n => n grade!

MfG,
Benny1984

Das mit dem C verstehe ich gerade nicht… Komplexe Zahlen?
Bei Natürlichen Zahlen bzw. ganze Zahlen und
wenn es ein Computerprogramm sein soll, dann kannst du doch sicherlich einen Algorithmus "2 mal n"programmieren, der bei n=0 startet und endet mit n>=prüfzahl/2.
Also bei jedem Durchgang durch die Routine, wenn der nzähler sich um eins erhöht, lässt du prüfen ob die prüfzahl erreicht ist, wenn nicht wird der zähler um eins erhöht, wenn prüfzahl, dann ist die zahl gerade, wenn größer als prüfzahl, dann ist die zahl ungerade.

wenn das nicht dein Problem ist, dann kann ich dir auch nicht helfen, denn ich bin kein programmierer

Hallo BlaBlaBlubber,

überleg doch mal, was mit einer ungeraden Zahl passiert, wenn du sie durch Zwei teilst - insbesondere dann, wenn sie als integer (oder in einem anderen ganzzahligen Format) abgespeichert wird.
Dann sollte dir auch schnell klar werden, was raus kommt, wenn man diese Zahl wieder mit Zwei multipliziert.

Beim Programmieren solltest du aufpassen, dass der Compiler das /2 *2 nicht wegoptimiert. Dazu kannst du dir z.B. das Zwischenergebnis ausgeben lassen.

Viel Spaß beim Programmieren,
Florian

Ganz ehrlich, ich habe keine Ahnung. Vielleicht klappt es so:

Du könntest von der Zahl so oft eins abziehen, bis Du 0 hast. Nehme eine Variable x. Setze x am Anfang auf 0. Wenn Du 1 von der Zahl abziehen kannst, dann setze x auf 1. Wenn Du noch eine Zahl abziehen kannst und immer noch nicht 0 erreicht ist, dann setze x wieder auf 0. Du musst also immer testen, ob x eins oder 0 ist, und ob Du noch eine Zahl abziehen kannst. Ziehe von der Zahl so oft 1 ab, bist die Du null hast. Wenn x=1, dann war die Zahl ungerade, wenn x=0, dann war die Zahl gerade.
Sorry, ich glaube meine Erklärung ist nicht so gut, aber es sollte nicht so schwer sein.

Beste Grüße,

Arvid

Unterscheidung gerader und ungerader Zahlen in C++
int n;
if(n/2*2-n==0) …„n ist gerade!“;
else „n ist ungerade!“;

also ich kenne nur die excel anwendung anbieten unter der voraussetzung, daß es sich um ganze zahlen handelt

gehe in excel -> markiere die zahl-> gleichheitszeichen setzen-> funktionssymbol anklicken und gerade bzw ungerade anmerken -> dann kammt wahr oder nicht wahr heraus.
fertig

Sorry, da kann ich dir nicht helfen!

Hallo,
ich habe schon lange nicht mehr programmiert. Es gibt doch bestimmt eine Funktion, mit der man die Nachkommastellen annullieren kann.
Dann würde ich die Variable durch 2 teilen und das Ergebnis mit der um die Nachkommastellen reduzierten Zahl vergleichen. Wenn beide gleich sind, war die Variable gerade, wenn nicht, ungerade.
Gruß
Martin

Sorry, aber irgendwie musst du doch das Ergebnis untersuchen, wenn du die Grundrechenarten angewendet hast. Gibts da Möglichkeiten?

urlaubsbedingt kann ich erst jetzt antworten, sehe aber dass du schon gute Antworten bekommen hast

Ich kann dir leider nicht weiterhelfen.

Sry ich kann dir leider nicht helfen

MFG R.