Ĺadny brzuch
Jak w delphi lub c++ zrobić aby wyliczało pierwiastki? Zrobiłem już kalkulator ale, brakuje w nim jednak pierwiastkowania.
Pozdrawiam
Pierwiastek kwadratowy można uzyskać używając biblioteki matematycznej:
funkcja sqrt();
np.:
#include<cmath> int main(){ double d = sqrt(21) return 0; }
To może sie przydać: opis math.h
Aha.... jeszcze apropos komilacji, to byc może konieczne może okazać się kompilowanie z -lm (chociaż zdaje sie gcc robi to automatycznie), co oznacza dołączenie biblioteki matematycznej przy linkowaniu:)
np.
g++ calc.cpp -ocalc -lm -O2 -pipe
:)
(Do Pepsi: Oj czepiasz się:P zresztą zazwyczaj pisze using ..., zresztą bez tego odziwo w gcc, też działa:P)
Użytkownik Kodie edytował ten post 12 luty 2005, 23:44
sqrt
//Edit:
Spóźniłem się :/
Użytkownik Zombiak edytował ten post 12 luty 2005, 17:44
dla kwadratowych funkcja sqrt(int x) nalezy dolaczyc math.h
dla innych proponuje pow(double x,double y) i zamiast y wstawiac odpowiedni wykladnik ulamkowy np 1/2, 1/3 itd.. tez z math.h
Pozdrawiam
heh tez sie spoznilem
Użytkownik nugget edytował ten post 12 luty 2005, 17:54
Z tego co wiem to funkcja pow() służy do potęgowania, a nie pierwiastkowania.
kodie ale zes trzasnal bledow w jednej linii :]
double d = std::sqrt(21.0);
bart_89: x^0.5 = sqrt(x) ;)
1. Chce aby mój kalkulator obliczał również również pierwisatki 3-go, 4-go itd stopnia.
2. A może w czystym c++?? (wiem pewnie, jest to bardzo trudne, i ma bardzo długi kod źrudłowy, ale warto zapytać)
3. Jak to będzie wyglądoło w delphi?
1) juz pisalem funkcja pow(double x, double y)
jesli za y wstawisz 0.5 to masz pierwiastek kwadratowy
jesli wstawisz 0.3333(3) to masz szescienny
jesli wstawisz 0.25 to masz pierwiastek 4-ego stopnia itd...
2)
double pierwiastek (double liczba, double stopien_pierwiastka)
{
return pow(liczba,stopien_pierwiastka);
}
//wsio :)
nalezy tylko jeszcze #include <math.h> no i moze jakas kontrole wprowadzanych wartosci.
3)
niestety na delphi sie nie znam :)
2)
double pierwiastek (double liczba, double stopien_pierwiastka)
{
return pow(liczba,stopien_pierwiastka);
}
//wsio :)
nalezy tylko jeszcze #include <math.h> no i moze jakas kontrole wprowadzanych wartosci.
Ale po co ty tworzysz funkcje ? Przecież masz ją w math.h
w sumie nie trzeba jej tworzyc, ale jesli to ma liczyc pierwiastki, to nalezaloby jeszcze sprawdzac czy zminna y jest w przedziale (0,1) a to juz chyba wygodniej w funcji....
ta funkcja nie jest za dobrze napisana ;)
po pierwsze jesli juz jest argument o nazwie stopien to funkcja powinna przyjmowac rzeczywiscie stopien, czyli 2,3,4,5... a twoja wymusza podawanie ulamka. wierz mi piszac duzy program juz po tygodniu nie bedziesz pamietal tej zasady, a widzac na liscie argumentow nazwe stopien podasz stopien 2 i dostaniesz zle wyniki :]
po drugie brakuje sprawdzania argumentow, przy pierwiastkowaniu podstawa musi byc nieujemna i stopien wiekszy lub rowny 2. funkcja moglaby wygladac tak:
#include <cmath> #include <stdexcept> double pierwiastek(double x, int stopien ) { if ( stopien < 2 ) throw std::logic_error("bledny stopien"); if ( x < 0 ) throw std::logic_error("bledny argument"); return std::pow ( x, (double)1/stopien ); }
a uzycie na przyklad tak:
void __fastcall TForm1::Button1Click(TObject *Sender) { try { ShowMessage(pierwiastek(27,0)); } catch ( std::exception &e) { ShowMessage(e.what()); } }
1. Tylko kod który napisał Pepsi daje się skompilować. Dzięki.
2. A co z Delphi, też by się jakiś kodzik przydał. :)
np.
ShowMessage(FloatToStr(sqrt(4)));
np.
ShowMessage(FloatToStr(sqrt(4)));
Tylko nie wiem jak tego użyć :unsure:
Tylko nie wiem jak tego użyć :unsure:
tzn??
Więcej kodu :excl:Â ;)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Pozdrawiam
Pierwiastek kwadratowy można uzyskać używając biblioteki matematycznej:
funkcja sqrt();
np.:
#include<cmath> int main(){ double d = sqrt(21) return 0; }
To może sie przydać: opis math.h
Aha.... jeszcze apropos komilacji, to byc może konieczne może okazać się kompilowanie z -lm (chociaż zdaje sie gcc robi to automatycznie), co oznacza dołączenie biblioteki matematycznej przy linkowaniu:)
np.
g++ calc.cpp -ocalc -lm -O2 -pipe
:)
(Do Pepsi: Oj czepiasz się:P zresztą zazwyczaj pisze using ..., zresztą bez tego odziwo w gcc, też działa:P)
Użytkownik Kodie edytował ten post 12 luty 2005, 23:44
sqrt
//Edit:
Spóźniłem się :/
Użytkownik Zombiak edytował ten post 12 luty 2005, 17:44
dla kwadratowych funkcja sqrt(int x) nalezy dolaczyc math.h
dla innych proponuje pow(double x,double y) i zamiast y wstawiac odpowiedni wykladnik ulamkowy np 1/2, 1/3 itd.. tez z math.h
Pozdrawiam
heh tez sie spoznilem
Użytkownik nugget edytował ten post 12 luty 2005, 17:54
Z tego co wiem to funkcja pow() służy do potęgowania, a nie pierwiastkowania.
kodie ale zes trzasnal bledow w jednej linii :]
double d = std::sqrt(21.0);
bart_89: x^0.5 = sqrt(x) ;)
1. Chce aby mój kalkulator obliczał również również pierwisatki 3-go, 4-go itd stopnia.
2. A może w czystym c++?? (wiem pewnie, jest to bardzo trudne, i ma bardzo długi kod źrudłowy, ale warto zapytać)
3. Jak to będzie wyglądoło w delphi?
1) juz pisalem funkcja pow(double x, double y)
jesli za y wstawisz 0.5 to masz pierwiastek kwadratowy
jesli wstawisz 0.3333(3) to masz szescienny
jesli wstawisz 0.25 to masz pierwiastek 4-ego stopnia itd...
2)
double pierwiastek (double liczba, double stopien_pierwiastka)
{
return pow(liczba,stopien_pierwiastka);
}
//wsio :)
nalezy tylko jeszcze #include <math.h> no i moze jakas kontrole wprowadzanych wartosci.
3)
niestety na delphi sie nie znam :)
2)
double pierwiastek (double liczba, double stopien_pierwiastka)
{
return pow(liczba,stopien_pierwiastka);
}
//wsio :)
nalezy tylko jeszcze #include <math.h> no i moze jakas kontrole wprowadzanych wartosci.
Ale po co ty tworzysz funkcje ? Przecież masz ją w math.h
w sumie nie trzeba jej tworzyc, ale jesli to ma liczyc pierwiastki, to nalezaloby jeszcze sprawdzac czy zminna y jest w przedziale (0,1) a to juz chyba wygodniej w funcji....
ta funkcja nie jest za dobrze napisana ;)
po pierwsze jesli juz jest argument o nazwie stopien to funkcja powinna przyjmowac rzeczywiscie stopien, czyli 2,3,4,5... a twoja wymusza podawanie ulamka. wierz mi piszac duzy program juz po tygodniu nie bedziesz pamietal tej zasady, a widzac na liscie argumentow nazwe stopien podasz stopien 2 i dostaniesz zle wyniki :]
po drugie brakuje sprawdzania argumentow, przy pierwiastkowaniu podstawa musi byc nieujemna i stopien wiekszy lub rowny 2. funkcja moglaby wygladac tak:
#include <cmath> #include <stdexcept> double pierwiastek(double x, int stopien ) { if ( stopien < 2 ) throw std::logic_error("bledny stopien"); if ( x < 0 ) throw std::logic_error("bledny argument"); return std::pow ( x, (double)1/stopien ); }
a uzycie na przyklad tak:
void __fastcall TForm1::Button1Click(TObject *Sender) { try { ShowMessage(pierwiastek(27,0)); } catch ( std::exception &e) { ShowMessage(e.what()); } }
1. Tylko kod który napisał Pepsi daje się skompilować. Dzięki.
2. A co z Delphi, też by się jakiś kodzik przydał. :)
np.
ShowMessage(FloatToStr(sqrt(4)));
np.
ShowMessage(FloatToStr(sqrt(4)));
Tylko nie wiem jak tego użyć :unsure:
Tylko nie wiem jak tego użyć :unsure:

tzn??

Więcej kodu :excl:Â ;)
