Laden...

Prüfen, ob Zahl durch 8 teilbar ist und ggf anzeigen, was hinzugefügt oder weggelassen werden muss

Erstellt von DragStar vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.756 Views
D
DragStar Themenstarter:in
11 Beiträge seit 2020
vor 4 Jahren
Prüfen, ob Zahl durch 8 teilbar ist und ggf anzeigen, was hinzugefügt oder weggelassen werden muss

Hallo.
Ich stehe vor dem Problem folgende Aufgabe lösen zu müssen.

Aus drucktechnischen Gründen sollten Bücher möglichst eine durch 8 teilbare Seitenzahl haben.
Schreiben Sie ein Programm, welches den Autor nach Eingabe der momentanen Seitenzahl darüber informiert, ob diese Forderung erfüllt ist
oder wie viele Seiten er gegebenenfalls weglassen oder hinzufügen sollte.

Wie gebe ich nun das Ergebnis gem. der Aufgabe aus? Komme einfach nicht weiter! 😦

Das habe ich bereits in als Konsolenanwendung erstellt:


{
            decimal seitenZahl, quotient;
            const int divisor = 8;
            
            Console.Write("Bitte geben Sie die momentane Seitenanzahl Ihres Buches ein: ");
            seitenZahl = Convert.ToInt32(Console.ReadLine());

            quotient = seitenZahl / divisor;
            Console.WriteLine("Ihr Buch hat "+quotient+" Seiten.");


            if (quotient % 8 == 0)
            {
                Console.WriteLine("Die Seitenanzahl Ihres Buches beträgt " + seitenZahl + " .");
            }

🙂

T
708 Beiträge seit 2008
vor 4 Jahren

Schau doch mal was modulo überhaupt tut und Dir als Rückgabewert bei verschiedensten Konstellationen zurückgibt.

Deine if-Abfrage verhindert ja ein Ergebnis auszugeben, sofern die Seitenzahl nicht durch 8 teilbar ist.

Und auf den Quotient kannst Du auch verzichten 😃


Console.WriteLine("Die Abweichung der Seitenanzahl für den Druck beträgt " + seitenZahl % divisor  + " .");
D
DragStar Themenstarter:in
11 Beiträge seit 2020
vor 4 Jahren

Stimmt, den brauch ich gar nicht. 😄
Sorry, bin noch voll am Anfang. Aber danke für den Hinweis.
Dann schau ich mir das nochmal (immer noch) an. 😃

🙂

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

im Prinzip genügen bei dir zusätzliche 2 x else if und einmal else mit einer entsprechend sinnvollen Ausgabe.

Und den Quotient brauchst du in der Tat nicht.

LG

D
DragStar Themenstarter:in
11 Beiträge seit 2020
vor 4 Jahren

Ja ok. Dann versuche ich das mal.
Vielen Dank!

🙂

D
DragStar Themenstarter:in
11 Beiträge seit 2020
vor 4 Jahren

Habe es jetzt so gemacht 😃

{
            int seitenZahl;
            const int divisor = 8;
            
            Console.Write("Bitte geben Sie die momentane Seitenanzahl Ihres Buches ein: ");
            seitenZahl = Convert.ToInt32(Console.ReadLine());
            
            if (seitenZahl % divisor == 0)
            {
                Console.WriteLine("Die Seitenzahl Ihres Buches ist exakt durch 8 teilbar.\nDie Forderung ist erfüllt.");
            }
            else //(seitenZahl % divisor != 0)
            {
                Console.WriteLine("Sie haben " + seitenZahl % divisor + " Seiten zuviel.\nDie Forderung ist nicht erfüllt." +
                    "\n\nSie sollten entweder noch "+(divisor-(seitenZahl % divisor))+ " Seiten hinzufügen oder "+ seitenZahl % divisor+" Seiten löschen.");
            }
            
            Console.ReadKey();
            

        }

🙂

16.806 Beiträge seit 2008
vor 4 Jahren

Du weißt schon, dass if auch ein else hat?

if (..modulo..)
{
   // ja
}
else
{
 // nein
}

Wenn seitenZahl im Sinne einer Seite ist, dann ist decimal der falsche Typ.
Seiten sind Ganzzahlen, daher wäre hier wahrscheinlich int das, was Du willst.

Vielleicht doch nochmal ne Stunde in die C# Grundlagen investieren? 😉

D
DragStar Themenstarter:in
11 Beiträge seit 2020
vor 4 Jahren

Ja da hast du recht. "Int" ist passender.
Ich habe es nochmal geändert.
Ich kenne die Datentypen, hatte es nur übersehen 😃

🙂