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 + " .");
}
🙂
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 + " .");
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. 😃
🙂
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
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();
}
🙂
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? 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ja da hast du recht. "Int" ist passender.
Ich habe es nochmal geändert.
Ich kenne die Datentypen, hatte es nur übersehen 😃
🙂