Proszę o pomoc w zadaniu (OOP) - lekka modyfikacja kodu

0

Zmodyfikuj poniższy kod, aby dawał prawidłowe wyniki również dla ujemnych współrzędnych x oraz by poprawnie obsługiwany był punkt o współrzędnych (0,0).** Nie zmieniaj zastosowanych wzorów.**

namespace ConsoleApp64
{
    class Punkt
    {
        private double sinusalfa;
        private double r;
        public int x; public int y;

        public int PobierzX()
        {
            double x = r * Math.Sqrt(1 - sinusalfa * sinusalfa);
            return (int)x;
        }

        public int PobierzY()
        {
            double y = r * sinusalfa;
            return (int)y;
        }

        public void UstawX(int wspX)
        {
            int x = wspX;
            int y = PobierzY();
            r = Math.Sqrt(x * x + y * y);
            sinusalfa = y / r;
        }

        public void UstawY(int wspY)
        {
            int x = PobierzX();
            int y = wspY;
            r = Math.Sqrt(x * x + y * y);
            sinusalfa = y / r;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Punkt pkt = new Punkt();
        }
    }
}
0

Za 9,90zł się podejmę.

1

Wydaje mi się, że wystarczyło zakomentować tylko dwie linijki w funkcjach UstawX i UstawY, dlatego że pola x i y w klasie Punkt w ogóle nie były wykorzystywane. Teraz jeśli stworzymy obiekt klasy Punkt i wywołamy po kolei obie metody to w efekcie dostaniemy prawidłowy obiekt, czyli podane współrzędne x i y oraz prawidłowo obliczone przyprostokątna r i sinusalfa. Przy okazji sinus to nie stosunek y/r tylko x/r, ale w treści jest podane, żeby nie zmieniać wzorów. Sprawdzone na wartościach dodatnich, ujemnych oraz 0.

   class Program
    {
        class Punkt
        {
            private double sinusalfa;
            private double r;
            public int x; 
            public int y;

            public int PobierzX()
            {
                double x = r * Math.Sqrt(1 - sinusalfa * sinusalfa);
                return (int)x;
            }

            public int PobierzY()
            {
                double y = r * sinusalfa;
                return (int)y;
            }

            public void UstawX(int wspX)
            {
                /*int*/ x = wspX;
                int y = PobierzY();

                r = Math.Sqrt(x * x + y * y);
                sinusalfa = y / r;
            }

            public void UstawY(int wspY)
            {
                int x = PobierzX();
                /*int*/ y = wspY;

                r = Math.Sqrt(x * x + y * y);
                sinusalfa = y / r;
            }

        }

        static void Main(string[] args)
        {
            int x = 8;
            int y = 5; //przykładowe wartości

            Punkt pkt = new Punkt();

            pkt.UstawX(x);
            pkt.UstawY(y);

            Console.ReadKey();
        }
    }

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