Liczba całkowita w c++
- Sokół
- Użytkownik
- Posty: 451
- Rejestracja: 17 wrz 2006, o 19:22
- Płeć: Mężczyzna
- Lokalizacja: Zielona Góra
- Podziękował: 15 razy
- Pomógł: 55 razy
Liczba całkowita w c++
Jak sprawdzić czy wartość zmiennej x typu np. double jest liczbą całkowitą? Tzn. wiem, ze double i float to przechowuja liczby zmiennoprzecinkowe, ale zmienna x to bedzie pierwiastek jakies liczby calkowitej i nie moge z gory przewidziec czy to bedzie liczba calkowita czy niewymierna.
-
- Użytkownik
- Posty: 174
- Rejestracja: 13 mar 2006, o 20:44
- Płeć: Mężczyzna
- Lokalizacja: Nowogard
- Podziękował: 33 razy
- Pomógł: 10 razy
Liczba całkowita w c++
1. tworzysz pomocniczą zmienną typu float lub double np. a
2. tworzysz pomocniczą zmienna typu int np. b
3. przypisujesz do zmiennej pomocniczej typu int (b) wartość ze zmiennej float lub double, która zawiera wartość obliczonego pierwiastka arytmetycznego
4. do zmiennej pomocniczej float lub double (a) przypisujesz wartość ze zmiennej pomocniczej int (b)
5. porównujesz wartość zmiennej z wartością pierwiastka i zmiennej pomocniczej float lub double (a)
6. Jeśli wartość jest taka sama to znaczy że pierwiastek jest liczbą całkowitą, jeśli wartości są różne to pierwiastek ma rozwinięcie dziesiętne różne od 0;
2. tworzysz pomocniczą zmienna typu int np. b
3. przypisujesz do zmiennej pomocniczej typu int (b) wartość ze zmiennej float lub double, która zawiera wartość obliczonego pierwiastka arytmetycznego
4. do zmiennej pomocniczej float lub double (a) przypisujesz wartość ze zmiennej pomocniczej int (b)
5. porównujesz wartość zmiennej z wartością pierwiastka i zmiennej pomocniczej float lub double (a)
6. Jeśli wartość jest taka sama to znaczy że pierwiastek jest liczbą całkowitą, jeśli wartości są różne to pierwiastek ma rozwinięcie dziesiętne różne od 0;
- setch
- Użytkownik
- Posty: 1307
- Rejestracja: 14 sie 2006, o 22:37
- Płeć: Mężczyzna
- Lokalizacja: Bełchatów
- Podziękował: 155 razy
- Pomógł: 208 razy
Liczba całkowita w c++
W wyniku działań a jest jakąś liczbą. Aby sprawdzić czy a jest całkowitę to trzeba odjąć od niej jej część całkowitą. Jedyna możliwość jaka mi przychydzoi to:
float a;
int b=a;
if (a-b==0) cout
float a;
int b=a;
if (a-b==0) cout
- Sokół
- Użytkownik
- Posty: 451
- Rejestracja: 17 wrz 2006, o 19:22
- Płeć: Mężczyzna
- Lokalizacja: Zielona Góra
- Podziękował: 15 razy
- Pomógł: 55 razy
Liczba całkowita w c++
wpadlem na taki sposob, o ktorym mowicie:
ale kompilator wypisuje warning przy kompilacji (ale kompiluje!). Myslalem, ze moze jest w w podstawowej bibliotece cos co sprawdza calkowitosc liczby etc.
oczywiscie zmienne sa odpowiedniego typu. A jak sprawdzic czy dana liczba jest wymierna? Bo chcialem zrobic szóste. A okazalo sie, ze w zbiorze 1-10000 nie ma takiej liczby calkowitej.
Kod: Zaznacz cały
l2=i*i+i;
pierwl2=sqrt(l2);
pierw121=pierwl2;
roznica=pierw121 - pierwl2;
if(roznica = 0)
{
cout << "i wynoosi " << i << endl;
}
oczywiscie zmienne sa odpowiedniego typu. A jak sprawdzic czy dana liczba jest wymierna? Bo chcialem zrobic szóste. A okazalo sie, ze w zbiorze 1-10000 nie ma takiej liczby calkowitej.
-
- Użytkownik
- Posty: 14
- Rejestracja: 18 paź 2006, o 19:49
- Płeć: Mężczyzna
- Lokalizacja: Częstochowa
- Pomógł: 3 razy
Liczba całkowita w c++
kompilator wywala warning'a, bo dokonujesz niejawnej konwersji z typu szerszego double na węższy int. Najlepiej pozbyć się go jawnie określając konwersje dopisując przed pierwl2 typ docelowy w nawiasach okrągłych przy przypisywaniu go do pierw121.
co do algorytmu sprawdzania to myślę, że można go trochę skrócić:
l2=i*i+i;
pierwl2=sqrt(l2);
if (pierw121 == (int)pierwl2) {cout << "i wynoosi " << i << endl; }
co do algorytmu sprawdzania to myślę, że można go trochę skrócić:
l2=i*i+i;
pierwl2=sqrt(l2);
if (pierw121 == (int)pierwl2) {cout << "i wynoosi " << i << endl; }
- setch
- Użytkownik
- Posty: 1307
- Rejestracja: 14 sie 2006, o 22:37
- Płeć: Mężczyzna
- Lokalizacja: Bełchatów
- Podziękował: 155 razy
- Pomógł: 208 razy
Liczba całkowita w c++
W c++ chyba sie nie da sprawdzić wymierności liczby, ponieważ jak użyjemy sqrt(2) to program nie zrozumie tego jako \(\displaystyle{ \sqrt{2}}\) tylko jako 1,4142135623730950488016887242097 (w zależności od typu zmiennej).
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
Liczba całkowita w c++
w math.h
double modf (double x, double *ptr);
float modff(float x, float *ptr);
long double modfl(long double x, long double *ptr);
x argumenty funkcji
ptr wskaźnik do części ułamkowej
modf - argument zaokrąglony w stronę zera (jak trunc) i dodatkowo w zmiennej wskazywanej przez ptr zapisuje część ułamkową argumentu.
zobacz
double modf (double x, double *ptr);
float modff(float x, float *ptr);
long double modfl(long double x, long double *ptr);
x argumenty funkcji
ptr wskaźnik do części ułamkowej
modf - argument zaokrąglony w stronę zera (jak trunc) i dodatkowo w zmiennej wskazywanej przez ptr zapisuje część ułamkową argumentu.
zobacz
-
- Użytkownik
- Posty: 311
- Rejestracja: 15 mar 2007, o 16:52
- Płeć: Mężczyzna
- Lokalizacja: Lublin
- Podziękował: 28 razy
- Pomógł: 54 razy
Liczba całkowita w c++
Sorry, że odświeżam ten temat, ale dopiero na forum wszedłem od paru miesięcy, moja wersja programu wygląda tak:
Kod: Zaznacz cały
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float stopien, liczba, pierwiastek;
cout << "Stopien pierwiastka: ";
cin >> stopien;
cout << "Liczba: ";
cin >> liczba;
cout << endl;
pierwiastek = pow(liczba, 1/stopien);
if(static_cast<int>(pierwiastek) == pierwiastek)
cout << "Pierwiastek " << stopien << " stopnia z liczby " << liczba << " jest liczba calkowita i wynosi: " << pierwiastek << endl;
else
cout << "Pierwiastek " << stopien << " stopnia z liczby " << liczba << " nie jest liczba calkowita." << endl;
cout << endl;
system("pause");
return 0;
}