Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2012 18:59:27

Evgenii
От:
Зарегистрирован: 2012-01-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Help

Господа программисты, помогите чем можете,завтра экзамен, а код написать не могу. задача: Запросив у пользователя степень полинома, сгенерировать случайным образом целочисленные коэффициенты полинома (в диапазоне -5..+5) и вывести полином так, чтобы он смотрелся “нормально” с точки зрения записи “от руки” (не должно быть элементов вида: …+ -2 х^2…; 1 x^3 +…; …+ 0 x +… и т.п.). Исчислить и вывести “нормально” производную полинома. Помогите с кодом или подскажите где смогут помочь1. Возможна оплата



Офлайн

#2 Янв. 18, 2012 07:13:38

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Help

Примерно так (для python 2.x):

import random

def make_poly( max_n ):
return [ ( random.randint( -5, 5 ), n ) for n in range( max_n + 1 ) ]

def deriv( poly ):
return [ ( k*n, n-1 ) for k,n in poly ]

def show_elem( elem, pos ):
k, n = elem

sign_txt = "+" if (pos and k > 0 ) else ""

if n == 0:
pow_txt = ""
elif n == 1:
pow_txt = "x"
else:
pow_txt = "x^%d" % n

if k == 1 and n != 0:
k_txt = ""
elif k == -1 and n != 0:
k_txt = "-"
else:
k_txt = str( k )

if pow_txt:
if k_txt:
return sign_txt + k_txt + "*" + pow_txt
else:
return sign_txt + pow_txt
else:
return sign_txt + k_txt

def show_poly( poly ):
# Cut zero k
poly = [ elem for elem in poly if elem[0] ]
if not poly:
return "0"

text_lst = [ show_elem( elem, pos ) for pos, elem in enumerate(poly) ]
return "".join( text_lst )

def main():
max_n = input( "Max N:" )
poly = make_poly( max_n )
print show_poly( poly )
print show_poly( deriv( poly ) )


if __name__ == "__main__":
main()



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version