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ć?
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ś.
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ąć).
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
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.
Czyżby mój problem okazał się nie do rozwiązania?
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
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.