definiowanie funkcji - square ()

0

Mam do zrobienia program w języku c++, w którym definiujemy funkcję square(), która podnosi liczby do kwadratu. Utrudnienie jest takie, że w definiowanej funkcji nie mogę użyc operatora mnożenia.
Treść zadania jest taka:
zaimplementuj funkcję square(), nie uzywając operatora mnozenia. to znaczy operację x*x wykonaj za pomocą wielokrotnego dodawania (zacznij od zmiennej wartosci 0 i dodaj do niej
x x razy).
Zadanie to jest w ksiązce "Programowanie. Teoria i praktyka z wykorzystaniem C++." Bjarne Stroustrupa.
wszystko inne potrafię zrobić, jedynie nie wiem jak mogę zrobić funkcję podnoszącą liczbę do kwadratu nie używając mnożenia

5

Przecież masz napisane.

a * b to a + a + a + ... + a, b razy.

0

@kq: tak, ale jak sam napisałes: "b razy". a ja nie mogę w ogole uzywac mnozenia, czyli razy nie wchodzi w grę.
(chyba ze cos zle zrozumialam z twojej odpowiedzi, co bardzo mozliwe, jestem mocno początkująca)

2

Żeby wykonać jakąś akcję x razy użyj pętli.

w pseudokodzie:

mult(a, b)
    result ⟵ 0
    for /b times/
        result ⟵ result + a
0

Testowane. Dziala

    int mySquare (int podstawa,int wykladnik)
    {
        int wynik = podstawa, licznik1 = 0;
        do
        {
            int licznik2 = 1;
            if (licznik1 > 1)
            {
                int temp = wynik;
                do
                {
                    wynik+=temp;
                    licznik2++;
                    //cout << "Potega " << licznik1 << " " << wynik << endl;
                }while(licznik2 < podstawa);
            }
            licznik1++;
        }while(licznik1 <= wykladnik);
        return wynik;
    }
3

A jak nie chcesz, żeby było aż tak wolno, to można mnożenie zrealizować tak:

int mult(int a, int b) {
    int result = 0;
    while (b > 0) {
        if (b & 1) {
            result += a;
        }
        a += a;
        b >>= 1;
    }
    return result;
}

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