Advertisement
Guest User

anismatrended

a guest
Sep 29th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.36 KB | None | 0 0
  1. import os.path
  2.  
  3. def clear():
  4.     os.system(['clear','cls'][os.name == 'nt'])
  5.        
  6. def countDet (items):
  7.     if len(items) == 1:
  8.         return items[0][0]
  9.     else:
  10.         determ = 0
  11.         for i in range (len(items[0])):            
  12.             determ += items[0][i]*countDet(minor(items,0,i))*pow(-1,i)            
  13.         return determ
  14.    
  15. def minor (items, i, j):
  16.     minor = []
  17.     for k in items:
  18.         minor += [k[:]]
  19.     minor.pop(i)
  20.     for i in minor:
  21.         i.pop(j)
  22.     return minor
  23.  
  24. def setToFile(name):
  25.     print('Заполним матрицу (размер 3х3):\n')
  26.     f = open(name, 'w')
  27.     for i in range(3):
  28.         f.write(input('Ведите елементы '+ str(i+1)+ '-ой строки\n')+'\n')
  29.     f.close()
  30.        
  31. class Matr :
  32.     def __init__(self):
  33.         self.size = (3, 3)
  34.         self.items = [[0 for i in range(self.size[0])] for i in range(self.size[1])]
  35.         self.determ = 0
  36.         self.maxItem = 0
  37.         self.minItem = 0
  38.         self.dioSum = 0
  39.  
  40.     def setItems (self, name):
  41.         matr = open(name, 'r')
  42.         stritems = matr.read().splitlines()
  43.         for i in range(len(stritems)):
  44.             stritems[i]=stritems[i].split()
  45.         for i in range(self.size[0]):
  46.             for j in range(self.size[1]):
  47.                 self.items[i][j] = int(stritems[i][j])
  48.         matr.close()
  49.  
  50.     def setDet(self):
  51.         self.determ = countDet(self.items)
  52.  
  53.     def setMaxMin(self):
  54.         self.maxItem = self.items[0][0]
  55.         self.minItem = self.items[0][0]
  56.         for i in self.items:
  57.             mx = max(i)
  58.             mn = min(i)
  59.             if mx > self.maxItem:
  60.                 self.maxItem = mx
  61.             if mn < self.minItem:
  62.                 self.minItem = mn
  63.                
  64.     def setDioSum(self):
  65.         for i in range(self.size[0]):
  66.             self.dioSum = self.dioSum + self.items[i][i]
  67.        
  68.     def printItems (self):
  69.         for i in range(self.size[0]):
  70.             for j in range(self.size[1]):
  71.                 print(format(self.items[i][j], '4d'), end = '')
  72.             print()
  73.  
  74.     def reWrite (self, name):
  75.         matr = open(name, 'w')
  76.         for i in self.items:
  77.             matr.write(' '.join(map(str,i))+'\n')
  78.         matr.close()
  79.  
  80.     def changeItem (self, i, j, newitem):
  81.         self.items[i-1][j-1] = newitem
  82.         self.setMaxMin()
  83.         self.setDioSum()
  84.         self.setDet()
  85.  
  86.     def getItem(self, i, j):
  87.         return self.items[i-1][j-1]        
  88.                
  89.  
  90.  
  91.  
  92.  
  93. while True:
  94.     name = input('Введите имя файла, в который запишим матрицу:\n')
  95.     setToFile(name)
  96.     A = Matr()
  97.     A.setItems(name)
  98.     A.setMaxMin()
  99.     A.setDioSum()
  100.     A.setDet()
  101.     clear()
  102.     print('Сведенья о матрице собраны.')
  103.     while True:
  104.         variant = input('(1)Отпечатать матрицу\n(2)Показать определитель\n(3)Показать суму елементов главной диоганали\n(4)Показать максимальный и минимальный елемент\n(5)Показать елемент\n(6)Заменить елемент и перезаписать матрицу\n(7)Перейти к работе с новой матрицей\n')
  105.         if variant == '1':
  106.             clear()
  107.             A.printItems()
  108.             continue
  109.         elif variant == '2':
  110.             clear()
  111.             print('det = ',A.determ)
  112.             continue
  113.         elif variant == '3':
  114.             clear()
  115.             print('dioSum = ',A.dioSum)
  116.             continue
  117.         elif variant == '4':
  118.             clear()
  119.             print('Max = ',A.maxItem)
  120.             print('Min = ',A.minItem)
  121.             continue
  122.         elif variant == '5':
  123.             clear()
  124.             i=int(input(''))
  125.             j=int(input('Введите строку:)'))
  126.             print(A.getItem(i,j))
  127.             continue
  128.         elif variant == '6':
  129.             clear()
  130.             i=int(input(''))
  131.             j=int(input(''))
  132.             new=int(input(''))
  133.  
  134.  
  135.             A.changeItem(i,j,new)
  136.             A.reWrite(name)
  137.             print('Элемент заменет, матрица перезаписана.\n')
  138.             continue
  139.         elif variant == '7':
  140.             clear()
  141.             break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement