c++ if Bedingung bei modulo?

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.

iIovemusic 
Fragesteller
 15.11.2019, 23:59

Danke. Das würde ich auch machen, aber in meiner Aufgabe soll ich es mit der if Bedingungen in einem Pseudocode lösen.

0
regex9  16.11.2019, 00:01
@iIovemusic

Dann musst du wohl viele if-Strukturen hintereinander auflisten und kannst dich nur auf einen konkreten Anwendungsfall (wie die 17) beziehen.

1
iIovemusic 
Fragesteller
 16.11.2019, 00:08
@regex9

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.

0
iIovemusic 
Fragesteller
 16.11.2019, 00:10
@iIovemusic

Gibt es eine Möglichkeit, wie ich beim teilen nach der modulo Anwendung den geradlinigen Wert raus bekomme?

0
regex9  16.11.2019, 00:13
@iIovemusic

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.

1
iIovemusic 
Fragesteller
 16.11.2019, 00:17
@regex9

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.

0
regex9  16.11.2019, 00:22
@iIovemusic

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.

0
iIovemusic 
Fragesteller
 16.11.2019, 00:32
@regex9

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.

0
regex9  16.11.2019, 00:33
@iIovemusic

Aber mit Schleifen habt ihr euch schon beschäftigt?

0
iIovemusic 
Fragesteller
 16.11.2019, 00:38
@regex9

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...

0
regex9  16.11.2019, 00:46
@iIovemusic

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.

1
iIovemusic 
Fragesteller
 16.11.2019, 04:38
@regex9

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

0

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;
    }
}
iIovemusic 
Fragesteller
 15.11.2019, 23:57

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.

0

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;

iIovemusic 
Fragesteller
 16.11.2019, 00:00

Danke. Ich muss leider die if Bedingung anwenden, steht so in meiner Aufgabe.

1