[C#] Niedziałający kod

0

Witam
Czy może ktoś zerknąc na kod i powiedzieć co jest w nim nie tak??? Jest to kod który jest przekształcony z Javy (tam działał). Natomiast w C# nie chce:/ Chciałem tu zastosować przeciążenie operatorów i chyba tu tkwi problem). A oto kodzik
[code]
using System;
using System.Collections.Generic;
using System.Text;

class Fala
{
protected internal double y_max, y_min, wysokosc;
public static Fala operator *(Fala a, Fala b)
{
Fala f = new Fala();
f = a * b;
return f;
}

public static Fala operator /(Fala a, Fala b)
{
    Fala f = new Fala();
    f = a / b;
    return f;
}

internal Fala(double a, double b)
{
    // konstruktor 
    this.y_max = a;
    this.y_min = b;
}

public virtual double wysokoscFali()
{
    return wysokosc = (y_max - y_min); // funkcja obliczajaca wysokosc fali
}

public virtual double wysokoscF()
{
    return wysokosc;
}

}

class Prostokat : Fala
{
internal Prostokat(double a, double b)
: base(a, b)
{
}

public virtual double wysokoscProstokatu()
{
    return wysokosc = (3 * (y_max - y_min) / 4); // funkcja obliczajaca wysokosc prostokatu
}

}

class Pila : Fala
{

public Pila(double a, double b)
    : base(a, b)
{
}

public virtual double wysokoscPily()
{
    // funkcja obliczajaca wysokosc pily
    return wysokosc = ((y_max - y_min) / 2);
}

}

public class RRR
{

public static void Main(System.String[] args)
{
    Fala f = new Fala(2, 1);
    Pila p = new Pila(2, 1);
    Prostokat p1 = new Prostokat(2, 1);

    System.Console.Out.WriteLine("Wysokosc fali = " + f.wysokoscFali());
    System.Console.Out.WriteLine("Wysokosc Pily = " + p.wysokoscPily());
    System.Console.Out.WriteLine("Wysokosc Prostokatu = " + p1.wysokoscProstokatu());

    System.Console.Out.WriteLine("Iloczyn wysokosci Fali i Prostokatu = " + (f*p).wysokoscF());
    System.Console.Out.WriteLine("Iloczyn wysokosci Pily i Prostokatu = " + (p*p1).wysokoscF());
    System.Console.Out.WriteLine("Iloraz wysokosci Pily i Prostokatu = " + (p/p1).wysokoscF());
    System.Console.Out.WriteLine("Iloraz wysokosci Fali i Prostokatu = " + (f/p1()));
    System.Console.Out.WriteLine("Iloraz wysokosci Prostokatu i Fali = " + (p1/f.wysokoscF()));
    System.Console.Read();
}

}[/code]

0

public static Fala operator *(Fala a, Fala b)
{
Fala f = new Fala();
f = a * b;
return f;
}

Hmm, wydaje mi się, że to jest bez sensu.

0

Powiem tak miałem ten kod napisać w 3 językach (C++, Java, C#). Są to podstawy z języka obiektowego. Dlatego też w C++ <ort>skożystałem </ort>z przeładowania operatorów, (w javie tego nie ma), ale ponoć w C# są dlatego też próbowałem to <ort>wykożystać </ort>tu, no ale jak widać niestety mi się nie udało. Może ktoświe jak to zrobić??

0

wydaje mi się, że masz zły konstruktor, błędy jakie zwraca kompilator są najlepszą pomocą
jako przykład operatora masz tu pare stron o przeciążaniu http://www.centrumxp.pl/dotNet/1050,1,04_Przeciążanie_metod_i_konstruktorów.aspx http://www.staff.amu.edu.pl/~ttomek/jpr/cwiczenia12.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1