Benutzer mit den meisten Antworten
for Schleife ohne die Zahl 7....

Frage
-
Hi Leute, habe vor kurzem mit C# angefangen, nun eine frage.
Folgende Aufgabenstellung:
Zahlen sollen mit 1 beginnend immer weiter hochgezählt werden (1, 2, 3 etc.).
Dabei sind folgende Zahlen nicht erlaubt:
- alle Vielfachen von 7
- Alle Zahlen, welche die Ziffer 7 enthalten (z.B. 27)
Erstelle ein Konsolenprogramm, das bis zum Erreichen der Zahl 100 alle Zahlen durchzählt und anstelle von Zahlen die nicht erlaubt sind, die Zeichenfolge 'Piep' ausgibt.-----------------------------------------------------------------------------------------------------------------------------------------------------------
Hier nun mein Beispiel Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C__Comcave
{
class Program
{
static void Main()
{
for (int i = 1; i <= 100; i++)
{
if (i == 7 || i == 17 || i == 27 || i == 37 || i == 47 || i == 57 || i == 67 || i > 69 && i < 80 || i == 87 || i == 97)
{
Console.Beep(400, 200);
}
else
{
Console.WriteLine(i);
}
}
Console.ReadKey();
}
}
}----------------------------------------------------------------------------------------------------------------------------------------------------------#
Meine Frage ist jetzt, wie könnte ich das ganze mit dem Modulo Operator % lösen, da fehlt mir noch ein bisschen das
Know-How darüber....
Ich würde mich auf eine Hilfestellung sehr freuen.
Liebe Grüße Domi
Antworten
-
Hi,
probier's mal hiermit:
for( int i = 1; i <= 100; i++ ) { if( i % 7 == 0 || i.ToString().Contains( "7" ) ) { Console.WriteLine( "Beep" ); } else { Console.WriteLine( i.ToString() ); } }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 18. Juni 2019 08:09
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 11:10
-
Modulo alleine genügt hier nicht, daß du ja auch alle Zahlen ausschliessen willst, die eine 7 enthalten.
Vielfache von 7 erhälst du mit
if(i % 7 == 0)
und Zahlen, die eine 7 enthalten z.B. dadurch, daß du die Zahl in eine Zeichenkette umwandelst und prüfst, ob diese eine 7 enthält:
if(i.ToString().Contains("7"))
Das Ganze lässt sich natürlich auch in einem einzigen if kombinieren (mit || in diesem Fall), sodaß dein Code sehr übersichtlich wird und auch das Beep nur an einer Stelle aufgerufen wird. Da der durchlauf ziemlich fix geht, wird das wohl ein langes (oder kurzes, wie man es nimmt) Beep werden :)- Bearbeitet Christoph Biegner Donnerstag, 13. Juni 2019 13:29
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 18. Juni 2019 08:09
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 11:10
-
Das ist eine Variante des FizzBuzz-Test, da es dafür viele spannende Lösungen in einer Menge Programmiersprachen gibt hier erst einmal der Link zum Thema "FizzBuzz" - dürfte für den einen oder anderen interessierten Leser auch spannend sein.
Die Modulo Funktion berechnet den Rest einer Division zweier ganzer Zahlen. Für den geforderten Wert von 7, ist Modulo 7 also für alle Vielfachen von 7 = 0, diesen Fall kannst du natürlich einfach für alle Zahlen 1 - 100 Prüfen, z. B. in deiner Schleife mit
if(i % 7 == 0)
Diesen Test müsstest Du, wenn beide Bedingungen mit Modulo Operator geprüft werden sollen, auch auf jede Ziffer der jeweiligen Zahl Anwenden.
Die geforderte Aufgabe ist auch ohne Modulo lösbar, im vorgenannten Link zu FizzBuzz gibt es Beispiele dazu.
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 18. Juni 2019 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 11:10
Alle Antworten
-
Hi,
probier's mal hiermit:
for( int i = 1; i <= 100; i++ ) { if( i % 7 == 0 || i.ToString().Contains( "7" ) ) { Console.WriteLine( "Beep" ); } else { Console.WriteLine( i.ToString() ); } }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 18. Juni 2019 08:09
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 11:10
-
Modulo alleine genügt hier nicht, daß du ja auch alle Zahlen ausschliessen willst, die eine 7 enthalten.
Vielfache von 7 erhälst du mit
if(i % 7 == 0)
und Zahlen, die eine 7 enthalten z.B. dadurch, daß du die Zahl in eine Zeichenkette umwandelst und prüfst, ob diese eine 7 enthält:
if(i.ToString().Contains("7"))
Das Ganze lässt sich natürlich auch in einem einzigen if kombinieren (mit || in diesem Fall), sodaß dein Code sehr übersichtlich wird und auch das Beep nur an einer Stelle aufgerufen wird. Da der durchlauf ziemlich fix geht, wird das wohl ein langes (oder kurzes, wie man es nimmt) Beep werden :)- Bearbeitet Christoph Biegner Donnerstag, 13. Juni 2019 13:29
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 18. Juni 2019 08:09
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 11:10
-
Das ist eine Variante des FizzBuzz-Test, da es dafür viele spannende Lösungen in einer Menge Programmiersprachen gibt hier erst einmal der Link zum Thema "FizzBuzz" - dürfte für den einen oder anderen interessierten Leser auch spannend sein.
Die Modulo Funktion berechnet den Rest einer Division zweier ganzer Zahlen. Für den geforderten Wert von 7, ist Modulo 7 also für alle Vielfachen von 7 = 0, diesen Fall kannst du natürlich einfach für alle Zahlen 1 - 100 Prüfen, z. B. in deiner Schleife mit
if(i % 7 == 0)
Diesen Test müsstest Du, wenn beide Bedingungen mit Modulo Operator geprüft werden sollen, auch auf jede Ziffer der jeweiligen Zahl Anwenden.
Die geforderte Aufgabe ist auch ohne Modulo lösbar, im vorgenannten Link zu FizzBuzz gibt es Beispiele dazu.
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 18. Juni 2019 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 11:10