Program liczący pierwiastek C#

Co to za kierunek studiów, tak z ciekawości?

Zapewne socjologia :slight_smile:

  • metody ilościowo-informatyczne przydatne do analizy i opisu zjawisk społecznych.

Hej @dlugamarta
Postaram Ci się pomóc jak potrafię najbardziej :slight_smile:
Przede wszystkim: czym jest funkcja Math.Pow(double,double) - Funkcja ta nie pierwiastkuje tylko zwraca określoną liczbę podniesioną do określonej potęgi. Tak więc:

  • Math.Pow(2, 0) = 1 (2^0)
  • Math.Pow(2, 1) = 2 (2^1)
  • Math.Pow(2, 2) = 4 (2^2)
  • Math.Pow(2, 3) = 8 (2^3)
    itd.

Dlatego jeśli chcesz tą funkcję wykorzystać do pierwiastkowania musisz wykorzystać zależność, którą już wcześniej użytkownicy zaproponowali:

Więc jak wykorzystujesz funkcję: Math.Pow(x,y)
To Twoim x bez zmiany jest z powyższego obrazku a, musisz tylko odpowiednio zapisać wartość y (wręcz odczytać z obrazka)

@dlugamarta jeszcze jedno mi przyszło do głowy :slight_smile: Nie wiem czy na zaliczenie musisz skorzystać z dokładnie tej funkcji, ale może wejdź w link: https://docs.microsoft.com/pl-pl/dotnet/api/system.math.pow?view=net-5.0 i przejrzyj jakie są dostępne funkcje w tej bibliotece - może coś wpadnie Ci w oko :wink: Strona ładnie się tłumaczy na PL :slight_smile: - a jednak nie, bo nie chodzi o pierwiastek kwadratowy, to musisz użyć POW

Nie znęcaj się.

Wiem, jednak ja się powstrzymałem.

Pytanie co Pani ma zrobić. Czy wymyślić algorytm - co właśnie proponujesz - i potem zapisać go w danym języku czy poprawnie użyć istniejącej funkcji.

Obstawiam to drugie chociaż Twoje postawienie sprawy mi się bardziej podoba.

Nie chcę się znęcać. Zafascynowało mnie to, że to ilustracja tego, że żyjemy w czasach, kiedy wszystko jest opinią, także wynik pierwiastkowania liczby a :wink:

ps. a co do zadania, to Math.Sqrt()

A to nie jest pierwiastek kwadratowy?

Dobra, to mnie zmyliło:

Spójrz na linię 23, ona odczytuje zawartość textBox1 i zapisuje do zmiennej “Liczba”

Ale w linii 24 jest coś zupełnie innego. To co tam jest podnosi przekonwertowaną zawartość pola tekstowego 2 do potęgi “1d” (cokolwiek to znaczy) i zapisuje do zmiennej “Stopień” Ja nie podejmuję się zgadywać co z tego wyjdzie

w linii 25 także jest coś poplątane, raz używasz zmiennej “Stopień” jako stopnia pierwiastka a potem jako wyniku działania linii 24

A zatem:

Zmień linię 24 na analogiczną jak 23 czyli
Stopień = Double.Parse(textBox2.Text);

to odczyta zawartość pola tekstowego 2 i zapisze do zmiennej “Stopień”

Teraz możesz już wykonać obliczenie, ale z jednym zastrzeżeniem: jezeli Stopień równa się 0 to wystąpi błąd (dzielenie przez zero). Musisz zatem zadbać aby w polu textBox2 nie mogło pojawić się pojawić 0.

Poza tym zastrzeżeniem poszukiwany wynik to

Math.Pow(Liczba, 1/Stopień);

Bo to podnosi “Liczbę” do potęgi “1/Stopień” (odwrotność Stopnia) czyli pierwiastkuje. (Jak już koledzy wskazywali pierwiastki to potęgi o ułamkowym wykładniku. Można to prosto pokazać ale nie czas tutaj na to)

możesz tego wyrażenia użyć w linii 25 na końcu zamiast owego Stopień.ToString

…+Math.Pow(Liczba,1/Stopień).ToString(“N2”);

co obliczy pierwiastek, przekonwertuje na tekst z dokładnością do dwóch miejsc po przecinku i dopisze na końcu tekstu poprzedzającego.

Mam nadzieję że to tak powinno wyglądać. Przyznam że nie znam tego języka, (moje czasy to jeszcze Fortran, Basic, Pascal). Jeżeli się mylę to myślę że koledzy mnie poprawią . Nie darują, mowy nie ma.

1lajk

Literał wskazujący na typ double. Tak w ramach ciekawostki :slight_smile:

A ma tam on sens?

Dziękuję. Jutro sprawdzę.

W tym kontekście, nie. Tzn jest zbędny, bo ta wartość zostanie uznana za double z automatu Pomijając już podnoszenie wartości do 1. potęgi jak widać w kodzie w pierwszym poście

@KR60 Mam zrobić program w Windows Forms obliczający pierwiastek każdego stopnia.

@KR60 Teraz rozumiem jak to się robi. Świetnie wytłumaczone. działa dzięki.

1lajk

Jeszcze trzeba uwzględnić przypadek dla liczb urojonych jeżeli spróbujesz wyciagnac pierwiastek parzysty z liczby ujemnej oraz dodatkowo sprawdź czy uda Tobie się tak obliczyć np. pierwastek 3 stopnia z (-27) czy funkcja wypluje NaN

Plus weryfikacje czy wpisujesz cyfry

Oraz na dodatek jeżeli wykładowca by się czepiał co w wypadku gdy wpiszesz liczbę większą niż dopuszcza zmienna typu double? (Oczywiście musiałby się postarać :slight_smile: )

[edit]
Jest to odpowiedź do @dlugamarta ale w kontekscie do tego co napisałeś

Jak już wspomniałem nie znam tego języka (a pozostałe pozapominałem), dlatego nie wiedziałem czy nie akceptuje on jakichś zmiennych/stałych globalnych.

W starych językach dawało się zrobić taki myk deklarując “uniwersalne wartości” w programie nadrzędnym, Nie trzeba było wówczas przekazywać ich procedurom podrzędnym poprzez argument ani deklarować wewnątrz procedury. Traktowane były jak "P"i albo prędkość światła “c”.

Szczegółów jednak po kilku dekadach nie pamiętam.

Zmienne globalne były, są i będą :wink:

W C# mamy lepsze relikty :smiley:
Choćby https://docs.microsoft.com/pl-pl/dotnet/csharp/language-reference/keywords/goto
@KR60 na pewno używał, bo to konstrukcja właśnie z “tamtych czasów” :slight_smile:

W BASICu bez goto nie dało się nic sensownego napisać :smiley:

1lajk