Prośba o sprawdzenie poprawności wykonania zadania

0

Cześć! Proszę o sprawdzenie, czy kod napisany jest zgodnie z treścią zadania. Program działa poprawnie, ale chciałbym mieć pewność, że odpowiednio przekazałem argumenty za pomocą ref i out.

Jestem zupełnie początkujący, więc przepraszam za banalność zadania ;) I jeśli to forum nie służy do tego typu postów, to nie bijcie, tylko dajcie znać, gdzie lepiej szukać w takich przypadkach pomocy ;)

Zadanie:
Napisz program, który ma znaleźć współrzędne punktu po przesunięciu o dany wektor. W metodzie Main() wczytaj od użytkownika współrzędne punktu A oraz zadeklaruj
współrzędne wektora wek [3, 2], a następnie wywołaj metodę o nazwie Przesun(), która ma przesunąć punkt A o wektor wek (dodać odpowiednie współrzędne). Współrzędne punktu (jako dwie zmienne typu double) mają zostać przesłane do tej metody przez referencję, a współrzędne wektora (także jako dwie zmienne typu double) przez wartość. Metoda Przesun() ma nic nie zwracać (void), aktualne współrzędne punktu mają być pamiętane dzięki użyciu argumentów przesyłanych przez referencje. Program ma wyświetlić współrzędne punktu po przesunięciu o wektor wek.

Moje rozwiązanie:

static void Main(string[] args)
        {
            double a, b, x, y;   
             a = double.Parse(Console.ReadLine());
             b = double.Parse(Console.ReadLine());


            Console.WriteLine("Punkt o współrzędnych: ({0}, {1}),", a, b);
            Przesuń(ref a, ref b, out x, out y);
            
            Console.WriteLine("po przesunięciu o wektor ({0}, {1})", x, y);
            Console.WriteLine("będzie miał współrzędne: ({0}, {1}).", a,b);
            
            Console.ReadKey();

        }

        static void Przesuń(ref double a, ref double b, out double x, out double y)
        {
            x = 3;
            y = 2; 
            a = a + x;
            b = b + y;
           
        }
1
  1. Miales zadeklarowac i przypisać wartość tym punktom wektora w metodzie Main. Nie robisz tego - deklarujesz ale nie przypisujesz.
  2. Po co ci te out przy wartosciach wektora? Wywal to.
  3. Tak samo wywal to przypisanie do x,y w metodzie Przesuń
0

Dzięki! Czy teraz będzie dobrze?

double a, b, x = 3, y = 2;   
             a = double.Parse(Console.ReadLine());
             b = double.Parse(Console.ReadLine());


            Console.WriteLine("Punkt o współrzędnych: ({0}, {1}),", a, b);
            Przesuń(ref a, ref b, x, y);
            
            Console.WriteLine("po przesunięciu o wektor ({0}, {1})", x, y);
            Console.WriteLine("będzie miał współrzędne: ({0}, {1}).", a, b);
            
            Console.ReadKey();

        }

        static void Przesuń(ref double a, ref double b, double x, double y)
        {
            
            a = a + x;
            b = b + y;
           
        }

1

Tak, dobrze.

0

Na mój gust zadanie niedostatecznie debilnie wyraźnie określa "punkt" czy "wektor".
Dla mnie to klasy/struktury.

Robienie tego na kilku atomowych liczbach to doopa, basic atari, 1985
Anty-dydaktyka

0

Najwyraźniej na takim etapie właśnie jestem. Nauczyło mnie to czegoś, więc czy aż taka anty-dydaktyka - nie wydaje mi się.

0
humanbazooka napisał(a):

Najwyraźniej na takim etapie właśnie jestem. Nauczyło mnie to czegoś, więc czy aż taka anty-dydaktyka - nie wydaje mi się.

Syntaxu języka, OK.
Ale oddaliło od porządnych wzorów rozwiazywania problemów. Problem jest już w zadaniu, niektórzy to powinni krowy paść a nie uczyć

Zwłaszcza, ze pcha w bardzo rzadko używane ref, to też antydydaktyka.
Wyobraź sobie w kilkunastu latach nie użyłem tego słowa

0

@humanbazooka:

Podoba mi się, że pracujesz osobiście (choć MSZ pod kiepskim nauczycielem).
Najczęściej tu goście chcą gotowce

0

W podręczniku, z którego się uczę nie było napisane, żeby nie uczyć się ref , bo jest to rzadko używane... Pojawiło się zadanie, więc chciałem mieć pewność, że dobrze to zrozumiałem.

1

Oczywiście warto wiedzieć, że ref i out istnieją i jak działają. ref jest praktycznie nieużywane, out częsciej w jakiś patternach typu TryParse. Ogólnie możesz przyjąć, żeby nie używać żadnego, chyba że jesteś na to skazany.

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