ďťż

Ł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
  •