Advertisement
Guest User

Untitled

a guest
Feb 29th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. def first(): // deklaracja 1 fukncji (zad 4.1)
  2. res_array = [] // tablica do zapisania wyniku
  3. f = open('liczby.txt', 'r') // otworzenie pliku liczby.txt
  4. for x in f: // pentla for, wykonuje sie dla kazdej linijki z pliku
  5. h = int(x) // przypisanie pod h wartosci z 'x' i skonwertowanie do int
  6. while h % 3 == 0: // pentla while wykonuje sie dopoki reszta z dzielenia h/3 jest 0
  7. h = h / 3
  8. if h == 1: //warunek ktory sprawdza czy liczba jest potega liczby 3 po dzieleniu z resztą
  9. res_array.append(x) //dopisanie tej liczby
  10. f.close() // zamyka plik
  11. return res_array // zwraca tablice wynikow
  12.  
  13.  
  14. def second(): // deklaracja 2 fukncji (zad 4.2)
  15. res_array = []
  16. f = open('liczby.txt', 'r') // otworzenie pliku liczby.txt
  17. for x in f:
  18. res = 0
  19. for i in x:
  20. if not i == '\n':
  21. res = res + factorial(int(i)) // FUNKCJA FACTORIAL jest pozniej zaimplementowana i jest to silnia()
  22. if int(res) == int(x):
  23. res_array.append(x) // dopisuje do tablicy wynikow
  24. f.close() // zamyka plik
  25. return res_array // zwraca tablice wynikow
  26.  
  27.  
  28. def third(): // deklaracja 3 fukncji (zad 4.3)
  29. f = open('liczby.txt', 'r')
  30. biggest_counter = 0
  31. last_pos = 0
  32. loop_counter = 0
  33. actual_counter = 0
  34. gcd_memory = 0
  35. biggest_gcd = 0
  36. y = int(f.readline())
  37. for x in f:
  38. loop_counter += 1
  39. if gcd(x, y) == gcd_memory: // Funkcja GCD to NWD i jest zaimplementowana nizej w kodzie
  40. actual_counter += 1
  41.  
  42. else:
  43. if actual_counter > biggest_counter:
  44. biggest_counter = actual_counter
  45. last_pos = loop_counter
  46. biggest_gcd = gcd_memory
  47. actual_counter = 0
  48. gcd_memory = gcd(x, y)
  49. y = x
  50. res_array = [last_pos + 1, biggest_counter, biggest_gcd] // zapis do tablicy wynikow
  51. f.close()
  52. return res_array
  53.  
  54.  
  55. def factorial(x): // Funkcja rekurencyjna Sinlii
  56. if x == 1:
  57. return x
  58. elif x > 1:
  59. return factorial(x - 1) * x
  60. else:
  61. return 0
  62.  
  63.  
  64. def gcd(x, y): // FUNKCJA NWD(X,Y)
  65. rest = int(x) % int(y)
  66. last_rest = rest
  67. while not rest == 0:
  68. x = y
  69. y = rest
  70. rest = int(x) % int(y)
  71. if not rest == 0:
  72. last_rest = rest
  73. return int(last_rest)
  74.  
  75.  
  76. def main(): // Funkcja głowna która się wykonuje i zapisuje wyniki z wszystkich funkcji
  77. f = open('wynik4.txt', 'a')
  78. ex_first = first()
  79. ex_second = second()
  80. ex_third = third()
  81. f.write("Zad 4.1\n")
  82. for x in ex_first:
  83. f.write(x)
  84. f.write("Zad 4.2\n")
  85. for x in ex_second:
  86. f.write(x)
  87. f.write("Zad 4.3\n")
  88. for x in ex_third:
  89. f.write(str(x) + "\n")
  90. f.close()
  91.  
  92.  
  93. if __name__ == "__main__":
  94. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement