Pycharm_activate.rar
149.6 KB
Jetbrains program full aktivate.
parol:2024-bayroq
parol:2024-bayroq
8-topshiriq.py
1.6 KB
Ixtiyoriy songacha bo'lgan o'zaro tub, bo'luvchilari va tub sonlar grafigini chizuvchi dastur.
10-topshiriq.py
1.2 KB
Komplesk sonlardan tashkil topgan kvadrat tenglama yechuvchi dastur
Python:
import math
while True:
def fi(n):
count = 0
for i in range(1, n + 1):
if math.gcd(i, n) == 1:
count += 1
return count
def tau(n):
count = 0
for i in range(1, n + 1):
if n % i == 0:
count += 1
return count
def pi(n):
count = 0
for i in range(2, n + 1):
is_prime = True
for j in range(2, int(math.sqrt(i)) + 1):
if i % j == 0:
is_prime = False
break
if is_prime:
count += 1
return count
def print_graph(func, k, name):
print(f"\n{name} funktsiyasining grafigi:\n")
for x in range(1, k + 1):
y = func(x)
print(" " * (y-1) + "*")
print("1. O'zaro tub sonlar grafigini chizish."
"\n2. Bo'luvchilar soni grafigini chizish."
"\n3. Tub sonlar grafigini chizish."
"\n4. Dasturdan chiqish.")
son = int(input("Kerakli bo'lim raqamini kiriting:"))
if son == 1:
k = int(input("Birorta son kiriting:"))
print_graph(fi, k, "phi(n) - o‘zaro tub sonlar miqdori")
elif son == 2:
k = int(input("Birorta son kiriting:"))
print_graph(tau, k, "tau(n) - bo‘luvchilar soni")
elif son == 3:
k = int(input("Birorta son kiriting:"))
print_graph(pi, k, "pi(n) - tub sonlar soni")
elif son == 4:
break
#Tuzatish
import math
while True:
def fi(n):
count = 0
for i in range(1, n + 1):
if math.gcd(i, n) == 1:
count += 1
return count
def tau(n):
count = 0
for i in range(1, n + 1):
if n % i == 0:
count += 1
return count
def pi(n):
count = 0
for i in range(2, n + 1):
is_prime = True
for j in range(2, int(math.sqrt(i)) + 1):
if i % j == 0:
is_prime = False
break
if is_prime:
count += 1
return count
def print_graph(func, k, name):
print(f"\n{name} funktsiyasining grafigi:\n")
for x in range(1, k + 1):
y = func(x)
print(" " * (y-1) + "*")
print("1. O'zaro tub sonlar grafigini chizish."
"\n2. Bo'luvchilar soni grafigini chizish."
"\n3. Tub sonlar grafigini chizish."
"\n4. Dasturdan chiqish.")
son = int(input("Kerakli bo'lim raqamini kiriting:"))
if son == 1:
k = int(input("Birorta son kiriting:"))
print_graph(fi, k, "phi(n) - o‘zaro tub sonlar miqdori")
elif son == 2:
k = int(input("Birorta son kiriting:"))
print_graph(tau, k, "tau(n) - bo‘luvchilar soni")
elif son == 3:
k = int(input("Birorta son kiriting:"))
print_graph(pi, k, "pi(n) - tub sonlar soni")
elif son == 4:
break
#Tuzatish
def see_methods(klass):
return [method for method in dir(klass) if method.startswith('')
klass o'rniga berilgan clasning metodlarini tashlab yuborib faqat dasturchi tomonidan yaratilgan metodlar chiqariladi.
return [method for method in dir(klass) if method.startswith('')
klass o'rniga berilgan clasning metodlarini tashlab yuborib faqat dasturchi tomonidan yaratilgan metodlar chiqariladi.
Masala shartini batafsil tushuntirish
Bizga matnni "8 dan 7 ga" zichlash usuli bo‘yicha kodlash va dekodlash algoritmini yaratish vazifasi berilgan. Bu usul faqat ASCII (0-127) kodli belgilarda ishlaydi, ya'ni matndagi har bir belgi 7-bitli bo‘lishi kerak.
1. "8 dan 7 ga" zichlash usuli qanday ishlaydi?
Zichlashning asosiy g‘oyasi – har bir 8-baytlik blokdagi har bir baytning 8-razryadi (eng chap bit, MSB - Most Significant Bit) ishlatilmaydi.
Biz bu ishlatilmaydigan bitlarni foydali ma’lumotga aylantiramiz, ya’ni:
1-baytning (MSB) 7 ta bitini keyingi 7 baytning 7-razryadli bitlari o‘rniga yozamiz.
Shunday qilib, 8 baytdan 7 bayt hosil bo‘ladi, ya’ni matn 12.5% (1/8) ga qisqaradi.
2. Kodlash (zichlash) jarayoni
Berilgan matn 8-baytlik bloklarga bo‘linadi. Agar matn uzunligi 8 ga bo‘linmasa, u probel (ASCII 32, " ") bilan to‘ldiriladi.
Har bir 8-baytli blokdan 7 baytli blok hosil qilish uchun:
1-baytning (MSB) 7 ta bitini ajratib olamiz.
Ularni keyingi 7 baytning 7-chi bitlariga joylaymiz.
1-baytdan qolgan 7-bit ma’lumot yangi 1-baytga aylanadi.
Natijada 7 baytli zichlashtirilgan blok hosil bo‘ladi.
Misol (Bit darajasida)
Berilgan 8 baytli matn bloki:
Bayt Ikkilik (Binary)
1-bayt 0111 0101
2-bayt 1111 1101
3-bayt 0111 1101
4-bayt 1010 0011
5-bayt 0010 0011
6-bayt 1101 0110
7-bayt 0101 0110
8-bayt 1111 1001
🔹 1-baytning MSB bitlari (0111010)
🔹 Ushbu bitlar 2-baytdan 8-baytgacha bo‘lgan baytlarga 7-razryad sifatida joylashtiriladi
Hosil bo‘lgan zichlashtirilgan 7 baytli blok
Yangi Bayt Ikkilik (Binary)
1-bayt 0111 0101
2-bayt 0111 1101
3-bayt 0010 0011
4-bayt 0101 0110
5-bayt 0001 0000
6-bayt 0110 1101
7-bayt 0010 1010
3. Dekodlash (zichlangan matnni qayta tiklash)
Kodlangan (zichlangan) matndan 8 baytlik blokni qayta tiklash uchun:
1-baytning MSB bitlarini topamiz va 8-baytlik blok hosil qilamiz.
Har bir 7-baytdan 1-baytning 7-razryadli bitlarini qaytarib joylashtiramiz.
1-baytning 7-bitli qismi to‘ldiriladi.
4. Xulosa
✅ Kodlashda: 8 baytdan 7 bayt hosil qilinadi (12.5% siqilish)
✅ Dekodlashda: 7 baytdan 8 baytli matn tiklanadi
✅ Probel bilan to‘ldirish: Matn uzunligi 8 ga bo‘linmasa, oxiriga " " qo‘shiladi
Bizga matnni "8 dan 7 ga" zichlash usuli bo‘yicha kodlash va dekodlash algoritmini yaratish vazifasi berilgan. Bu usul faqat ASCII (0-127) kodli belgilarda ishlaydi, ya'ni matndagi har bir belgi 7-bitli bo‘lishi kerak.
1. "8 dan 7 ga" zichlash usuli qanday ishlaydi?
Zichlashning asosiy g‘oyasi – har bir 8-baytlik blokdagi har bir baytning 8-razryadi (eng chap bit, MSB - Most Significant Bit) ishlatilmaydi.
Biz bu ishlatilmaydigan bitlarni foydali ma’lumotga aylantiramiz, ya’ni:
1-baytning (MSB) 7 ta bitini keyingi 7 baytning 7-razryadli bitlari o‘rniga yozamiz.
Shunday qilib, 8 baytdan 7 bayt hosil bo‘ladi, ya’ni matn 12.5% (1/8) ga qisqaradi.
2. Kodlash (zichlash) jarayoni
Berilgan matn 8-baytlik bloklarga bo‘linadi. Agar matn uzunligi 8 ga bo‘linmasa, u probel (ASCII 32, " ") bilan to‘ldiriladi.
Har bir 8-baytli blokdan 7 baytli blok hosil qilish uchun:
1-baytning (MSB) 7 ta bitini ajratib olamiz.
Ularni keyingi 7 baytning 7-chi bitlariga joylaymiz.
1-baytdan qolgan 7-bit ma’lumot yangi 1-baytga aylanadi.
Natijada 7 baytli zichlashtirilgan blok hosil bo‘ladi.
Misol (Bit darajasida)
Berilgan 8 baytli matn bloki:
Bayt Ikkilik (Binary)
1-bayt 0111 0101
2-bayt 1111 1101
3-bayt 0111 1101
4-bayt 1010 0011
5-bayt 0010 0011
6-bayt 1101 0110
7-bayt 0101 0110
8-bayt 1111 1001
🔹 1-baytning MSB bitlari (0111010)
🔹 Ushbu bitlar 2-baytdan 8-baytgacha bo‘lgan baytlarga 7-razryad sifatida joylashtiriladi
Hosil bo‘lgan zichlashtirilgan 7 baytli blok
Yangi Bayt Ikkilik (Binary)
1-bayt 0111 0101
2-bayt 0111 1101
3-bayt 0010 0011
4-bayt 0101 0110
5-bayt 0001 0000
6-bayt 0110 1101
7-bayt 0010 1010
3. Dekodlash (zichlangan matnni qayta tiklash)
Kodlangan (zichlangan) matndan 8 baytlik blokni qayta tiklash uchun:
1-baytning MSB bitlarini topamiz va 8-baytlik blok hosil qilamiz.
Har bir 7-baytdan 1-baytning 7-razryadli bitlarini qaytarib joylashtiramiz.
1-baytning 7-bitli qismi to‘ldiriladi.
4. Xulosa
✅ Kodlashda: 8 baytdan 7 bayt hosil qilinadi (12.5% siqilish)
✅ Dekodlashda: 7 baytdan 8 baytli matn tiklanadi
✅ Probel bilan to‘ldirish: Matn uzunligi 8 ga bo‘linmasa, oxiriga " " qo‘shiladi