Autor Beitrag
conan2012
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 06.11.10 17:51 
Hallo!
Hab leider ein kleines Problem was ich mit meinem bisherigen Kenntnisstand noch nicht lösen kann. Hab ne Aufgabe die ich nicht wirklich verstehe und bis nächste Woche würde mein Prof. die Aufgabe schon gelöst haben wollen. Muss eingestehen das ich die Vorlesungen etwas abgelenkt war so das mein Wissen über C# mehr als lückenhaft ist. Wenn ihr mir helfen könntet wäre das echt nett. Bin jetzt dabei die Lücken zu füllen und das geht denke ich ganz gut anhand von Beispielen. Wenn sich einer meiner erbarmen könnte und auch noch so nett wäre das mit reichlich Kommentaren zu versehen würde mir C# vielleicht nicht mehr wie ein Buch mit sieben Siegeln vorkommen. Über Büchertipps wäre ich auch Dankbar. Es sollte aber ein Buch sein was sich vielleicht mehr an Anfänger richtet und nicht umfangreiches Vorwissen erwartet. Also hier ist die Aufgabe die ich lösen soll:

Objekte einer Klasse Zahl repräsentieren ganze Zahlen. Die Klasse Zahl besitzt ein einziges Datenmenber wert für den eigentlichen Zahlenwert. Vervollständigen Sie die Klassendefinition um die erforderlichen Member zur Realisierung der main-Methode. Sub subtrahiert dabei den zweiten Zahlenwert vom ersten.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  class Zahl  {
    private int wert;
    // hier dein Member
  }

  class Program  {
    static void Main(string[]args)  {
      Zahl z1 = new Zahl(17);
      Zahl z2 = new Zahl(22);
      Console.WriteLine(“{0}“,Zahl.Sub(z1,z2));  // Ausgabe: -5
      z1.Print();          // Ausgabe: 17
      z2.Print();          //Ausgabe: 22
           }
    }


Moderiert von user profile iconKha: C#-Tags hinzugefügt


Zuletzt bearbeitet von conan2012 am Sa 06.11.10 23:17, insgesamt 1-mal bearbeitet
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 06.11.10 18:29 
Hallo und :welcome:!

Was du brauchst, ist folgendes:

  • einen Konstruktor, der einen int-Wert annimmt,
  • eine statische Methode Sub, die zwei Objekte des Typs Zahl erwartet und
  • eine Methode Print.

Auf jeden dieser Punkte detailliert einzugehen würde eine ganze Weile dauern, daher empfehle ich dir lieber das Galileo Openbook Visual C# 2010, speziell das Kapitel Klassendesign. Es ist sehr ausführlich und ich finde, es lässt sich gut lesen.

Wenn du zu einem speziellen Punkt eine Frage hast, kannst du die hier selbstverständlich stellen.

Grüße,
Yogu
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 06.11.10 21:56 
Hallo,

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
conan2012 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 12.12.10 22:41 
Ich komme bei der Aufgabe nicht weiter. Kann mir einer Sagen warum er mir anstatt “-5“, “Aufgabe1.Zahl“ ausgibt??? Ich möchte die -5 zur Ausgabe haben.
Danke!

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Aufgabe1
{
    class Zahl
    {
        private int wert;

        public Zahl(int a)

        { wert = a; }

        public static Zahl Sub(Zahl z1, Zahl z2)
        {
            Zahl neu = new Zahl(z1.wert - z2.wert);
            
            return neu;

        }

        public void print()
        { Console.WriteLine("{0}", wert); }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Zahl z1 = new Zahl(17);
            Zahl z2 = new Zahl(22);
            Console.WriteLine("{0}", Zahl.Sub(z1, z2));
            z1.print();
            z2.print();
        }
    }
}
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 12.12.10 22:49 
user profile iconconan2012 hat folgendes geschrieben Zum zitierten Posting springen:
Kann mir einer Sagen warum er mir anstatt “-5“, “Aufgabe1.Zahl“ ausgibt???

