Mualliflar

DOI:

https://doi.org/10.71337/inlibrary.uz.universaljurnal.74381

Kalit so‘zlar:

Gregorian kalendar kabisa milodiy python c

Annotasiya

Bu maqola berilgan yil, oy, kunlarni algorit yordamida  C++ va Python dasturlash tillarida o’tkazishni ko’rib chiqilgan.

 


background image

UN

IV

ERSA

L intern

atio

n

al

sc

ien

tific j

o

u

rn

al

www.universaljurnal.uz

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

2024, 1(2)

Universal Xalqaro Ilmiy Jurnal

Jurnalning bosh sahifasi:

https://universaljurnal.uz


background image

www.universaljurnal.uz

Universal International Scientific Journal

2024, 1(2)

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;


background image

www.universaljurnal.uz

Universal International Scientific Journal

2024, 1(2)

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;


background image

www.universaljurnal.uz

Universal International Scientific Journal

2024, 1(2)

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


background image

www.universaljurnal.uz

Universal International Scientific Journal

2024, 1(2)

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.


background image

www.universaljurnal.uz

Universal International Scientific Journal

2024, 1(2)

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.

Bibliografik manbalar

D.S. Malik C++ Programming: From Problem Analysis to Program Design. Seventh Edition. Course Technology, 2014.-1488 p.

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.

Fozilov, Shavkatjon Ibrohimjon o‘g‘li. Ovozni tanish algoritmlari. Oriental renaissance: Innovative, educational, natural and social sciences 2.5-2 (2022): 553-562.

Fozilov Shavkatjon Ibrohimjon o‘g‘li. Intellektual ta'lim tizimlarida bilimlarni tizimlashtirish usullari. Science and innovation 2.Special Issue 3 (2023): 808-812.

Aripov M., Madraximov A. Informatika, informasion texnologiyalar. Darslik. T.,TDYul, 2004 y.