Funkcje - podstawowe zadania

0

Witam, jestem na początku nauki programu c++, doszedłem aktualnie do funkcji, ale moje programy nie działają poprawnie, tzn. wyświetlają tylko podaną liczbę zamiast wykonać obliczenia na podstawie podanych wzorów. Czy mógłby mi ktoś poprawić kod i wskazać co robię nie tak?
Pozdrawiam

Napisz funkcję liczącą potęgę n liczby o podstawie x iteracyjnie.

#include <iostream>

using namespace std;

int potegowanie(int x, int n)
{
    cout << "Potegowanie liczby x o wykladniku n" << endl;
    int wynik = 1;
    for(int i = 0; i<n; i++)
    {
        return wynik*=x;
    }
}
int main()
{
    cout << potegowanie(2,3) << endl;
}

Napisz funkcję zwracającą n-ty element ciągu Fibonacciego

#include <iostream>

using namespace std;

int fibonacci(int aN)
{
    int Fn1 = 1;
    int Fn2 = 0;
    int Fn;
    for(int i; i<aN;i++)
    {
        Fn = Fn1 + Fn2;
        Fn2=Fn1;
        Fn1=Fn;
    }
}
int main()
{
    return fibonacci(12);
}
2

W pierwszym przykładzie na końcu zwracaj wynik a nie w pętli. W drugim przykładzie wgl nie widzę return.

0

@Arkadius882: W drugim:

  • nie zainicjalizowałeś wartości początkowej dla "i" w pętli
  • nie zwracasz wyniku - Fn
  • warunek końca pętli jest błędny - powinno być <= aN
  • zwracasz rezultat wykonania funkcji w mainie - powinieneś go wyświetlić najprawdopodobniej "cout << fibonacci(12);"
1

Uwaga, pisano na kolanie:

unsigned potegowanie(int x, unsigned n)
{
    unsigned result=1;
    while(n--) result*=x;
    return result;
}

int potegowanie(int x, unsigned n)
{
    int result=1;
    for(;n;n>>=1,x*=x) if(n&1) result*=x;
    //for(;n;n/=2,x*=x) if(n%2) result*=x;
    return result;
}

unsigned fibonacci(unsigned n)
{
    if(n<3) return n>1;
    unsigned a=0,b=1,c=0;
    for(;--n>=2;c=a+b,a=b,b=c) {}
    return c;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1