Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Dział z pytaniami o absolutne podstawy programowania w C# (dla początkujących).

Moderator: xxSlayeRxx

Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Sponsor

Sponsor
 

Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Postprzez szumo22 » Pn cze 02, 2014 9:20 am

Witam,
Jestem nowy także się przedstawię. Nazywam się Patryk, i do czynienia z C# mam od marca.
Mam teraz do zrobienia zadanie:

1.Stwórz klasę XYZ z polami publicznymi X i Y (double) z konstruktorem dwuargumentowym.
2.Stwórz klasę ABC z polem publicznym Współrzędne typu XYZ z metodami:
np. Mnożenie przez skalar wektora- zwraca wektor który jest wynikiem przemnożenia wektora XY przez skalar - powinna przyjmować jeden argument.
3. Stwórz program testowy wywołujący wszystkie metody.

Napisałem takie coś i nie wiem co jest źle. Tzn. wiem tyle że coś jest nie tak z polem publicznym Współrzędne (typu XYZ)
Kod: Zaznacz cały
class XYZ
    {
        public double X;
        public double Y;
        public Punkt(double a, double b)
        {
            this.X = a;
            this.Y = b;
        }
    }
    class ABC
    {
        public XYZ Wsplrzedne;
        public double Skalar()
        {
            return Math.Sqrt(Wsplrzedne.X * Wsplrzedne.X + Wsplrzedne.Y * Wsplrzedne.Y)*4;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            XYZ p = new XYZ(1, 2);
            ABC w = new ABC();
            Console.WriteLine("Mn przez skalar: {0}", w.Skalar());
        }
    }
szumo22
New member
 
Posty: 6
Dołączył(a): Pn cze 02, 2014 9:08 am

Re: Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Postprzez xxSlayeRxx » Pn cze 02, 2014 9:55 am

w.Wsplrzedne = p;
xxSlayeRxx
Member
 
Posty: 661
Dołączył(a): Pt lip 08, 2011 10:24 pm

Re: Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Postprzez szumo22 » Pn cze 02, 2014 10:33 am

dobra zrobiłem takie coś:

Kod: Zaznacz cały
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Punkt
    {
        public double X;
        public double Y;
        public Punkt(double a, double b)
        {
            this.X = a;
            this.Y = b;
        }
    }
    class Wektor
    {
        public Punkt Wsplrzedne;
        public double Skalar()
        {
            return 4*(Math.Sqrt(Wsplrzedne.X * Wsplrzedne.X + Wsplrzedne.Y * Wsplrzedne.Y));
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Wektor w = new Wektor();
            w.Wsplrzedne = new Punkt(1,2);
            Console.WriteLine("Mn przez skalar: {0}", w.Skalar());
            Console.ReadKey();
        }
    }
}


tylko jak zrobić żeby w mnożeniu przez skalar zrobić zamiast 4 dać jakąś zmienną z, i żeby ta zmienna z była deklarowana w programie?
szumo22
New member
 
Posty: 6
Dołączył(a): Pn cze 02, 2014 9:08 am

Re: Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Postprzez szumo22 » Pn cze 02, 2014 10:44 am

Wyszło mi takie coś:

Kod: Zaznacz cały
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Punkt
    {
        public double X;
        public double Y;
        public Punkt(double a, double b)
        {
            this.X = a;
            this.Y = b;
        }
    }
    class Wektor
    {
        public Punkt Wsplrzedne;
        public int Z;
        public double Skalar()
        {
            return Z*(Math.Sqrt(Wsplrzedne.X * Wsplrzedne.X + Wsplrzedne.Y * Wsplrzedne.Y));
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Wektor w = new Wektor();
            w.Z = int.Parse(Console.ReadLine());
            w.Wsplrzedne = new Punkt(1,2);
            Console.WriteLine("Mn przez skalar: {0}", w.Skalar());
            Console.ReadKey();
        }
    }
}


Tylko teraz się okazuje że źle mam ten skalar. Bo ten skalar to nie jest iczba * moduł, tylko liczba * współrzędna X , liczba * współrzędna Y np. Skalar * wektor = (skalra * X, skalar * Y). I teraz nie wiem jak to mam zwrócić.
I jeszcze mam jeden podpunkt że mam sumować wektory w metodzie. Samo działanie wygląda tak:
A + B = (xA + xB, yA+yB), gdzie A i B to są te wektory. I mam to zrobić dla 3 wektorów
szumo22
New member
 
Posty: 6
Dołączył(a): Pn cze 02, 2014 9:08 am

Re: Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Postprzez Eldier » Pn cze 02, 2014 2:52 pm

Zamiast zawracać double musisz zwrócić wektor.
Masz w zadaniu nawet napisane.
Funkcja będzie wyglądała tak:
public Wektor Skalar(int skalar)
{
//ciało metody
}
Masz tak modyfikator dostępu, później typ zwracany, nazwa funkcji, w nawiasie parametry, może być ich kilka, tak jak w przypadku konstruktora.
Dla trzech wektorów musisz jako argumenty przekazać te wektory w parametrach funkcji.
Eldier
Member
 
Posty: 41
Dołączył(a): Pt gru 20, 2013 5:34 pm

Re: Klasa Punkt, klasa Wektor (z pole publicznym typu Punkt)

Sponsors

Sponsor
 


Powrót do Newbie

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google Adsense [Bot] i 8 gości

cron