implementacja mnożenia za pomocą dodawania

implementacja mnożenia za pomocą dodawania

Wątek przeniesiony 2018-08-21 17:37 z C/C++ przez kq.

B3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Muszę zrobić zadanie a nie mam żadnego pomysłu jak je zrobić

Zaimplementuj funkcje square (). nie używając operatora mnożenia. To znaczy operację x*x wykonaj za pomocą wielokrotnego dodawania (zacznij od zmiennej o wartości 0 i dodaj do nie x x razy).
Następnie uruchom wcześniejszą wersję programu z tą swoją funkcją.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

W czym jest problem? Przecież treść zadania dokładnie mówi co trzeba zrobić.

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
0

robimy podstawy matematyki

jezeli mamy 5*5 to mozna to wydluzyc do 5+5+5+5+5 czyli Podstawa dodana do siebie tyle razy ile wykazuje druga liczba (mnożnik)

no to teraz przyklad dla 6*3 bedzie 6+6+6

Widzisz zaleznosc?

teraz potegowanie. Jezeli mamy 6 do potegi drugiej to masz 6*6 stosując to co jest wyżej powinno być jasne jak to rozwinąć

Więc zastosuj pętle z dodawaniem i masz mnożenie bez używania *

B3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Mógłbys zrobić to ? rozumiem wszystko ale nie umiem tych funkcji pisac kompletnie

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
2

jak mi zapłacisz 100 euro to Ci napisze taką funkcję a jak nie to polecam
http://fasadin.4programmers.net/2016/03/4-pierwsze-programy.html?view=sidebar
4.4.2

B3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

dzięki

hurgadion
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: www
  • Postów: 259
3

Hej
przetestuj taką funkcje rekurencyjną, pseudokot:

Kopiuj
def f(n, m):
	if m==0:
		return 0
	else:
		return n + f(n, m-1)

Wtedy mnożenie będzie miało postać:

Kopiuj
def square(n):
    return f(abs(n), abs(n))

Pzdr... :)

Tenonymous
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 425
1

W C++ można jeszcze prościej:

Kopiuj
int pow(int n, int m) {
	return m == 0 ? 0 : n + pow(n, m - 1);
}
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12272
0

Jeśli chodzi o implementację potęgowania w postaci dodawania, to możliwe są trzy wyniki, a nie dwa:

  • n^0 = 1
  • n^1 = n
  • n^m = x (x trzeba policzyć).

Dlatego też przykłady z obu wcześniejszych postów są prawie dobre. ;)

hurgadion
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: www
  • Postów: 259
0

chyba jakoś tak, ale przetestuj:

Kopiuj
def fpow(n, m):
	if m==0:
		return 1
	elif m==1:
		return n
	else:
		return f(fpow(n, m-1), n)
vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

Zadanie potęgowania x = pow(n, m) to nie to samo co kwadrat liczby x = n * n.
W tym drugim przypadku o wiele prostsza jest np. obsługa zer czy wartości ujemnych.

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.