Witam wszystkich, to mój pierwszy post ;)
Mój problem polega na tym, że funkcja pow(potęgowanie) nie działa tak jak trzeba.
Chodzi o to, że w moim programie podnoszę liczby do części ułamkowych (tworzę
pierwiastki)
np:
double liczba = 112;
double licznik = 1;
double mianownik = 4;
double potega = licznik/mianownik;
double wynik = pow(liczba , potega);
w samym tym kodzie działania są wykonywane bez problemu, jednak musiałem
napisać jeszcze jeden program, który znajduje mi najbliższą liczbę przez którą
można wykonać działania bez reszty. Tzn podaje programowi 25^1/3. Jak wiadomo
nie istnieje taka stała liczba, więc program wyszukuje mi najbliższej liczby która
pozwala na takie działanie. W tym przypadku jest to 27, bo 27^1/3=3.
Kod który wyszukuje taką liczbe:
double przyblizenie(double liczba, double potega)
{
double wynik = pow( liczba , potega );
int stala = wynik;
if(wynik - stala == 0) return liczba;
else return przyblizenie(liczba + 1, potega);
}
jest to funkcja rekurencyjna, podnosi liczbę o 1, aż do momentu kiedy działanie
nie da żadnej reszty(jeśli 25 daje reszte, to sprawdza 26 itd..) No i tu jest problem,
bo niektóre pierwiastki działają, a niektóre nie. Akurat 251/3 działa, ale np. 1121/3 nie działa.
Proszę o pomoc, jestem słaby z programowania, nie wiem na razie co zrobić, aby
program stabilnie działał, ale może jakiś pros z forum wie ;)
PS. sprawdzałem różne liczby i nie ma reguły w ich działaniu, niektóre skomplikowane
jak np. 57^9/4 działają O.o
Może podam jeszcze cały kod do prześledzenia i potestowania:
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
double przyblizenie(double liczba, double potega)
{
double wynik = pow( liczba , potega );
int stala = wynik;
if(wynik - stala == 0) return liczba;
else return przyblizenie(liczba + 1, potega);
}
int main()
{
double licznik = 1.0;
double mianownik = 4.0;
double liczba = 112.0;
double potega = licznik/mianownik;
double wynik = przyblizenie(liczba,potega);
cout << "Wartosc przyblizona liczby wynosi: " << wynik << endl;
return 0;
}
dodanie znaczników <code class="cpp"> oraz poprawienie tytułu wątku i tagów - fp