# Значения функций при различных x

# Программа выводит все значения z1(x), z2(x) при -1<=x<=1

# Переменные:   x - Аргумент;
#               z1,z2 - Значение функций z1 и z2 соответственно;
#               max - Максимальное значение функции z2;
#               maxa - Максимальное значение аргумента x;
#               y=x/10;
#               n - Порядковый номер значения;

#┌─────────────────────────┐
#│ Примеры:                │
#├─────────────────────────┤
#│ При x=-1:               │
#│▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬│
#│  z1=-1.540   z2=-20.300 │  
#├─────────────────────────┤
#│ При x=0.0:              │
#│▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬│
#│  z1=-1.000   z2=-7.100  │
#├─────────────────────────┤
#│ При x=1.0:              │
#│▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬│
#│ z1=0.460     z2=5.100   │ 
#└─────────────────────────┘

from math import cos

r1,r2,sh=map(float,input('Введите начало, конец и шаг x: ').split())

l=(r2-r1)/sh

x=r1*10
n=0
y=x/10
z2=1.8*y**4+2.6*y**3-2.3*y*y+10.1*y-7.1
max=z2
maxa=-11
print('\n\nПодсчёт значений z1 и z2 при различном аргументе x:\n')
print('┌─────────┬────────────┬──────────────┬────────────────────┐')
print('│  Номер  │ Аргумент x │      Z1      │         Z 2        │')
while n<=l:
    y=x/10
    z1=y-cos(y)
    z2=1.8*y**4+2.6*y**3-2.3*y*y+10.1*y-7.1
    x+=(sh*10)
    if z2>max:
        max=z2
        maxa=y
    n+=1
    if z1>=10000:
        if z2<=10000:
            print('├─────────┼────────────┼──────────────┼────────────────────┤')
            print('│{:5d}    │{:9.1f}   │{:12.3e}  │ {:15.3f}    │'.format(n,y,z1,z2))
        else:
            print('├─────────┼────────────┼──────────────┼────────────────────┤')
            print('│{:5d}    │{:9.1f}   │{:12.3e}  │ {:15.3e}    │'.format(n,y,z1,z2))
    elif z2<=10000:
        print('├─────────┼────────────┼──────────────┼────────────────────┤')
        print('│{:5d}    │{:9.1f}   │{:12.3f}  │ {:15.3f}    │'.format(n,y,z1,z2))
    else:
        print('├─────────┼────────────┼──────────────┼────────────────────┤')
        print('│{:5d}    │{:9.1f}   │{:12.3f}  │ {:15.3e}    │'.format(n,y,z1,z2))
print('└─────────┴────────────┴──────────────┴────────────────────┘')
if max<=1000:
    max='{:7.3f}'.format(max)
elif max>=1000:
    max='{:7.3e}'.format(max)
print('Максимальное значение функции z2:',max)
print('Значение аргумента x при котором оно достигается:',maxa)
input('\nНажмите Enter для завершения.')
