Blutiger Anfänger in C#

  • Hallo Leute, ich hab mal eine Frage: Ich häng gerade bei einer Aufgabe bei der ich einen ganz ganz simplen "Taschenrechner" programmieren soll.
    Ich hatte erst eine Stunde programmieren deshalb kenn ich mich noch nicht wirklich aus. Wäre nett wenn ihr es anfängerfreundlich erklären könntet was ich falsch gemacht hab.


    Fehler: Verwendung der nicht zugewiesenen lokalen Variable "ergebnis".

  • einfach am Anfang

    Code
    1. int ergebnis = 0;

    und das wars.
    Edit: soweit ich das weiß, initialisiert C# Variablen nicht, heißt also, dass du für jede deklarierte Variable entweder den Operator new oder einen Standardwert zuweisen musst:


    http://msdn.microsoft.com/de-d…ry/fa0ab757(v=vs.90).aspx


    Bzw.: http://msdn.microsoft.com/de-d…ry/83fhsxwc(v=vs.90).aspx

    Zitat

    Bedenken Sie, dass die Verwendung nicht initialisierter Variablen in C# unzulässig ist.

  • Hey ho,


    Code
    1. if (Rechenart == "+")


    ich empfehle dir fürs Vergleichen von Strings die .Equals Methode, da wenn man diesem Thread Glauben schenken darf das "==" nur auf Objektgleichheit prüft.


    Demnach würde dein Code ungefähr so aussehen:


    Code
    1. if (Rechenart.Equals("+"))


    Korrigiert mich, wenn ich da falsch liege.


    MfG DaS kiDDy

  • Hallo,
    wäre jemand gewillt mir kurz zu erklären wie ich alle dreistelligen zahlen von 100-999 die sich durch ihre Ziffern teilen lassen ausgeben kann?
    Bsp: 126, lässt sich durch 1 2 und 6 teilen.



    Vielen dank ;)

  • Erstelle dir ein eindimensionales Array, indem du per String-Splitt-Methode, die einzelnen Chars reinpackst. Nun teilst du die ursprüngliche Zahl durch jeden Char (zahl im Array), kommt eine grade Zahl raus ist es teilbar.


    Beispiel:
    int Ausgangszahl = 134;
    int Chars Array();
    Chars = String.Split(134,1);
    int Ergebnis = Ausgangszahl / Chars[0];
    //Hier prüfen ob es KEINE Kommazahl ist
    if (Ergebnis == Kein Komma)
    Console.Writeline ("Teilbar");
    else
    Console.Writeline("Nicht teilbar");




    Ist natürlich nur eine Skizze..


  • Sein Quellcode steht doch schon dort...
    Einfach eine For-Schleife durchlaufen lassen. In dieser Schleife setzt du dort eine Variable int i auf 100 und tust bei jedem durchlauf dann diese Variable um 1 erhöhen.



    Somit werden alle Zahlen ausgegeben, die durch die einzelnen Zahlen teilbar sind:



    Einführung von Schleifen siehst du ab hier: http://www.youtube.com/watch?v=HoxHRQrmJSM

  • Vielen Dank fff619,
    ich hatte das mal mit einer for-schleife probiert, jedoch hab ich sie an die falsche Stelle gesetzt (direkt vor das if)


    Aber jetzt ist es mir klar geworden warum das nicht funktioniert, denn die ganzen Operationen oben müssen eine vorgegebene variable i haben, richtig?


    Auch danke an dich javaest, hab morgen programmier-vorlesung und da bekommen wir erst arrays.

  • Vielen Dank fff619,
    ich hatte das mal mit einer for-schleife probiert, jedoch hab ich sie an die falsche Stelle gesetzt (direkt vor das if)


    Wenn du die for-schleife direkt vor dem if machst, dann erhöht sich zwar die Variable i, jedoch nicht die Variable h, z, e. Somit bleiben diese immer konstant bzw. werden nicht verändert.

  • Benötige wiedermal Hilfe. Versuche gerade zu testen ob es sich bei einem Wort um ein Palindrom handelt. z.B ANNA, OTTO etc.
    Bei diesen Wörtern funktioniert es bereits. Aber wenn ich: "Anna" eingebe sieht er es nicht als Palindrom weil er "A" mit "a" vergleicht.
    Lösung wäre alles einheitlich umzuwandeln. Jedoch weiß ich nicht genau wie die "ToLower" bzw. "ToUpper" Funktion richtig arbeitet.
    Könnte mir jemand kurz helfen?
    Vielen dank ;)

  • Ich verzweifel gerade "wiedermal" an einer Aufgabe:
    "Hat der eingelesene String mehr als 12 Ziffern geben Sie eine Fehlermeldung aus und beenden das Programm."
    Ich hab versucht eine Variable hochzuzählen und dann mit break aus der Schleife rauszukommen, aber break bringt mich immer nur zum while und nicht ganz raus. :/
    Der restliche Teil ist bereits gelöst, aber ich weiß nicht wie ich diese dumme Fehlermeldung hinbekomme :/
    http://pastebin.com/yCKqEqbu


    Habs hinbekommen, hier ist meine Lösung falls es noch jemanden interessiert


  • Vielen dank.

    Code
    1. string s = "Anna";
    2. string low = s.ToLower();


    Eigtl. unnötig eine neue Variable zu erstellen, außer wenn du diesen Wert später weiterhin abfragen willst.


    Man kann es gleich im if-Zwei abfragen:


    Zitat

    if (s[i].ToString().ToLower() != s[s.Length - 1 - i].ToString().ToLower())

  • Eigtl. unnötig eine neue Variable zu erstellen, außer wenn du diesen Wert später weiterhin abfragen willst.


    Man kann es gleich im if-Zwei abfragen:


    hallte ich nicht für schlau.
    vorschlag 1: es ist oft gut sich die eingabe zu behalten.. z.b. um dann die Ausgabe "Anna ist ein Palindrom" machen zu können.
    vorschlag 2: a) warim machst du ToString() bei einem string? b) Du machst aus einem programm mit linearer Laufzeit, eins mit Quadratischer (in jedem durchlauf, durchläfst du das array wieder - nichts anderes macht ToLower). c) das macht es echt viel unleserlicher - sprich du hast aus leserlichen, relativ effizienten Code, unleserlichen ineffizienten code gemacht - und das nur, um eine variable weniger anlegen zu müssen


    edit:
    was dir auffallen hätte können, istdass er

    Code
    1. for (int i = 0; i < s.Length; i++)


    geschrieben hat, und dabei wird der Letzte Buchstabe mit dem ersten verglichen, und später, der erste mit dem letzten... sprich die doppelte arbeit.


    Code
    1. for (int i = 0; i < s.Length /2 ; i++)