ausblenden C#-Quelltext
 
35:
36:
37:
/* ... */
            Console.WriteLine("{0}", Zahl.Sub(z1, z2));
            z1.print();
            z2.print();

Du versendest einmal direkt Console.WriteLine und dann die Methode print. Letzteres sollte die Zahlen korrekt ausgeben, oder? print übergibt nämlich die Integer-Werte als Parameter, was zur richtigen Ausgabe führt.

Das Problem bei der ersten Anweisung ist, dass du die Instanzen der Klasse Zahl an Console.WriteLine übergibst. Sie müssen für die Ausgabe in einen String konvertiert werden und da du nicht definiert hast, wie Instanzen vom Typ Zahl in Strings umgewandelt werden, wird einfach der Klassenname genommen.

Was du brauchst ist eine ToString-Methode, die die Konvertierung durchführt:

ausblenden C#-Quelltext
1:
2:
3:
public override string ToString() {
  return wert.ToString();
}

Für diesen Beitrag haben gedankt: conan2012
conan2012 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 12.12.10 23:10 
Zitat:
Du versendest einmal direkt Console.WriteLine und dann die Methode print. Letzteres sollte die Zahlen korrekt ausgeben, oder?

Ja wenn ich in der Main-Methode ein zusätzliches Print einfüge für die Subtraktion gibt er mir den richtigen Wert aus. Nur besagt die Aufgabenstellung das die Main-Methode unverändert bleiben soll. Wo genau muss ich denn Konvertieren?
conan2012 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 12.12.10 23:17 
Es funktioniert jetzt :D
Danke!!!!
conan2012 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 16.12.10 01:14 
Moin! Ich hab da noch ein Problem :( Hab in den letzten Tagen echt viel probiert und weiß nicht mehr weiter. Als erstes hab ich hier folgende Aufgabenstellung:

Zitat:
Menge ist eine Klasse mit einem Array zur Aufnahme von Zahl- und Bruch-Objekten. Anzahl gibt dabei die aktuelle Zahl der aufgenommenen Objekte an. Definieren Sie für diese Klasse einen Konstruktor, dessen Parameter die Größe des werte Arrays festlegt. Definieren Sie den überladenen Operator zur Aufnahme von Objekten in die Menge sowie eine Methode Print zur Ausgabe der Objekte. Print verwendet die Print-Methode der Zahl- bzw. Bruch-Klassen. Was muss in diesen beiden Klassen geändert werden?

class Menge
{
private Zahl[]werte;
int anzahl;
//hier die Member
}
class Program
{
static void Main(string[]args)
{
Menge menge = new Menge(10);
menge += new Zahl(15);
menge += new Bruch(1,2);
menge += new Zahl (27);
menge.Print(); // Ausgabe: 15 ½ 27


}
}


Das hab ich mit ein paar Kommilitonen ausgearbeitet:
Zitat:
class Menge
{
private Zahl[] werte;
int anzahl;
private Bruch[] brueche;
public Menge(int anz)
{
anzahl = anz;
}
public void Print()
{
for (int i = 0; i < anzahl; i++)
{
Console.WriteLine("{0}", werte[i].wert);
Console.WriteLine("{0}/{1}", brueche[i].wert, brueche[i].Nenner);
}
}
}
class Program
{
static void Main(string[] args)
{
Menge menge = new Menge(10);
menge += new Zahl(15);
menge += new Bruch(1, 2);
menge += new Zahl(27);
menge.Print(); // Ausgabe: 15 ½ 27

}
}


wir kommen nicht wirklich weiter. Bin für hilfe Dankbar!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 16.12.10 01:18 
Hallo!

Bitte erstelle für eine neue Frage auch einen neuen Thread. Und dieses Mal wirklich mit besserem Titel :mahn: ;-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.