c++ if Bedingung bei modulo?
Hallo,
ich wollte die Zahlenfolge mit modulo durch c++ ausdrücken mit der if Bedingung.
Das sollte so aussehen:
zB
17%2 = 1
17/2= 8 Rest:1
8%2=0
8/2=4 Rest:0
Das Programm sollte natürlich durchlaufen, bis es nicht mehr geht.
Wie kann ich das mit einer zahlenfolge in einem code mit if Bedingung schreiben.
Danke im Voraus.
3 Antworten
Soweit ich das verstehe, möchtest du einfach nur eine Dezimalzahl in eine Binärzahl umwandeln und dafür stets den Rest ausgeben? Wenn ja, verwende eine Schleife dafür.
Dann musst du wohl viele if-Strukturen hintereinander auflisten und kannst dich nur auf einen konkreten Anwendungsfall (wie die 17) beziehen.
Danke. Die Zahl war mir wirklich vorgegeben, aber irgendwie komm ich einfach nicht dahinter, wie es gehen soll. Die Theorie sitzt, aber die Anwendung ist ist in diesem Fall irgendwie nicht umsetzbar.
Gibt es eine Möglichkeit, wie ich beim teilen nach der modulo Anwendung den geradlinigen Wert raus bekomme?
Die umliegenden Antworten zeigen schon konkret, wie es mit einer Schleife geht. Mit if wäre es fast gleich, nur das jeder Schleifendurchlauf ein if darstellt.
Beispiel für einen Countdown:
int n = 3;
if (n > 0) {
--n;
}
if (n > 0) {
--n;
}
// etc. ...
Halte ich generell aber für ziemlich sinnbefreit.
Ich habe den Wald vor lauter Bäumen nicht gesehen, liegt wohl an der Uhrzeit:). Okey, werde das jetzt mal umsetzen. Danke nochmal, die hilfreiche Antwort hast du dir auf jeden Fall verdient.
Ich kann mir nicht vorstellen, dass das die Lösung für deine Aufgabe sein soll. Kannst du deinen Aufgabensteller nochmal fragen oder zumindest diesen Lösungsansatz vorstellen? Meines Erachtens sollte so etwas nur mit einer Schleife bearbeitet werden, schon allein wegen dem Schreibaufwand.
Also in der Aufgabenstellung steht nur, dass ich das obige Beispiel in einem Pseudocode schreiben soll. Und dann wird auf die Vorlesungsfolien verwiesen, dort werden komischerweise bei Pseudocode nur If Bedingungen behandelt.
Leider noch nicht, aber wir hängen in der Vorleseung ganz schön hinter den Übungen. Der Prof. hatte zu begin des Semesters zwei Vorlesungen über die Geschichte der Informatik gehalten, dabei hat er alles in die Länge gezogen. Jetzt behandeln wir die neuen Themen erst in den Übungen und zwei wochen danach in der Vorlesung...
Ok, ich denke, man kann hier einen Mittelweg fahren.
Einen konkreten Fall (wie die 17) kann man ja noch mit mehreren if-Strukturen durchziehen oder zumindest ab Wiederholung 3 irgendwie andeuten, mit einem Kommentar o.ä.:
wiederhole if so oft, bis ... erfüllt ...
Darauffolgend lässt sich die Lösung mit der Schleife aufführen, darüber mit der Begründung, dass so viele if viel Schreibarbeit darstellen und somit nur ein konkreter Fall abgedeckt werden könnte. Bei einer anderen beliebigen Zahl wie 5 oder 47 würde es ja wieder ganz anders aussehen.
Ich glaube, dass du recht hast. Es macht wirklich keinen Sinn. Ich werde einfach einen zweiten Lösungsweg mit Alternative gekennzeichnet hinzufügen. Aber mittlerweile habe ich neues Grundwissen erlangt...Stichwort: Schleifen
Keine Ahnung, was du da mit nem if vorhast, aber mit ner Schleife sähe das ganze z.B. so aus:
#include <iostream>
int main(){
int number = 17;
int remainder;
while(number){
remainder = number % 2;
std::cout << number << " % 2 = " << remainder << std::endl;
std::cout << number << " / 2 = ";
number >>= 1;
std::cout << number << " Rest: " << remainder << std::endl;
}
}
Danke. Ich soll die Bedingungen oben in einen Pseudocode bauen.....steht bei mir in der Aufgabe, werde mal ein bisschen probieren und versuchen:). Vielen Dank nochmal.
Wenn du meinst, wie du solange rechnest, bis Rest null rauskommt, dann kannst du dir mal den euklidischen Algorithmus anschauen zum Thema ggT bestimmen.
Der Code sieht wie folgt aus (so ca., musst natürlich passend umschreiben):
int rest;
int ggt;
while (zahl1 % zahl2 != 0){
rest = zahl1 % zahl2;
zahl1 = zahl2;
zahl2 = rest;
}
int ggt = zahl2;
Danke. Ich muss leider die if Bedingung anwenden, steht so in meiner Aufgabe.
Danke. Das würde ich auch machen, aber in meiner Aufgabe soll ich es mit der if Bedingungen in einem Pseudocode lösen.