Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja potęgowanie (uwzględnienie do potęgi minusowej)

Ostatnio zmodyfikowano 2013-11-13 00:38
Autor Wiadomość
lvcky
Temat założony przez niniejszego użytkownika
Funkcja potęgowanie (uwzględnienie do potęgi minusowej)
» 2013-11-12 22:06:15
Witam serdecznie.
Zrobiłem taki kod na funkcję potęgującą:

C/C++
int potega( int liczba, int doPotegi )
{
    float wynik = 1;
    if( doPotegi != 0 );
   
    {
        for( int i = 0; i < doPotegi; i++ )
        {
            wynik = wynik * liczba;
           
        }
    }
    return wynik;
}

Wszystko ładnie chodzi, ładnie liczy. Ale chciałem zrobić również wariant gdyby użytkownik chciał wprowadzić liczbę do potęgi ujemnej.
Napisałem coś takiego ale nie chodzi to jak powinno:

C/C++
int potega( int liczba, int doPotegi )
{
    float wynik = 1;
    if( doPotegi != 0 )
    {
        for( int i = 0; i < doPotegi; i++ )
        {
            wynik = wynik * liczba;
            return wynik;
        }
       
       
        if( doPotegi < 0 )
        {
            for( int i = 0; i < doPotegi; i++ )
                 wynik = wynik * liczba;
           
            return 1 / wynik;
           
        }
       
    }
}
P-96153
docentpp
» 2013-11-12 22:11:17
Funkcja potega jest typu int.
Jeśli podnosimy liczbę do potęgi ujemnej,
to wynik jest typu RZECZYWISTEGO !
P-96155
lvcky
Temat założony przez niniejszego użytkownika
» 2013-11-12 22:22:29
ok, gdzieś jeszcze muszę mieć błąd bo złe wyniki mam.. Tylko nie wiem gdzie.
P-96156
kubek3898
» 2013-11-12 22:27:35
Z tego co widzę warunkiem kończącym pracę pętli przy potędze ujemnej jest i < doPotegi, a przy inkrementacji zmiennej i ono raczej nie będzie prawdziwe.
P-96157
docentpp
» 2013-11-12 22:30:46
Popraw swój kod na następujący....

C/C++
return 1.0 / wynik;


P-96158
lvcky
Temat założony przez niniejszego użytkownika
» 2013-11-12 22:45:04
Niestety nic do nie dało :) może jak zamieszczę wywowałnie funkcji:
C/C++
case '2':
{
   
    int liczba, doPotegi;
    cin >> liczba;
    cin >> doPotegi;
   
    liczba = potega( liczba, doPotegi );
   
    cout << liczba;
    system( "pause" );
    system( "cls" );
    break;
}
P-96160
docentpp
» 2013-11-12 22:59:53
Zamiast

C/C++
for( int i = 0; i < doPotegi; i++ )


zrób tak :

C/C++
for( int i = doPotegi; i < 0; i++ )

I jaki rezultat ?

P-96162
killjoy
» 2013-11-12 23:59:58
Typ zwracany funkcji jest
int
, a powinien być
float
, tudzież
double
.
P-96163
« 1 » 2
  Strona 1 z 2 Następna strona