• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program liczący pierwiastek C#

VPS Starter Arubacloud
+1 głos
1,629 wizyt
pytanie zadane 14 stycznia 2021 w C# przez Martita Bywalec (2,470 p.)

Robię program  liczący pierwiastki w Windows Forms. Program nieprawidłowo liczy np. √4 = 4 a powinien podać 2. Użytkownik wpisuje w texbox stopień i w drugim texbox liczbę.
Co jest źle? Co mam poprawić?
Oblicz - przycisk
Wynik - Label
Liczba - textbox
Stopień - textbox
Proszę o pomoc. Wykładowca nie wytłumaczył jak to zrobić i nie mieliśmy takich zadań.

1 odpowiedź

+1 głos
odpowiedź 14 stycznia 2021 przez Velta Maniak (51,890 p.)
wybrane 14 stycznia 2021 przez Martita
 
Najlepsza

Tak właściwie, dlaczego dla zmiennej Stopień obliczasz wskazany pierwiastek?

Od nowa, po kolei. Przypisz sobie odpowiednio wartości z kontrolek do zmiennych (koniecznie musisz zmienić ich nazwy, bo z obecnych nic nie wynika!):

double number = Convert.ToDouble(textBox1.Text);
double degree = Convert.ToDouble(textBox2.Text);

Teraz po prostu oblicz potęgę z ułamka 1 / {stopień} przy wypisaniu:

Wynik.Text = $"Pierwiastek z {number} o stopniu {degree} wynosi {Math.Pow(number, Convert.ToDouble(1 / degree))}";

Sprawdź poradnik na temat interpolacji ciągów znaków. Szybsze i wygodniejsze niż ich klasyczne łączenie!

Żeby wyglądało to lepiej, warto wydzielić sobie logikę obliczania pierwiastka dowolnego stopnia jako liczby rzeczywistej do osobnej funkcji:

public static class NthRoot
{
    public static double Calculate(double number, double degree)
    {
        return Math.Pow(number, Convert.ToDouble(1 / degree));
    }
}

Wtedy możesz zapisać to tak:

Wynik.Text = $"Pierwiastek z {number} o stopniu {degree} wynosi {NthRoot.Calculate(number, degree)}";

 

komentarz 14 stycznia 2021 przez Martita Bywalec (2,470 p.)

Teraz rozumiem dzięki. Jeszcze jedno pytanie czy idzie zrobić to sposobem podobnie jak zrobione jest pole koła tak jak w kodzie poniżej.

private void Oblicz_Click(object sender, EventArgs e)
        {
            double r, v;
            r = Double.Parse(textBox1.Text);
            v = 4.0 / 3 * Math.PI * r * r * r;
            Wynik.Text = "Objętość kuli wynosi: " + v.ToString("N4");
        }

Już chyba wiem

komentarz 14 stycznia 2021 przez Velta Maniak (51,890 p.)

Naturalnie. Możesz zacząć od używania Math.Pow, tak jak wcześniej:

v = 4 / 3 * Math.PI * Math.Pow(r, 3);

Możesz oczywiście wydzielić to do osobnej funkcji:

public static class SphereVolume
{
    public static double Calculate(double r)
    {
        return 4 / 3 * Math.PI * Math.Pow(r, 3);
    }
}

Wtedy:

v = SphereVolume.Calculate(r);
komentarz 14 stycznia 2021 przez Martita Bywalec (2,470 p.)
Próbuje dla siebie wybrać jeden sposób programowania stąd te pytania. To już ostatnie pytanie. Czy da się to zrobić ze ToString()?
komentarz 14 stycznia 2021 przez Velta Maniak (51,890 p.)

W jakim sensie? Chcesz przekonwertować wartość liczby rzeczywistej na ciąg znaków?

Naturalnie, bo typ double dziedziczy także po typie Object. Wystarczy dodać jako metodę:

string vStr = SphereVolume.Calculate(r)
    .ToString();

 

komentarz 14 stycznia 2021 przez Martita Bywalec (2,470 p.)

double number = Double.Parse(textbox1.Text);
double deggre = 
Wynik.Text = "Pierwiastek wynosi " + deggre.ToString();

O coś takiego jak powyżej mi chodzi tylko kod nie dokończony. Tym sposobem zrobiłam pole figur.

Podobne pytania

+1 głos
1 odpowiedź 101 wizyt
pytanie zadane 2 czerwca 2021 w C# przez mateusz45 Gaduła (3,240 p.)
0 głosów
0 odpowiedzi 108 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...