Blutiger Anfänger in C#

  • Wir mussten das für Sätze mit Satzzeichen lösen.
    Bin dann von einem linken Index und einem rechten Index ausgegangen.


    http://pastebin.com/iBQbMVrb


  • wenn du voll cool bist, ersetzt du

    Code
    1. if (IstPalindrom)
    2. Console.WriteLine("{0} ist ein Palindrom", s);
    3. else
    4. Console.WriteLine("{0} ist KEIN Palindrom", s);


    durch

    Code
    1. Console.WriteLine("{0} ist {1} Palindrom", s, IstPalindrom?"ein":"KEIN");


    macht das gleiche, braucht auch ca. gleich lange bzw. den gleichen SPeicherplatz.. aber mir ist sowas lieber ;)

  • Der Teil vor dem Fragezeichen ist jeweils eine boolsche Überprüfung.
    Stell dir einfach 'istPalindrom==true' vor.
    Das Fragezeichen trennt dann die Überprüfung von den Ausgaben.
    Der Wert vor dem Doppelpunkt 'ein' ist die Ausgabe, welche erscheint sofern die Überprüfung wahr (true) ist.
    Der hintere Teil erscheint wenn die Ausgabe falsch(false) ist.


    Gruss


  • Das Fragezeichen leitet die Funktion ein, die testet ob der bool true oder false ist, richtig?
    Der Doppelpunkt trennt das was ausgegeben.
    True kommt immer vor false.


    Hab ich das soweit richtig verstanden? :D Hab das noch nicht davor gesehen


    ja, richtig verstanden.


    wobei das fragezeichen ein operator, und keine funktion ist - aber das ist eigentlich nicht ganz so wichtig ;)

  • Vielen Dank euch beiden, habs kapiert.



    Neues Problem: Wie komme ich an die einzelnen Ziffern einer Int-Variable? Die Länge der Int-Variable ist unbekannt, also kann ich nicht per modulo die Hunderter, Zehner, Einer etc. bestimmen.


    Zusammenhang: Ich soll eine eigene ConvertToString Funktion schreiben.

  • Code
    1. int zahl = 123456;
    2. char[] zahlen = zahl.ToString().ToCharArray(); //oder auch ToArray();
    3. for (int i = 0; i < zahlen.Length; i++)
    4. {
    5. Console.WriteLine(zahlen[i]);
    6. }


    Es gibt etliche Möglichkeiten, diese Aufgabe zu lösen...

  • Hey ho,


    ich hab dafür eine Lösung aber die ist nicht gerade schön aber sie funktioniert definitiv.


    Code
    1. Console.WriteLine(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Stunde, Minute, Sekunde).ToLongTimeString());


    An Stelle der Variablen Stunde, Minute und Sekunde musst du natürlich deine Variablen nehmen.


    MfG DaS kiDDy

  • Einfacher geht es vielleicht so:

    Code
    1. System.out.println("{0:00}:{1:00}:{2:00}", Stunde, Minute, Sekunde);


    Zu den Formatierungen gibt es auch hier eine gute Tabelle:
    .NET String.Format Cheat Sheet


    Perfekt, das ist eine richtig schöne Lösung ;)
    Vielen Dank!




    Neues Problem, ich möchte aus einer Datei die Datensätze verdichten.
    Also aus:


    möchte ich folgendes erzeugen:



    Wie schaffe ich es jedoch die Anzahl der einzelnen Items zu ermitteln? Hier mal mein Ansatz bisher:
    Es steht fest, dass die ersten 30 Zeichen für die Artikelbezeichnung reserviert sind und der Rest für den Preis.

  • So wie es aussieht, stimmt bei gleichem Artikel auch immer die komplette Zeile überein?
    Denn dann könntest du einfach ein Dictionary benutzen, indem du immer das erste Vorkommen einer Zeile speicherst, mit einer Anfangs Value von 1, falls nicht schon vorhanden. Ansonsten erhöhst du die Value.
    Das sähe dann etwa so aus:


    Am Ende dann nur noch die entsprechende Ausgabe. Das könnte man bspw. mit einer foreach Schleife machen:

    Code
    1. foreach(string s in d.Keys)
    2. {
    3. string str = d[s] + " " + s;
    4. ...
    5. }


    Edit: Mir ist grad aufgefallen, dass du die Preise auch summiert haben willst. Das wäre in dem Code jetzt noch nicht berücksichtigt.


  • Edit: Mir ist grad aufgefallen, dass du die Preise auch summiert haben willst. Das wäre in dem Code jetzt noch nicht berücksichtigt.


    Machst halt ein Dictionary<Article, int> wobei Article ein Objekt einer eigenen Klasse ist mit 2 Variablen(float Preis und string Name).
    Int im Dictionary als Count und dann müsstest das halt bei der Ausgabe noch multiplizieren.


    Gruß

  • Hey ho,


    eine andere Variante, die etwas aufwändiger wäre wäre es mit einem DataTable zu lösen. Dort kannst du die Einträge ja nach un nach hinzufügen und deine Spalten alle selbst definieren. Laut deiner Aussage brauchst du 3 Spalten und erweitern kannst du diese ja beliebig. Die Ausgabe könnte dabei etwas tricky sein aber ich denk mal das bekommst du schon hin. Wenn nicht, dann fragst du einfach nach und wir können dir auch sicherlich weiterhelfen.


    MfG DaS kiDDy


  • Ich wollte keinen neuen Thread aufmachen.
    Ich habe das Problem das der immer addiert, auch wenn ich subtrahiere, multipliziere oder dividiere. Wenn ich allerdings addiere kommt das addieren nur einmal.
    Was muss ich änder das wenn ich z.b. dividiere dass der dann nicht auch nochmal addiert?



  • Hi
    wie verwende ich dabei den ascii code das der andere zeichen ruasfiltert die mit dem rechner nichts zu tuhn haben?

  • du kannst z.b. eine prüfmethode machen. die zahlen sind im ascii ja alle beieinander, 48 bis 57. frag also einfach ab, ob das eingegebene zeichen innerhalb dieser range ist.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird