Problem z pierwiastkowaniem

0

Siema,
piszę program w c# i chciałbym, aby po podstawieniu w działaniu Math.Sqrt(3) nie obliczało mi pierwiastka z trzech tylko w odpowiednim miejscu w działaniu wstawiało go jako nieobliczony. Jak takie coś uzyskać?

1

Hmm, mógłbyś wyjaśnić dokładniej o co Ci chodzi? Math.Sqrt(3) zawsze będzie obliczało pierwiastek z trzech i z tym raczej nic nie zrobimy. Może podaj przykład tego co chcesz osiągnąć czy coś.

0

Musiałbyś napisać własny parser wyrażeń lub skorzystać z czegoś gotowego - inaczej się nie da (o ile dobrze zrozumiałem, co starasz się osiągnąć).

0

Przepraszam, jeżeli niedokładnie opisałem.
Piszę dość złożony program matematyczny i potrzebuję, aby w wyniku działania, w którym obecny jest pierwiastek (w tym wypadku z trzech) program nie traktował go jako ~1,73 tylko w odpowiednim miejscu w działaniu wstawiał pierwiastek(symbol) z trzech. Na przykład: pole trójkąta równobocznego to a^2 * pierwiastek z 3 / 4. Chciałbym aby np. dla a= 3 program przedstawił wynik 3 pierwiastki z 3 / 2 a nie 2,59.... W ostateczności chciałem to rozwiązać zmienną double, która powinna wynik zaokrąglać do dwóch miejsc po przecinku- niestety takie coś się nie dzieje. Myślę, że teraz to dokładniej wyjaśniłem.
Pozdrawiam

0

Widzę, że bez kodu się nie obejdzie...

double a = double.Parse(textBox1.Text);
                    double H = double.Parse(textBox4.Text);
                    double pp = (a * a * Math.Sqrt(3)) / 4;
                    double pb = 3 * a * H;
                    double pc = 2 * pp + pb;
                    double V = pp * H;

                    if (a > 0 && H > 0)
                    {
                        label7.Text = "Pole graniastosłupa wynosi " + pc.ToString();
                        label8.Text = "Objętość graniastosłupa wynosi " + V.ToString();
                    }
                    else
                    {
                        label7.Text = "Podano błędne wymiary";
                        label8.Text = "Podano błędne wymiary";
                    }

Program jest pisany na Windows Form Application. Teraz co chcę osiągnąć. Jak widać w zmiennej "pp" występuje pierwiastek z trzech. Jako, że jest to liczba niewymierna to chciałbym aby program pomijał obliczanie go i wstawił w wyniku jako "nieobliczony" - pp = (a²**√3**) / 4. Za "a" jest podstawiane to co użytkownik wpisze w textBox1, a pierwiastek z trzech jest "stały". Mam nadzieję, że tym razem wszystko jest zrozumiałe.
Jeżeli takie coś nie jest możliwe do uzyskania to chciałbym chociaż, aby zmienna "pc" wyświetlała mi wynik z max dwoma liczbami po przecinku, a nie jak to jest obecnie przynajmniej 10.
Pozdrawiam.

0

Czyżby mój problem okazał się nie do rozwiązania?

0

Użyj string format, to co się da skrócić to skróć.
Np.

int a = 4;
string mianownik = "" // bo a się skróci z 4, inaczej mogło być np. @"/5"
string licznik = a.ToString();
string wynik = string.Format("{0}sqrt(3){1}", licznik, mianownik);

Oczywiście swoje rozwiązanie musisz zrobić uniwersalne

3
Zielonkawy napisał(a):

Czyżby mój problem okazał się nie do rozwiązania?

Tak, Twój problem jest nierozwiązywalny na tym forum. Jesteśmy programistami, nie nauczycielami czytania.

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