Zwracanie kilku zmiennych z metody

0

Cześć, mam taką treść zadania:

"Napisać program, który czyta liczbę i przekazuje ją do metody. Metoda zwraca tę liczbę wraz z jej kwadratem (potęga ^ 2) oraz pierwiastkiem. Wyświetlić w metodzie Main: wartość początkową, kwadrat oraz pierwiastek kwadratowy z tej liczby. (Skorzystać w obliczeniach z klasy Math)"

Wszystko musi być w jednej metodzie. Wygląda więc na to, że trzeba użyć referencji. Stworzyłem więc coś takiego:

static void Main(string[] args)
        {
            Console.Write("Wprowadź liczbę x = ");
            int x = int.Parse(Console.ReadLine());

            double sqrt = 0;
            double pow = 0;

            sqrt = oblicz(ref pow, x);

            Console.Write("\nWynik: \nWartość wprowadzona: " + x + "\nSQRT: " + sqrt + "\nPOW: " + pow);

            Console.ReadKey();
        }

        static double oblicz(ref double y, int z)
        {
            y = Math.Pow(z, 2);
            return Math.Sqrt(z);
        }

Czy to oby na pewno dobre rozwiązanie? Ja widzę to tak:

  1. Wprowadzam x
  2. Do metody przesyłam zmienną ref pow i wprowadzony x - dlatego, że w jednej metodzie muszą być wykonane dwa działania.
  3. Metoda więc obliczy pow = Math.Pow(x, 2) i do main prześle zmienioną wartość, a przez return przypiszemy Math.Sqrt(x) do zmiennej sqrt.

Może tłumaczenie nie za dobre, ale przez kod może skumacie co miałem na myśli. Tak na prawdę, nie wiem czy to dobre rozwiązanie i czy dobrze rozumiem referencje w metodach. Czy ktoś ma chwile i jest mi w stanie odpowiedzieć? Pozdrawiam!

1
struct Position
{
  public double X { get { return Math.Sqrt(Z); } }
  public double Y { get { return (double)Z * Z; } }
  public double Z { get; set; }
}

EDIT (specjalnie dla @somekind):

struct Position
{
  public Position() {}
  public Position(double x, double y, double z) { X = x; Y = y; Z = z; }
  public static Position Oblicz(double z) { return new Position(Math.Sqrt(z), (double)z * z, z); }
  public double X { get; private set; }
  public double Y { get; private set; }
  public double Z { get; private set; }
}
0
krwq napisał(a):
struct Position
{
  public double X { get { return Math.Sqrt(Z); } }
  public double Y { get { return (double)Z * Z; } }
  public double Z { get; set; }
}

nie za bardzo rozumiem, ale + za chęci

rozumiem, że moje rozwiązanie jest złe? Co prawda wynik jest dobry, chciałbym tylko wiedzieć jak wygląda ten kod pod kątem poprawności

2
dexxxx napisał(a):

Co prawda wynik jest dobry, chciałbym tylko wiedzieć jak wygląda ten kod pod kontem poprawności

A poprawność ma już 18 lat skończone, że może konto założyć?

Możesz użyć ref czy out, ale lepiej tak, jak napisał @krwq, utwórz własną klasę i niech Twoja metoda zwraca obiekt tej klasy.

1

Poprawne jest wszystko co zwraca poprawne wyniki. Napisz tak jak umiesz i bedzie git. Upieknianiem kodu zajmij sie jak juz ogarniesz podstawy, a poki co skup sie na ich ogarnianiu

1

Co do zwracania kilku wartości przez metodę, dzięki słowom kluczowym out i ref podsyłam swój artykuł http://4programmers.net/C_sharp/Metody.
Przy okazji, będę wdzięczny za opinie pod artykułem osób niezaawansowanych czy jest dla nich zrozumiały a osób zaawansowanych o sprawdzenie go pod kątem merytorycznym.

0
somekind napisał(a):

A poprawność ma już 18 lat skończone, że może konto założyć?

Wybacz, mały błąd. Poprawione :)

Varran napisał(a):

Co do zwracania kilku wartości przez metodę, dzięki słowom kluczowym out i ref podsyłam swój artykuł http://4programmers.net/C_sharp/Metody.
Przy okazji, będę wdzięczny za opinie pod artykułem osób niezaawansowanych czy jest dla nich zrozumiały a osób zaawansowanych o sprawdzenie go pod kątem merytorycznym.

Dziękuję. Sprawdzę na pewno :)

Wszystkim dziękuję. Zostawiam plusy. Pozdrawiam.

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