Funkcja skala(float v) w c++

Funkcja skala(float v) w c++
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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.

Kopiuj
#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.

stivens
  • Rejestracja: dni
  • Ostatnio: dni
4

Zle masz nawiasy.

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

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

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

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
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?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 180
0

Witam wszystkich forumowiczów.

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

@Julciax Źle wywołujesz testy. zamień

Kopiuj
skala(5)
skala(52)

Na

Kopiuj
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.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
1
pestka12 napisał(a):

Witam wszystkich forumowiczów.

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

@Julciax Źle wywołujesz testy. zamień

Kopiuj
skala(5)
skala(52)

Na

Kopiuj
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:

Kopiuj
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

MO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tam gdzie jest (centy)metro...
2

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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.