Berichtigung meines c#-programms



  • Hiho, hab mich mal an nen c# Programm versucht, aber es will irgendwie nicht.
    Könntes es jemans berichtigen, damit ich sehe wie ich es machen kann?

    using System;
    namespace aufgabe2
    {
    class TR
    {
    int zahl1;
    int zahl2;
    
    public void einlesen(TR mTR)
    {
    mTR.zahl1 = Int32.Parse(Console.ReadLine());
    mTR:zahl2 = Int32.Parse(Console.ReadLine());
    }
    public int addition(TR mTR)
    { return mTR.zahl1 + mTR.zahl2; }
    public int subtraktion(TR mTR)
    { return mTR.zahl1 - mTR.zahl2; }
    public int multiplikation(TR mTR)
    { return mTR.zahl1 * mTR.zahl2; }
    public int division(TR mTR)
    { if (zahl2 != 0)
        return mTR.zahl1 / mTR.zahl2;
    else
    {
    Console.Write ("Fehler: Division durch 0");
    return -1;
    }
    }
    public static void Main()
    {int ergebnis;
    TR meinTR;
    TR.einlesen(meinTR);
    ergebnis = TR.addition(meinTR);
    Console.WriteLine (ergebnis);
    ergebnis = TR.subtraktion(meinTR);
    Console.WriteLine (ergebnis);
    ergebnis = TR.multiplikation(meinTR);
    Console.WriteLine (ergebnis);
    ergebnis = TR.division(meinTR);
    Console.WriteLine (ergebnis);
    }
    }
    }
    


  • Warum glaubst du, dass man C#-Fragen im ANSI C-Forum stellen sollte?

    Schritt 1 beim programmieren lernen: Stell fest, welche Programmiersprache du benutzt.

    :p



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum C# und .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Also was nicht so logisch ist, das du der Einlesen Funktion ein objekt der eigenen Klasse gibts. Klar kann das sinn machen, aber nicht hier.
    Da würde ich einfach eine Funktion machen, die zwei double entgegen nimmt, die vorher in der main eingelesen wurden, und diese dann prüft. Wenn die prüfung erfolgreich war, schreibst du die beiden variablen auf deine variablen der TR klasse.



  • Du müßtest eine Exception erhalten und dann wüßtest du auch, was noch falsch an deinem Programm ist.
    Tipp: Speicher reservieren...



  • Wie reservier ich denn Speicher?Muss ich da an eine Stelle mit eckigen Klammern eine Zahl einfügen?Und geht es denn so?bin echt noch neu aufm Gebiet...

    using System;
    namespace aufgabe2
    {
    class TR
    {
    int zahl1;
    int zahl2;
    
    public void einlesen()
    {
    zahl1 = Int32.Parse(Console.ReadLine());
    zahl2 = Int32.Parse(Console.ReadLine());
    }
    public int addition()
    { return zahl1 + zahl2; }
    public int subtraktion()
    { return zahl1 - zahl2; }
    public int multiplikation()
    { return zahl1 * zahl2; }
    public int division()
    { if (zahl2 != 0)
        return zahl1 / zahl2;
    else
    {
    Console.Write ("Fehler: Division durch 0");
    return -1;
    }
    }
    public static void Main()
    {int ergebnis;
    TR.einlesen();
    TR.zahl1=zahl1;
    TR.zahl2=zahl2;
    ergebnis = TR.addition();
    Console.WriteLine (ergebnis);
    ergebnis = TR.subtraktion();
    Console.WriteLine (ergebnis);
    ergebnis = TR.multiplikation();
    Console.WriteLine (ergebnis);
    ergebnis = TR.division();
    Console.WriteLine (ergebnis);
    }
    }
    }
    


  • Also für deinen nächsten Post ein kleiner Tip: Formatiere bitte deine Code etwas sauberer dann lässt sich das einfacherer lesen.
    Zu dem "Speicher reservieren"-Punkt. Was damit gemeint ist, du musst erstmal ein Objekt deiner TR Klasse erzeugen, sonst greifst du auf uninitialisierten Speicher zu.

    public static void Main(string[] args)
    {
        TR meinTR = new TR();
        //hier kommt dein restlicher Code
    }
    


  • Aso ok, dachte irgendwo was gelesen zu haben, dass diese new anweisung in static main nicht geht. Aber leider geht mein Code nun immernoch nicht, bekomme nochimmer mehrmals folgenden Fehler:An object reference is required for the nonstatic field, method or property in den Zeilen 32,33,35,37 und 39.
    Was muss ich nun noch ändern damit mein Prog endlich läuft?

    using System;
    namespace aufgabe2
    {
    class TR
     {
     int zahl1;
     int zahl2;
    
     public void einlesen(TR mTR)
      {
       mTR.zahl1 = Int32.Parse(Console.ReadLine());
       mTR.zahl2 = Int32.Parse(Console.ReadLine());
      }
     public int addition(TR mTR)
      { return mTR.zahl1 + mTR.zahl2; }
     public int subtraktion(TR mTR)
      { return mTR.zahl1 - mTR.zahl2; }
     public int multiplikation(TR mTR)
      { return mTR.zahl1 * mTR.zahl2; }
     public int division(TR mTR)
      { if (zahl2 != 0)
          return mTR.zahl1 / mTR.zahl2;
        else
         {
          Console.Write ("Fehler: Division durch 0");
          return -1;
         }
      } 
     public static void Main()
      {int ergebnis;
      TR meinTR = new TR(); 
      TR.einlesen(meinTR);
      ergebnis = TR.addition(meinTR);
      Console.WriteLine (ergebnis);
      ergebnis = TR.subtraktion(meinTR);
      Console.WriteLine (ergebnis);
      ergebnis = TR.multiplikation(meinTR);
      Console.WriteLine (ergebnis);
      ergebnis = TR.division(meinTR);
      Console.WriteLine (ergebnis);
      }
     }
    }
    


  • Deine Instanz heißt ja auch meinTR und nicht TR.



  • ok, danke jetzt hab ich es kapiert 🙂



  • Das ist trotzdem nicht richtig. Hast du meinen ersten Post gelesen?
    Du sollst der einlesen Funktion keine Objektreferenz deiner Klasse übergeben das ist sinnlos.
    Lies einfach in der Main zwei double ein und übergib diese der Einlesen funktion, prüfe dann in der Einlesen Funktion ob die Daten valide sind und schreib sie dann auf die privaten member zahl1 und zahl2.


Anmelden zum Antworten