Diskuze: Libovolná odmocnina PROBLÉM
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Já teda nevim z jakého návodu tady vycházíš a ani jsem nikdy nic podobného neřešil. Ale napadlo mě.. co jít na to trochu vychytrale. Odpocnina je v podstatě mocnina, která bude mít převrácený exponent (čitatel za jmenovatel).
public static double Odmocni(double a, double b)
{
return Math.Pow(a, 1/b);
}
Jinak ten problém je bych řekl v tom, že tobě ten while někdy nemusí přesně vyjít. On se jakoby s každým proběhnutým cyklem iteruje směrem k řešení, ale velikost typu double je omezená a on se není schopen iterovat na nějaká 15.pozici už směrem k řešení. Do toho cyklu si přidej výpis aktuálního výsledku, co by to zrovna vrátilo
while (Math.Pow(x, b) != a)
{
x = v / b;
y = a / x;
v = x + y;
Console.WriteLine(x.ToString());
}
Když tam zadáš nějakou jednoduchou odmocninu třeba 2. odmocnina z 81, tak vidíš, jak se to blíží k řešení, když tam ale zadáš třeba 3. odmocninu z 81 tak ti tam hned skočí nějaké číslo, které se už nemůže s dalším cyklem někam posunout, protože ta hodnota co se ti mění (a jen její vhodná změna může zastavit cyklus) se číselně nemění na pozici, kterou by mohl typ double zaznamenat..
Paráda, tak trochu jednodušší způsob. Dík za obě odpovědi
Zobrazeno 4 zpráv z 4.