şansını mı denemek istiyorsun? öyleyse, rastgele bir yazıyı okumaya ne dersin?

C ile Enumeration Yapısının Kullanımı


Enumeration Integer Constant'lardan oluşan bir set olarak nitelendirilebilir. Tanımlayacağımız yapı ve fonksiyonlarla Input olarak vereceğimiz herhangi bir günün yılın kaçıncı gününe denk geldiğini bulacağız.


Enum yapısıyla bir yıla ait ayları 1'den 12'ye kadar numaralandırıyoruz. Burada başlangıç olarak Ocak ayına 1 değeri set ediliyor. Diğer aylar da bu değer baz alınarak numaralandırılıyor.

#include <stdio.h>

#include <stdlib.h>
enum yil { Ocak=1, Subat, Mart, Nisan, Mayis, Haziran,
Temmuz, Agustos, Eylul, Ekim, Kasim,Aralik} ay ;


Sonrasında, input olarak vereceğimiz yıl ve ay parametrelerinden belirtilen aya kadar olan gün toplamını bulan fonksiyonu yazıyoruz. Burada artık yıllar için aynı fonksiyonun benzeri (gunbula) Mart ayından itibaren "sum" değeri 1 artılarak tanımlanıyor. Çünkü artık yıllarda Şubat ayı 29 gün çekiyor.

int gunbul(enum yil);
int gunbula(enum yil);
int gunbul(enum yil ay){
int sum;
switch(ay)
{
case Ocak:
sum=0; break;
case Subat:
sum=31; break;
case Mart:
sum=59; break;
case Nisan:
sum=90; break;
case Mayis:
sum=120; break;
case Haziran:
sum=151; break;
case Temmuz:
sum=181; break;
case Agustos:
sum=212; break;
case Eylul:
sum=242; break;
case Ekim:
sum=273; break;
case Kasim:
sum=303; break;
case Aralik:
sum=334; break;
}
return sum;
}

Son olarak gerekli input'ların verilerek yazdığımız fonksiyonu çağıran ve bize sonucu döndüren main() fonksiyonu aşağıdaki gibi yazılabilir.

int main()
{
int an;

yil mois;

int jour;
int res;
printf("Seneyi (Or: 1997) Seklinde Giriniz :");
scanf("%d",&an);
printf("\nAy ve gunu (Or: 12 30) Seklinde Giriniz :");
scanf("%d %d",&mois,&jour);
printf("\n");

if ((an%4)==0)
{
ay=mois;
res=gunbula(ay)+jour;
printf("Yilin %d . gunundesiniz...",res);
system("pause");
return 0;
}
else
{
ay=mois;
res=gunbul(ay)+jour;
printf("Yilin %d . gunundesiniz...",res);
system("pause");
return 0;
}
}

Not:Yukardaki kod DEV C++ Compiller ile derlenmiştir.

Hiç yorum yok:

 
Ziptime