Problematyczne zadanie przewidziane "zielonych"

0

Witam, mam problem z zadaniem. Kod po prostu nie działa.

Treść:
Kozik pragnie zostać koszykarzem. Po rozmowie z trenerem okazało się, że jest za niski. Kozik jest jednak tak zdeterminowany, że chce spełnić wymagania trenera, nawet jeśli okazałoby się to oszustwem. Wpadł więc na genialny pomysł robienia sobie guzów na głowie, aż osiągnie wymagany wzrost. Zauważył, że przy każdym uderzeniu guz się powiększa o cm. Kozik zastanawia się ile minimalnie razy będzie musiał się uderzyć.

Wejście
W pierwszej linii wejścia 3 liczby całkowite: (), oznaczające odpowiednio wysokość Kozika, wymaganą przez trenera wysokość oraz wartość powiększania się guza po każdym uderzeniu.

Wyjście
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę całkowitą równą minimalnej liczbie uderzeń, które musi wykonać Kozik.

Na razie udało mi się dojść do tego:

#include <iostream>

using namespace std;
int guz, wym, kazik;
int main()
{
    cin >> kazik >> wym >> guz;

    if(kazik>=wym)
        cout << 0;

    for(int i = 1 ;kazik >= wym; i++)
        {
        kazik = kazik + guz;

        if(kazik>=wym)
            cout << i;
        }
    return 0;
}
0

Tu nie potrzebujesz żadnej pętli, wystarczy użyć dzielenia ;​)

A bezpośrednim błędem jest odwrócony warunek w (kompletnie niepotrzebnej) pętli. Wykonuje się ona zero razy.

0

Ale jak mam w takim razie bez pętli i zmiennej "i" sprawdzać ile razy musiał się walnąć.

1

Użyj dzielenia. Masz różnicę wysokości i chcesz wiedzieć jaka (najmniejsza) liczba, przez którą przemnożysz wysokość guza będzie wynosiła co najmniej tę wysokość.

diff = wym - kazik
liczba_guzow = diff / guz
# trzeba wziąć pod uwagę dzielenie z resztą i bez
if liczba_guzow * guz ≠ diff
    liczba_guzow += 1
0

Mam jeszcze jedno pytanie niezwiązane z tym zadaniem. Jak mam porównać x zmiennych jeśli za każdym razem musze się o nie pytać w pętli.

0

W przypadku tego zadania nie musisz

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