Przekazywanie liczby rzeczywistej i całkowitej do funkcji liczącej x^n

Pijany Leopard
2018-04-04 16:56
Pijany Leopard
0

Witam dostałem takie polecenie na zajęciach: Napisać funkcję, która oblicza: w = x^n. Do funkcji przekazać: x –typu rzeczywistego, n –typu całkowitego. Funkcja zwraca obliczoną wartość.
Mój problem jest w miejscu żeby przekazać x rzeczywistego a n całkowitego. Wyskakuje mi jakiś błąd, gdy zrobię oba całkowitego to tego błędu nie ma. Poniżej kod mojej funkcji.

A to nazwa błędu:

9|error: invalid operands of types 'float' and 'int' to binary 'operator^'|
#include <iostream>

using namespace std;

float  funkcja_w(float x, int n)
{
    float w;
    {
    w=x^n;
    }
    return w;
}
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
edytowany 3x, ostatnio: furious programming, 2018-04-05 16:02

Pozostało 580 znaków

2018-04-04 17:01

Rejestracja: 7 lat temu

Ostatnio: 23 minuty temu

Lokalizacja: Kraków

1

^ to XOR a obstawiam, że Ty chcesz potęgować.

edytowany 1x, ostatnio: szweszwe, 2018-04-04 17:02

Pozostało 580 znaków

Pijany Leopard
2018-04-04 17:03
Pijany Leopard
0

No tak zapomniałem że w c++ działa to inaczej. Muszę w tym wypadku zrobić pętle for prawda?

Pozostało 580 znaków

2018-04-04 17:05

Rejestracja: 9 lat temu

Ostatnio: 1 godzina temu

1

Można użyć gotowej funkcji: http://www.cplusplus.com/reference/cmath/pow/
ale podejrzewam że jeśli to zadanie na zaliczenie to nie będzie w takiej wersji zaliczone.


Pozostało 580 znaków

2018-04-04 17:06

Rejestracja: 7 lat temu

Ostatnio: 23 minuty temu

Lokalizacja: Kraków

0

Nie. Możesz zrobić while, możesz zrobić rekurencyjnie, możesz użyć pow i pewnie możesz to zrobić na sto różnych sposobów.

Pozostało 580 znaków

2018-04-04 17:06

Rejestracja: 6 lat temu

Ostatnio: 1 rok temu

0
Pijany Leopard napisał(a):

No tak zapomniałem że w c++ działa to inaczej. Muszę w tym wypadku zrobić pętle for prawda?

Najprościej chyba użyć funkcji pow
http://www.cplusplus.com/reference/cmath/pow/

edytowany 1x, ostatnio: Tytanowyy, 2018-04-04 17:07

Pozostało 580 znaków

Pijany Leopard
2018-04-04 17:07
Pijany Leopard
0

Czy to jest poprawnie?

#include <iostream>

using namespace std;

float  funkcja_w(float x, int n)
{
    float w;
    for (int i=1; i<=n; i++)
        w=x*i;
    return w;
}

Funkcji pow nie możemy używać.

edytowany 2x, ostatnio: furious programming, 2018-04-04 17:55

Pozostało 580 znaków

2018-04-04 17:10

Rejestracja: 6 lat temu

Ostatnio: 1 rok temu

0

Nie to nie jest poprawnie. Zwracasz wynik mnożenia liczby x oraz wartość i z ostatniej iteracji.

edytowany 1x, ostatnio: furious programming, 2018-04-04 17:55
i nie-wiadomo-co dla n = 0 - vpiotr 2018-04-04 17:11

Pozostało 580 znaków

Pijany Leopard
2018-04-04 17:13
Pijany Leopard
0

n=0 możemy pominąć.
To jak to poprawić bo teraz się pogubiłem zamiana x na w nic nie da. chyba?

Pozostało 580 znaków

2018-04-04 17:15

Rejestracja: 6 lat temu

Ostatnio: 1 rok temu

0

Wykonać o jedną iterację mniej
Twoja wartość w na początku powinna przyjąć wartość zmiennej x
Wartość w pomnożyć i razy przez x i powinno działać.

edytowany 3x, ostatnio: furious programming, 2018-04-04 17:55

Pozostało 580 znaków

2018-04-04 17:15

Rejestracja: 7 lat temu

Ostatnio: 23 minuty temu

Lokalizacja: Kraków

0

Ale umiesz Ty potęgować? jak masz x ^ n to znaczy, że n razy mnożysz x przez siebie.

Coś mi się zdaje że wszelka wiedza u OP wyparowała w obliczu zbliżającego się końca kartkówki (to chyba jedyne rozsądne wytłumaczenie). - vpiotr 2018-04-04 17:18

Pozostało 580 znaków

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