[C] Pierwiastkowanie bez użycia biblioteki

kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Pierwiastkowanie bez użycia biblioteki

Post autor: kalwi »

Napisz funkcje, która dostaje jako argumenty liczbę całkowitą m (m > 1) oraz nieujemną liczbę n i zwraca jako wartość \(\displaystyle{ \lfloor \sqrt[n]{m}\rfloor}\). Nie korzystaj z funkcji bibliotecznych. o ile część całkowita pójdzie dość prosto, to o tyle pierwiastek danego stopnia już mi nie wychodzi. Ktoś ma jakiś pomysł?
Ostatnio zmieniony 26 kwie 2013, o 17:06 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
lemoid
Użytkownik
Użytkownik
Posty: 199
Rejestracja: 24 maja 2012, o 23:36
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 5 razy
Pomógł: 30 razy

[C] Pierwiastkowanie bez użycia biblioteki

Post autor: lemoid »

Napisz funkcję potęgową, bo jak wiemy \(\displaystyle{ \sqrt[n]{m}=m^{\frac{1}{n}}\)
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Pierwiastkowanie bez użycia biblioteki

Post autor: kalwi »

no właśnie nie wiem w jaki sposób coś takiego napisać bez pow(). jedyne co potrafię to napisać potęgowanie, ale przy potęgach równych liczbie naturalnej

Kod: Zaznacz cały

int potega(unsigned int a, unsigned int b)
{
    int i,wynik=1;
    for (i=0;i<b;i++)
        {
        wynik=wynik*a;
        }
    printf("%d", wynik);
    return 0;
}

int main()
{
    unsigned int m,n;
    printf("Podaj podstawe i potege:
");
    scanf("%d %d", &m, &n);
    potega(m,n);
    return 0;
}
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[C] Pierwiastkowanie bez użycia biblioteki

Post autor: gryxon »

1.Napisz funkcje potęgowania.
2.Użyj wyszukiwania binarnego po wyniku.

Punkt drugi ma polegać mniej więcej tak:
Sprawdzasz czy jakaś tam wartość \(\displaystyle{ k}\) jest wynikiem, jeżeli nie jest to zwiększasz lub zmniejszasz \(\displaystyle{ k}\).
Sprawdzanie oczywiście polega na podniesieniu \(\displaystyle{ k}\) do jakiejś potęgi.
ODPOWIEDZ