Funkcja skala(float v) w c++

0

Zdefiniuj funkcję skala(float v), której parametrem jest prędkość wiatru w węzłach, a wynikiem przeliczona prędkość w skali Beauforta. Sprawdź działanie funkcji dla podanych poniżej parametrów. Wynikiem funkcji skala(5) jest 2. Wynikiem funkcji skala(52) jest 10.

#include <iostream>
using namespace std;
float skala(float v) {
	return(v+10/6);
}
int main() {
	cout << skala(5) <<endl;
	cout << skala(52) <<endl;
	return 0;
}

W którym miejscu jest błąd? Bo cały czas wychodzą inne wyniki, niż powinny.

4

Zle masz nawiasy.

v+10/6 to v + (10/6) a ma byc (v + 10) / 6

0

@stivens: Niestety nawet po zmianie nawiasów wychodzą niewłaściwe wyniki.

1
Julciax napisał(a):

@stivens: Niestety nawet po zmianie nawiasów wychodzą niewłaściwe wyniki.

Ileż wątków jeszcze zrobisz na jeden temat?
Dostałaś odpowiedź / jedną z odpowiedzi. Masz w ogóle kontakt z rzeczywistością własnych wątków?

0
Julciax napisał(a):

@stivens: Niestety nawet po zmianie nawiasów wychodzą niewłaściwe wyniki.

Bo użyłeś niewłaściwej odpowiedzi. Problem nie w nawiasach lecz w równaniu.

0

Witam wszystkich forumowiczów.

Równanie (v+10)/6 jest okej.

@Julciax Źle wywołujesz testy. zamień

skala(5)
skala(52)

Na

skala(2)
skala(63)

Po prostu podajesz złe wartośći w argumentach podczas wywoływania funkcji. Oto cały problem.

Pozdrawiam wszystkich i życzę miłego dnia.

1
pestka12 napisał(a):

Witam wszystkich forumowiczów.

Równanie (v+10)/6 jest okej.

@Julciax Źle wywołujesz testy. zamień

skala(5)
skala(52)

Na

skala(2)
skala(63)

Po prostu podajesz złe wartośći w argumentach podczas wywoływania funkcji. Oto cały problem.

Pozdrawiam wszystkich i życzę miłego dnia.

Testy to puszcza chyba sędzia, a nie on. (tak przynajmniej sugeruje ten screenshot).
Ergo twoja propozycja, by w kodzie zmienić argument skala jest bezsensu.
Lepiej niech poda linka do zadania.
Powinno być raczej coś w stylu:

int main() {
    double x;
    while (std::cin >> x)
        std::cout << skala(x) << '\n';

    return 0;
}

Żeby uruchamianie testów samemu miało sens, to musi być jakaś weryfikacja: https://godbolt.org/z/rqrdaq

2

Skala Beauforta, nie jest liniowa. Radzę najpierw przeczytać jakie zakresy dotyczą jakich prędkości: https://pl.wikipedia.org/wiki/Skala_Beauforta

1

Czyli może trze3ba zastosować inne równanie:
B = 1,127·V^2/3 (dla V w m/s) = 0,723·V^2/3
?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.