p1rofiletest

برنامه ای بنویسید  که x را خونده و بدون استفاده از عملگر ضرب عبارت زیر را محاسبه کنه

p1rofiletest ۱۳۹۷/۰۷/۱۴ مباحث عمومی برنامه‌نویسی

برنامه ای به زبان پایتون بنویسید  که x را خونده و بدون استفاده از عملگر ضرب عبارت زیر را محاسبه کنه هدف استفاده از عملگر شیف به چپ هستش لطفا دوستان روشی که استفاده میکنند را توضیح بدهند.

y= 31*x-17*x+5
پاسخ‌ها به این تاپیک
امیرحسین مجیری
امیرحسین مجیری دوست‌دار داده‌ها، پی‌اچ‌پی و پژوهش روی زبان
۱۳۹۷/۰۷/۱۸

سلام

یک راه محاسبۀ چنین عبارتی بدون استفاده از ضرب کد زیر است:

n = int (input ("Enter a number: "))
m1 = n
for i in range (1,31):
    m1 = m1 + n
m2 = n
for i in range (1, 17):
    m2 = m2 + n
print (m1-m2+5)

در واقع در این جا، ضرب را شبیه‌سازی کرده‌ایم و به جای ضرب از حلقه‌ها و جمع مکرر استفاده کردیم.

عملگر شیفت به چپ، عدد ورودی را ضرب در 2 به توان عدد شیفت می‌کند. یعنی مثلا اگر عدد 5 را 3 بار به چپ شیفت دهیم در واقع 5 را در 2 به توان 3 (8) ضرب کرده‌ایم. توضیحات بیشتر درباره‌ی این عملگر:

https://wiki.python.org/moin/BitwiseOperators

در لینک زیر، عملگر ضرب با استفاده از شیفت به چپ، شبیه‌سازی شده است و مثال‌هایی هم از چهار زبان برنامه‌نویسی زده شده است. اما متاسفانه من نتوانستم این کار را در پایتون انجام دهم تا کد آن را برای شما بنویسم.

https://www.geeksforgeeks.org/multiplication-two-numbers-shift-operator/

اما بخش اول آن (ضرب یک عدد ورودی در 31) را در پایتون پیاده کرده و در لینک زیر قرار دادم:

https://ide.geeksforgeeks.org/sZq8w2ITKd

n = int (input ())
ans1 = 0
count = 0
m = 31
while m: 
    if m % 2 == 1:			 
        ans1 += n << count
	count += 1
	m /= 2

print(ans1)

موفق باشید