sqrt problem

0

Mam problem a mianowicie nie działa mi polecenie
wyswietlacz->Text=(sqrt(Double:: Parse(wyswietlacz->Text))).ToString();

mam

#define _USE_MATH_DEFINES
#include <math.h> 

Polecenie to zastąpiłem
wyswietlacz->Text=(pow(Double::Parse(wyswietlacz->Text),0.5)).ToString();

Lecz nie mam pojęcia czemu nie działa mi zwykłe polecenie do pierwiastka . Wczesniej działało .

0

Ale że co? To nie ma prawa się skompilować.

0

Nie wiem niby czemu ma się nie kompilować wszystko jest napisane poprawnie

0

Jestem początkowym programistą ,więc proszę o naprowadzenie mnie na dobrą ściężkę zamiast komentarzy w stylu postu wyżej.

0

Kolega powyżej nie zauważył że chodzi o C++\CLI. A ty o tym nie wspomniałeś. To wcale nie takie oczywiste...

Sprawdź czy poprawnie wykonuje się takie coś:

String^ s =(sqrt(Double::Parse("12,34"))).ToString();

Oczywiście zakładam że math.h masz zainkludowane.

Jeśli nie, napisz co to znaczy "nie działa"

0
korytko94 napisał(a)

mam

#define _USE_MATH_DEFINES
#include <math.h> 

Więc chyba ma no nie ? No i do tego pow() mu działa.
Spróbuj usunąć białe znaki (whitespace) po :: ale nie sądzę, by miało to coś do rzeczy...

0

String^ s =(sqrt(Double::Parse("12,34"))).ToString();
nie działa i wyswietla taki sam komunikat jak przy
wyswietlacz->Text=(sqrt(Double:: Parse(wyswietlacz->Text))).ToString();

1>e:\programy bt\kalkulator\kalkulator\Form1.h(971): error C2064: term does not evaluate to a function taking 1 arguments
1>e:\programy bt\kalkulator\kalkulator\Form1.h(971): error C2228: left of '.ToString' must have class/struct/union

0

I tam nie ma żadnych spacji tylko tak wyswietla 4programmers:D

0

Yhym. Chciał bym zauważyć, że sqrt zwraca double, które nie ma składowych z racji, że jest typem podstawowym, a nie klasą.

0
tuno12 napisał(a)

.Spróbuj usunąć białe znaki (whitespace)

po cóż to "whitespace" w nawiasie? Chciałeś się pochwalić? Brawo.

0

@winterfresh - nie jestem na 100% pewien (rzadko piszę w C++\CLI) ale tu chyba zachodzi automatyczny boxing:
<code=cppdouble d = 2;
Console::WriteLine(d.GetType());

Wyświetli System::Double, za to

```cpp
Console::WriteLine(2.GetType());

(Co w C# jest 100% valid) wprowadza kompilator w panikę ('bad suffix on number', 'missing ')' before identifier 'GetType', etc).

@tuno - Więc chyba ma no nie ?
Mi podobny błąd jak jemu wyskakuje wtedy kiedy nie mam zainkludowanego <math.h>. A kod z którym autor ma problem mi doskonale działa.

@autor - w takim razie czy przy utworzeniu nowego, konsolowego projektu CLR na domyślnych opcjach i wklejeniu do niego poniższego kodu dalej masz błędy?

#include "stdafx.h"
#include <math.h>

using namespace System;

int main(array<System::String ^> ^args)
{
	String^ s =(sqrt(Double::Parse("4"))).ToString(); 
	Console::WriteLine(s);

	Console::ReadLine();
    return 0;
}

edit: Chyba mam :) Masz gdzieś w zasięgu zmienną nazwaną sqrt? wygląda na to że to może powodować taki błąd.

0

a może by spróbować Math::Sqrt() zamiast sqrt()?

0

Dzięki "MSM"
Twoje poszlaki doprowadziły mnie do senda błędu a mianowicie jedną z kontrolek nazwałem sqrt:D
A Azarien podał mi kolejny sposób na obliczenie pierwiastka kwadratowego :D
Temat uważam za zamknięty .

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