54
C++ VA PYTHON DASTURLASH TILLARIDA GREGORIAN
KALENDARI
Shavkatjon Ibrohimovich Fozilov., Ulug’bek Nuriddinovich Ibrohimov
Namangan davlat universiteti
Maqola haqida ma’lumot
Qabul qilingan: 27.05.2024
Qayta qabul : 28.05.2024
Saytda mavjud : 29.05.2024
Muallif (lar)
*SH.I.Fozilov., U.N.Ibrohimov
*Muallif bilan aloqa
https://orcid.org/0009-0004-6181-2704
shavkatmanager@gmail.com
© Muallif. SH.I.Fozilov va boshqalar
UNIVERSAL xalqaro ilmiy jurnal
Ochiq ma’lumotlar:
https://universaljurnal.uz/index.php/jurnal
Maxfiylik bayonoti
Materialni istalgan vosita yoki formatda nusxalash va
qayta tarqatish hamda maqoladan toʻgʻri iqtibos keltirish
va litsenziyasini koʻrsatish sharti bilan istalgan maqsadda
foydalanish mumkin.
Maxfiylik bayonoti
Materialni istalgan vosita yoki formatda nusxalash va
qayta tarqatish hamda maqoladan toʻgʻri iqtibos keltirish
va litsenziyasini koʻrsatish sharti bilan istalgan maqsadda
foydalanish mumkin.
Annotatsiya:
Bu maqola berilgan yil,
oy, kunlarni algorit yordamida C++ va
Python dasturlash tillarida o’tkazishni ko’rib
chiqilgan.
Kalit so’zlar:
Gregorian, kalendar,
kabisa, milodiy, c++, python.
Abstract:
This article deals with the
calculation of the given year, month, and day
using an algorithm in C++ and Python
programming languages.
Keywords:
Gregorian, calendar, leap,
AD, c++, python.
Аннотация:
В данной статье
рассматривается вычисление заданного
года, месяца и дня с использованием
алгоритма на языках программирования
C++ и Python.
Ключевые
слова: григорианский
календарь, календарь, скачок, объявление,
c++, python.
Universal International Scientific Journal
Universal Xalqaro Ilmiy Jurnal
Jurnalning bosh sahifasi:
Universal International Scientific Journal
55
UNIVERSAL international scientific journal
Dastur foydalanuvchining malum bir yil,
oy va kunni kiritgan holda shu ma’lumotlarga
asosan oy nomi yil boshidan necha kun va oyni
hamda muchalni hisoblaydi bu algoritim
yordamida ixtiyoriy sana bo’yicha ma’lumot
bilsa bo’ladi.
Grigoriy taqvimi (yoki yangi uslub) —
Rim papasi Girigorian XIII tomonidan Yulian
taqvimi (eski uslub) oʻrniga 1582-yilda joriy
etilgan
taqvim.
Perudjiy
universiteti
oʻqituvchisi Luidji Lilio 1576-yilda taklif
etgan loyihaga binoan tuzilgan. Yulian
taqvimida yoʻl qoʻyilgan xatolik tuzatilib
hisob 10 kun oldinga surilgan. Bahorgi teng
kunlik, yaʼni 21 martga toʻgʻri kelgan. Xatolik
yana takrorlanmasligi uchun har 400 yilda
kabisa yil 3 kunga qisqartirilgan, yaʼni 100
kabisa yili oʻrniga 97 kabisa yili joriy etilgan.
Grigoriy taqvimiga koʻra oxirgi 2 raqami
4 ga boʻlinadigan yillar kabisa yillardir, lekin
2 nol bilan tugab, 400 ga boʻlinmaydigan yillar
bundan mustasno, masalan, 1700-, 1800-,
1900- va 2100-yillar oddiy yil, 1600-, 2000-,
2400-
va
2800-yillar
esa
kabisa
yil
hisoblanadi. Shu hisobda yilning davomiyligi
365, 242500 sutkani tashkil etib, tropik yilga
qaraganda har yili 26 soniya ortib boradi va sal
kam 3300-yilda 1 kun xato qilinadi. Grigoriy
taqvimining birdan-bir noqulayligi oylardagi
kunlar sonining har xilligidir. Sovet Itifoqiga
(shu jumladan, O’zbekistonda) Grigoriy
taqvimi 1918-yil 14-fevraldan (eski uslubda 1-
fevraldan) boshlab qabul qilingan.
Bu kod asosiy maqsadi bu koddagi
murakkab algoritim oddiy holi ma’lum
ketmaketlikdan iborat ya’ni misol uchun 2000-
yildan 2040-yilgacha yillarni 1-oy va 1- kunini
olsak va buni boshqa yillarda ham ko‘rsak
hafta kuni har 28 yilda o‘zgarishini sezamiz bu
kabisa yiliga ham bog‘liq bu yerda barcha
yillar
uchun
umumiy
universal
algoritimni tuzilgan. Bu algoritimlarni
qo‘llagan holda boshqa yillarni hisoblash
algoritmini yaratsa bo‘ladi. Bu C++
kodida avtomatik hisoblash tizimidan
foydalanilmagan (ya’ni kutubxonaga
e’tibor beramiz).
C++ dasturlash tilida Gregorian
kalendarini algoritim ko‘rinishida dastur
kodi.
#include <iostream>
#include <string>
using namespace std;
int main() {
int n,y,l,t,q,m;
cout<<"Ixtiyoriy milodiy yil (xxxx): ";
cin >>y;
cout<<"Ixtiyoriy oy (1<=m<=12): ";
cin>>m;
cout<<"ixtiyoriy
kun
1<=n<=30(28/31): ";
cin>>n;
if ((y% 4 == 0 && y% 100 != 0) || (y %
400 == 0)) {
l=1;
} else {
l=0;
}
int day;
int month=m, weekDay;
if (month == 1) {
day=n;
} else if (month == 2) {
day=31+n;
} else if ( month == 3) {
day = 59+l+n;
} else if ( month == 4) {
day = 90+l+n;
Universal International Scientific Journal
56
UNIVERSAL international scientific journal
} else if ( month == 5) {
day = 120+l+n;
} else if (month == 6) {
day = 151+l+n;
} else if ( month == 7) {
day = 181+l+n;
} else if ( month == 8) {
day = 212+l+n;
} else if ( month == 9) {
day = 243+l+n;
} else if ( month == 10) {
day = 273+l+n;
} else if ( month ==11) {
day = 304+l+n;
} else if(month ==12) {
day = 334+l+n;
} else {
cout<<" Bunday kun yo'q ";
}
if(day<=365+l && m<=12 && m>=1 &&
n>=1) {
t=y%28;
if(t==0 || t==5 || t==11 || t==22) {
q=4;
}
if(t==1 || t==7 || t==18 || t==24) {
q=6;
}
if(t==2 || t==8 || t==13 || t==19) {
q=0;
}
if(t==3 || t==14 || t==20 || t==25) {
q=1;
}
if(t==4 || t==9 || t==15 || t==26) {
q=2;
}
if(t==6 || t==12 || t==17 || t==23) {
q=5;
}
if(t==10 || t==16 || t==21 || t==27) {
q=3;
}
if(((m==1 || m==3 || m==5 || m==7 ||
m==8 || m==10 || m==12) && n<=31)||
(m==2 && n<=28+l)||((m==4 || m==6||
m==9 || m==11)&&n<=30)) {
weekDay=(day+q)%7;
month=m;
string months[] = {"Yanvar",
"Fevral", "Mart", "Aprel", "May", "Iyun",
"Iyul", "Avgust", "Sentabr", "Oktabr",
"Noyabr", "Dekabr"};
string
weekDays[]
=
{"Yakshanba","Dushanba", "Seshanba",
"Chorshanba",
"Payshanba",
"Juma",
"Shanba"};
switch(y%12)
{
case 1:
cout <<"Tovuq " ;
break;
case 2:
cout<<"It " ;
break;
case 3:
cout<<"To'ng'iz ";
break;
case 4:
cout<<"Sichqon " ;
break;
case 5:
cout<<"Sigir " ;
break;
case 6:
cout<<"Yo'lbars '";
break;
case 7:
cout<<"Quyon " ;
break;
Universal International Scientific Journal
57
UNIVERSAL international scientific journal
case 8:
cout<<"Baliq " ;
break;
case 9:
cout<<"Ilon " ;
break;
case 10:
cout<<"Ot " ;
break;
case 11:
cout<<"Qo'y' " ;
break;
case 0:
cout<<"Maymun " ;
break;
default:
cout << " ";
}
cout<<"
muchali,
"<<y<<"-yil
"<<n<<"-"<< months[month-1] << ", " <<
weekDays[weekDay]<<"
"<<day/7+1<<"-
hafta " << day<<"-kun"<<endl;
}
else {
cout<<" xatolik kunda ";
}
}
else {
cout<<" xatolik oyda ";
}
return 0;
}
Python dasturlash tilida Gregorian kalendarini
algoritim ko‘rinishida dastur kodi.
import datetime
def main():
y = int(input("Ixtiyoriy milodiy yil (xxxx):
"))
m
=
int(input("Ixtiyoriy
oy
(1<=m<=12): "))
n
=
int(input("ixtiyoriy
kun
1<=n<=30(28/31): "))
if (y % 4 == 0 and y % 100 != 0) or (y
% 400 == 0):
l = 1
else:
l = 0
day = 0
if m == 1:
day = n
elif m == 2:
day = 31 + n
elif m == 3:
day = 59 + l + n
elif m == 4:
day = 90 + l + n
elif m == 5:
day = 120 + l + n
elif m == 6:
day = 151 + l + n
elif m == 7:
day = 181 + l + n
elif m == 8:
day = 212 + l + n
elif m == 9:
day = 243 + l + n
elif m == 10:
day = 273 + l + n
elif m == 11:
day = 304 + l + n
elif m == 12:
day = 334 + l + n
else:
print(" Bunday kun yoq xatolik
oyda")
return
Universal International Scientific Journal
58
UNIVERSAL international scientific journal
if day <= 365 + l and 1 <= m <= 12 and 1 <= n:
t = y % 28
if t == 0 or t == 5 or t == 11 or t == 22:
q = 4
elif t == 1 or t == 7 or t == 18 or t == 24:
q = 6
elif t == 2 or t == 8 or t == 13 or t == 19:
q = 0
elif t == 3 or t == 14 or t == 20 or t == 25:
q = 1
elif t == 4 or t == 9 or t == 15 or t == 26:
q = 2
elif t == 6 or t == 12 or t == 17 or t == 23:
q = 5
elif t == 10 or t == 16 or t == 21 or t == 27:
q = 3
if ((m == 1 or m == 3 or m == 5 or m == 7 or
m == 8 or m == 10 or m == 12) and n <= 31) or
(m == 2 and n <= 28 + l) or ((m == 4 or m == 6 or
m == 9 or m == 11) and n <= 30):
weekDay = (day + q) % 7
months = ["Yanvar", "Fevral", "Mart",
"Aprel", "May", "Iyun", "Iyul", "Avgust",
"Sentabr", "Oktabr", "Noyabr", "Dekabr"]
weekDays = ["Yakshanba", "Dushanba",
"Seshanba", "Chorshanba", "Payshanba", "Juma",
"Shanba"]
animal_signs = [ "Maymun", "Tovuq",
"It", "To'ng'iz", "Sichqon", "Sigir", "Yo'lbars",
"Quyon", "Baliq", "Ilon", "Ot", "Qo'y",]
animal_sign = animal_signs[y % 12]
print(f"{animal_sign} muchali, {y}-yil
{n}-{months[m-1]},
{weekDays[weekDay]}
{day//7+1}-hafta {day}-kun")
else:
print(" xatolik kunda ")
else:
print(" xatolik ")
if name == "main":
main()
XULOSA:
C++ kodi va Python kodi orasidagi
asosiy farqlar quyidagilar:
Umumiy qilib aytganda, C++ kodi
sintaktik
jihatdan
murakkab,
lekin
performansi yuqori, Python kodi esa
sintaktik
jihatdan
sodda,
lekin
performansi past. Har bir til o‘z
ustunliklari va kamchiliklariga ega.
C++ dasturlash tilida simvollarni
raqamga hamda raqamlarni simvollarga
o'zgartirish uchun `int` va `char` tipidagi
ma'lumotlar bilan ishlanadi.
Python dasturlash tilida `ord()` va
`chr()` funktsiyalaridan foydalaniladi.
`ord()` funktsiyasi belgining Unicode
qiymatini qaytaradi va `chr()` funktsiyasi
berilgan.
Unicode
qiymatiga
mos
keluvchi belgini qaytaradi.
C++ va Python tillarida brayl
alifbosidan lotin alifbosiga o'tish uchun
foydalanish mumkin bo'lgan usullar bir
xil bo'lib, faqat sintaksisida farq bor.
Foydalanilgan adabiyotlar (Reference List)
1.
D.S. Malik C++ Programming: From Problem Analysis to Program Design. Seventh
Edition. Course Technology, 2014.-1488 p.
2.
Madraximov Sh.F., Ikramov A.M., Babajanov M.R. C++ tilida programmalash bo’yicha
masalalar to’plami. O’quv qo’llanma. T., O’zbekiston Milliy universiteti, “Universitet”
nashriyoti, 2014. - 160 b.
Universal International Scientific Journal
59
UNIVERSAL international scientific journal
3.
Fozilov, Shavkatjon Ibrohimjon o‘g‘li. Ovozni tanish algoritmlari. Oriental renaissance:
Innovative, educational, natural and social sciences 2.5-2 (2022): 553-562.
4.
Fozilov Shavkatjon Ibrohimjon
o‘g‘li
. Intellektual ta'lim tizimlarida bilimlarni
tizimlashtirish usullari. Science and innovation 2.Special Issue 3 (2023): 808-812.
5.
Aripov M., Madraximov A. Informatika, informasion texnologiyalar. Darslik. T.,TDYul,
2004 y.
