Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Örnek Girilen bir yılın verilen bir gününün hangi ayda olduğunu hesaplayan bir C/C++ programı yazalım ve akış diyagramını çizelim. Örneğin: 2004 yılın 42. günü şubat ayındadır. Bu problemi çözerken yılın aylarını ifade eden 12 elemana sahip bir “söz dizisi/string” dizisi ve ayrıca ayların gün sayılarını da sırası ile tutan 12 elemana sahip bir tamsayı dizisi kullanacağız
Bir “söz dizisi/string” dizisi, ya elamanları karakter işaretçi olacak biçimde yada boyutu bir artırılarak bildirilir; char *aylar[] = {"OCAK", "SUBAT", "MART", "NISAN", "MAYIS", "HAZIRAN", "TEMMUZ", "AGUSTOS", "EYLUL", "EKIM", "KASIM", "ARALIK"}; char aylar[][7] = {"OCAK", "SUBAT", "MART", "NISAN", "MAYIS", "HAZIRAN", "TEMMUZ", "AGUSTOS", "EYLUL", "EKIM", "KASIM", "ARALIK"}; Programı oluştururken dikkat etmemiz gereken bir husus da 4’ e tam bölünen yılarda şubat ayının 29 gün olmasıdır.
#include char *aylar[] = {"OCAK", "SUBAT", "MART", "NISAN", "MAYIS", "HAZIRAN", "TEMMUZ", "AGUSTOS", "EYLUL", "EKIM", "KASIM", "ARALIK"}; int ngun[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; void main(void) { int yil, t, gun, i; clrscr(); printf("YIL girin: "); scanf("%d",&yil); printf("kacinci gun: "); scanf("%d",&gun); t=0; if(yil%4==0) ngun[1]=29; for(i=0;i<12;i++) {t=t+ngun[i]; if(t>=gun) break; } printf("%d. gun %s ayindadir", gun, aylar[i]); getch(); }
Örnek : Bir fonksiyonun belirli bir aralıkta hesabı analitik yollar ile zor olabilir veya mümkün olmayabilir. Bu gibi durumlarda sayısal integrasyon yöntemlerine başvurulur. Simpson Kuralı bu yöntemlerden biridir. Simpson Kuralı aşağıdaki şekilde ifade edilebilir;
y=f(x) şeklinde bir fonksiyonun x=a ile x=b arasında integralinin hesabı, (a,b) aralığında fonksiyon eğrisi ile x ekseni arasında kalan alana eşittir. Simpson Kuralına göre (a,b) aralığını yukarıdaki şekilde olduğu gibi n parçaya bölerek aşağıdaki integral hesabını yazabiliriz;
#include double integral (float, float, int); double fonk(float); int n; void main(void) { float bas,son; int bs; double sonuc; clrscr(); printf("integral aralik baslangici: "); scanf("%f",&bas); printf("integral aralik sonu: "); scanf("%f",&son); printf("aralik bolum sayisi (cift): "); scanf("%d",&bs); sonuc=integral(bas,son,bs); printf("integral degeri : %f ", sonuc); getch(); } double integral(float a, float b, int n) {double F[100], toplam, integ; float h,x; int i; h=(b-a)/n; x=a; for(i=0;i<=n;i++) {F[i]=fonk(x); x=x+h;} toplam=0; for(i=1;i<n;i+=2) toplam=toplam+4*F[i]+2*F[i+1]; integ=(h/3)*(toplam+F[0]-F[n]); return integ; } double fonk(float z) {float f; f=exp(-4* z)*pow((0.5+z),5); /*hazir C matematik fonksiyonlari */ return f; }
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz