Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Prüfen, ob Zahl durch 8 teilbar ist und ggf anzeigen, was hinzugefügt oder weggelassen werden muss
DragStar
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

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

beantworten | zitieren | melden

Hallo.
Ich stehe vor dem Problem folgende Aufgabe lösen zu müssen.
Zitat
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 + " .");
            }
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DragStar am .
:-)
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 689

beantworten | zitieren | melden

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  + " .");
private Nachricht | Beiträge des Benutzers
DragStar
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

Stimmt, den brauch ich gar nicht. :-D
Sorry, bin noch voll am Anfang. Aber danke für den Hinweis.
Dann schau ich mir das nochmal (immer noch) an. :-)
:-)
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
DragStar
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

Ja ok. Dann versuche ich das mal.
Vielen Dank!
:-)
private Nachricht | Beiträge des Benutzers
DragStar
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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();
            

        }
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von DragStar am .
:-)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

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? ;-)
private Nachricht | Beiträge des Benutzers
DragStar
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

Ja da hast du recht. "Int" ist passender.
Ich habe es nochmal geändert.
Ich kenne die Datentypen, hatte es nur übersehen :-)
:-)
private Nachricht | Beiträge des Benutzers