Показать сообщение отдельно

Python
  #4  
Старый 17.04.2010, 18:00
mozgpanic
Новичок
Регистрация: 09.03.2010
Сообщений: 3
Провел на форуме:
8042

Репутация: 3
Post Python

Nition, лови
Код:
import re
class komplex:#собственно сам класс и функции для работы с комплексными числами
    def __init__(self):
        a,b,c,d=0,0,0,0
    def summa(self, a,b,c,d): #ф-я суммы
        s_d=a+c
        s_m=b+d
        return s_d, s_m, "i"
    def raznost(self, a,b,c,d): #ф-я разности
        r_d=a-c
        r_m=c-d
        return r_d, r_m,"i"
    def umnozhenie(self, a,b,c,d): # умножение (Кэп?! =) )
        u_d=a*c-b*d
        u_m=b*c+a*d
        return u_d, u_m,"i"
    def delenie(self, a,b,c,d): # деление
        d_d=(a*c+b*d)/(c*c+d*d)
        d_m=(b*c-a*d)/(c*c+d*d)
        return d_d, d_m,"i"
    def modul(self,a,b): # модуль
        if a<0:
            a=a*(-1)
        if b<0:
            b=b*(-1)
        return a,b,"i"
classinstance=komplex()
def vesh(line):#функция вычленяющая вещественную часть
    match = re.search("^-?[0-9]*|(?<=[+-])",line)
    return int(match.group(0))
def mnim(line):#функция вычленяющая мнимую часть
    match2 = re.search("(?<=[+-])\d+(?=i)",line)
    return int(match2.group(0))
f1=open("input.txt", "r") #файл содержащий числа
f2=open("output.txt", "w") # файл в кот. выводим результат
line1=f1.readline() #читаем первое число, записанное в первой строке
a=vesh(line1) #a - вещественная часть первого числа
b=mnim(line1) #b - мнимая часть второго числа
line2=f1.readline()
c=vesh(line2) 
d=mnim(line2)
main=classinstance.summa(a,b,c,d) # вызовем например ф-ю сложения [подставить название необходимой самостоятельно]
if main[1]>=0: # если мнимая часть положительна запишем в файл с +
    f2.write(str(main[0]))
    f2.write("+")
    f2.write(str(main[1]))
    f2.write(str(main[2]))
    print(main[0],"+",main[1],main[2])
else: # если нет - минус поставиться сам
    f2.write(str(main[0]))
    f2.write(str(main[1]))
    f2.write(str(main[2]))
    print(main[0],main[1],main[2])
#а вот так вызывается модуль
#main=classinstance.modul(a,b)
#f2.write(str(main[0]))
#f2.write("+")
#f2.write(str(main[1]))
#f2.write(str(main[2]))
f1.close() # закрываем файлы
f2.close()
P.S. работу с бинарными файлами не реализовал - не было времени гуглить, а сходу не вспомню как, но думаю там не будет сильно сложно...
P.P.S. ах да, забыл добавить, файл input.txt формируется в 2 строки: в первой строке указываем первое число, а во второй - второе, и, что немаловажно, без пробелов.
P.P.P.S. не знаю, бывают ли целая и мнимая части комплексного числа дробными, но у меня они целые. (редактируем регулярные выражения для дробного).

Последний раз редактировалось mozgpanic; 17.04.2010 в 18:17..
 
Ответить с цитированием