Laden...

Probleme beim Lösen einer Hausaufgabe zum Umgang mit StreamWriter

Erstellt von csharpqueen vor einem Jahr Letzter Beitrag vor einem Jahr 602 Views
C
csharpqueen Themenstarter:in
3 Beiträge seit 2022
vor einem Jahr
Probleme beim Lösen einer Hausaufgabe zum Umgang mit StreamWriter

Hallo,

ich bin noch Studentin und arbeite gerade an einer Aufgabe die mich zum verzweifeln bringt. Ich hoffe ich bin hier im richtigen Forum.
Die Lösung habe ich bereits jedoch verstehe ich sie nicht ganz:

Die Aufgabe ist:
Schreiben Sie eine Methode:
Die Methode soll eine Textdatei mit dem Namen dName erzeugen. Die Detei soll ein quadratisches Muster mit so vielen Zeichen enthalten, wie die breite angibt. Das Muster besteht Streifen von + und Unterstrichen, wie in Abbildung 1 (Die erläutere ich gleich) für die Breite 10 gezeigt. Zwischen zwei Pluszeichen sind dabei immer 4 Unterstriche. Fangen Sie dabei alle Exceptions des Typ IOException ab und geben Sie im Fehlerfall die Ursache des Fehlers auf dem Bildschirm auf.

Abbildung 1 ist:
++
+____+
++
++
++
++
+____+
++
++

Nun lautet die Lösung:
public static void Schreibe(string dateiname, int breite
StreamWriter wr = null;
try {
wr = new StreamWriter(dateiname);
for(int zl=0; zl< breite, ++zl) {
for (int sp=0; sp<breite; ++sp) {
int dist = breite - zl;
wr.Write (zl-sp) % 5 == 0 ? '+' : '_'); // HIER IST MEIN PROBLEM.. Wie komm ich auf dieses wr.Write
}
wr.WriteLine();
}}
Den rest schreib ich jetzt mal nicht mehr ab.. ist unnötig
ABER WIE KOMM ICH DARAUF KANN MIR JEMAND HELFEN ICH MUSS MEINE KINDER FÜTTERN
Bitte Beitrag nicht löschen bitte bitte bitte ich tippe das alles mit tränen in den augen

187 Beiträge seit 2009
vor einem Jahr

Geht doch! Da fehlt nur eine Klammer und statt einem Komma braucht man ein Semikolon.


try
{
    using (wr = new StreamWriter(dateiname))
        for (int zl = 0; zl < breite; ++zl)
        {
            for (int sp = 0; sp < breite; ++sp)
            {
                int dist = breite - zl;
                //if ((zl - sp) % 5 == 0)
                //{
                //    wr.Write('+');
                //}
                //else
                //{
                //    wr.Write('_');
                //}
                wr.Write((zl - sp) % 5 == 0 ? '+' : '_');
            }
            wr.WriteLine();
        }
}


190 Beiträge seit 2012
vor einem Jahr

Hallo
Erst einmal ein Hinweis. Für Code bitte die entsprechenden Code-Tags verwenden. Ist besser lesbar.

Und dann hast du das Problem, was viele haben. Code kopiert und nicht verstanden.

Schau dir mal den Modulo-Operator an.
Arithmetische Operatoren (C#-Referenz)
C# Modulo Examples

und dann noch den bedingte Operator ?:
Operator „?“ (C#-Referenz)

  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF

C
csharpqueen Themenstarter:in
3 Beiträge seit 2022
vor einem Jahr

Vielen Vielen Dank! Ich habe es nun verstanden..🙂)

M
368 Beiträge seit 2006
vor einem Jahr

Bitte Beitrag nicht löschen

Nebenbei: den Original-Beitrag auch nicht selbst editieren (vor allem nicht am Code), da das Startproblem (inkl. erfolgter Antworten) so nicht mehr nachvollzogen werden könnte. Und längerfristig -v.a. bei komplexeren Software-Produkten- könnte der Einsatz eines Versionsverwaltungssystems (Git(hub),...) erwägenswert sein.

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉

16.807 Beiträge seit 2008
vor einem Jahr

Bitte Beitrag nicht löschen

Wenn man sich an die Regeln hält, die in [Hinweis] Wie poste ich richtig? beschrieben sind, und damit diese Community hier respektiert, dann passiert das auch nicht und man bekommt auch eher Hilfe.
Wäre schön, wenn Du das eingehalten hättest, sodass wir nicht Deinen Beitrag hätten editieren müssen (Titel, Code-Tags...).

Nach 10 Minuten der Antwort hast geschrieben, dass Du es verstanden hättest.
Angesichts des Zeitraums und der dahinterstehenden Lesemenge ist die Aussage vermutlich unwahr 🙂
Daher: lesen, lesen, lesen - nicht 10 Mal um Bitte schreien 😉