» »

[C#] Preoblaganje operatorjev

[C#] Preoblaganje operatorjev

GangStarr ::

Pozdravljeni!
Potrebujem vašo pomoč. Naredil sem program z razredom za dvodimenzionalno točko. Težavo imam pri metodi, ki vrne razdaljo med dvema točkama (RazdaljaTocka). Kaj moram narediti, da je izpis lahko takšen:
Console.Write( X1.RazdaljaTocka( X2 )
Poskušal sem že s preoblaganjem operatorjev, vendar mi ne uspe...

Razred ima naslednje lastnosti:
- 2 podatka (celi števili),
- privzeti, kopirni in pretvorbeni konstruktor,
- metodo RazdaljaIzhodisce, ki izračuna razdaljo od koordinatnega izhodišča do točke,
- metodo RazdaljaTocka, ki izračuna razdaljo med dvema točkama,
- metodo, ki spremeni koordinato x,
- metodo, ki vrne koordinato x,
- lastnost, ki spremeni in vrne koordinato y,
- metodo za izpis obeh koordinat.

V glavnem programu:
- štiri točke A, B, C in D
- pri prvi točki - privzete vrednosti, za drugo in tretjo točko vnese vrednosti uporabnik. Četrta je kopija točke B.
- izpis točke A in x koordinate točke C
- sprememba koordinat točke C na vrednost (3,-1)
- izpis razdalje med izhodiščem in točko C
- izpis razdalje med točko A in točko B
- polje E za 15 točk, kjer imajo vse točke vrednost (10, 10)
- polje F za 20 točk, z vrednostmi v prvi točki (1, 1), v drugi (2,2)...

Koda:
class Tocka
    {
        private int x;
        private int y;

        public Tocka()
        {
            x = 2;
            y = 5;
        }

        public Tocka(int a, int b)
        {
            this.x = a;
            this.y = b;
        }
        public Tocka(Tocka A)
        {
            this.x = A.x;
            this.y = A.y;
        }

        public void RazdaljaIzhodisce()
        {
            int izhodisceX = 0;
            int izhodisceY = 0;

            int razdaljaX = izhodisceX + x;
            int razdaljaY = izhodisceY + y;

            Console.WriteLine(razdaljaX + ", " + razdaljaY);
        }

        public void RazdaljaTocka()
        {
           /*??????????????????????????????*/
        }

        public void SpremeniX(int X)
        {
            this.x = X;
        }

        public void IzpisX()
        {
            Console.WriteLine(x);
        }

        public int KoordinataY
        {
            get
            {
                return this.y;
            }
            set
            {
                this.y = value; 
            }
        }

        public void IzpisTocke()
        {
            Console.WriteLine("Koordinata x: " + x);
            Console.WriteLine("Koordinata y: " + y);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Vnesi vrednost koordinate x pri točki B: ");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Vnesi vrednost koordinate y pri točki B: ");
            int b = int.Parse(Console.ReadLine());

            Console.WriteLine("Vnesi vrednost koordinate x pri točki C: ");
            int c = int.Parse(Console.ReadLine());
            Console.WriteLine("Vnesi vrednost koordinate y pri točki C: ");
            int d = int.Parse(Console.ReadLine());

            Tocka A = new Tocka();
            Tocka B = new Tocka(a, b);
            Tocka C = new Tocka(c, d);
            Tocka D = new Tocka(B);

            A.IzpisTocke();
            C.IzpisX();
            C.SpremeniX(3);
            C.KoordinataY = -1;
            C.RazdaljaIzhodisce();

            Tocka[] E = new Tocka[15];
            for (int i = 0; i < E.Length; i++)
            {
                E[i] = new Tocka();
                E[i].SpremeniX(10);
                E[i].KoordinataY = 10;
            }
            
            Tocka[] F = new Tocka[20];
            for (int i = 0; i < F.Length; i++)
            {
                for (int j = 1; j <= F.Length; j++)
                {
                    F[i] = new Tocka();
                    F[i].SpremeniX(j);
                    F[i].KoordinataY = j;
                }
            }
        }
    }


Hvala!!!
Semper Fi

Ziga Dolhar ::

Tole mi ni povsem jasno. Bi rad "preobložil" (overloadal?) operator, ali metodo?

Če metodo - RazdaljaTocka() zgleda kot edina verzija metode (pa še ta je prazna in ima vprašaje notr). Si zihr, da bi jo rad overloadal, al bi rad le napisal notri kodo, ki bo izračunala razdaljo med dvema točkama? :)
https://dolhar.si/

amacar ::

public void RazdaljaIzhodisce()
        {
            int izhodisceX = 0;
            int izhodisceY = 0;
 
            int razdaljaX = izhodisceX + x;
            int razdaljaY = izhodisceY + y;
 
            Console.WriteLine(razdaljaX + ", " + razdaljaY);
        }

Tole ni pravilna koda za razdaljo do izhodišča! (http://www.purplemath.com/modules/distf... )


Pri metodi RazdaljaTocka() izračunaj na enak način (http://www.purplemath.com/modules/distf... ) ampak metoda naj vrne string ali double...

Zgodovina sprememb…

  • spremenil: amacar ()

GangStarr ::

Ne, zdej nisem več zihr če bi jo overloadal :P Bom raj z navadno kodo...
Semper Fi

DaMachk ::

Overloadaš lahko metodo, ki že obstaja v nadrazredu...
Če jo zgolj napraviš, je to običajna deklaracija.
No signiature, as you see..


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

križci krožci c # (strani: 1 2 )

Oddelek: Programiranje
5012890 (11549) Yacked2
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81733 (1678) Cvenemir
»

c sharp LinkedList - Naloga

Oddelek: Programiranje
91987 (1938) Msatir
»

Konec programa

Oddelek: Programiranje
101082 (864) alexa-lol
»

Java Objekti

Oddelek: Programiranje
102359 (2053) Mavrik

Več podobnih tem