Program liczący pierwiastek C#

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.

1 polubienie

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.

1 polubienie

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:

1 polubienie

Owszem, ale jak wspomniałem nie znam owego języka wiec nie wiem czy obsługa wyjątków jest zaszyta w użytej funkcji (tak, wiem ,nie funkcje tylko metody czy jak to zwał, ale tu działa jak funkcja)

Ponadto nie wiem czy zewnętrzny formularz nie wymusza poprawności danych.

Jeżeli nie to oczywiście należy obsługę wyjątków dopisać przed linią 25.
Ja osobiście odfiltrowałbym podstawy mniejsze lub równe zero.

Tyle że nie wiem czy naszej Koleżance to nie zaciemni sprawy.

Pewnie że używał. I to z kartami fortranowskimi.
Jajca były jak się zapomniało karty o etykiecie do której goto kierowało.

Na etapie testowania otrzymywało się stertę papieru z drukarki wierszowej jako wydruk błędu. I tam na którejś płachcie można było znaleźć przyczynę.

Gorzej, jeżeli etykietę się pomyliło. Jak się miało pecha to program się nie krzaczył tylko liczył jakieś cuda, a szukanie przyczyny to była detektywistyczna praca.

Potem pojawił się “Basic strukturalny” i GOTO stało się passe.