C programlama dilinde bol miktarda algoritma öğrenmek bol miktarda alıştırma yapmak bu programlama dilini en iyi şekilde öğrenmenizi sağlayacaktır. Bu örneğimizde analog bir saatte Akrep ile yelkovan arasındaki açıyı bulan bir program yazacağız. Bunu sizlere 2 farklı yoldan çözen 2 farklı programla göstermek istiyorum, çünkü programcı demek bir programı birden fazla yoldan çözmeye çalışan, daha çok algoritma geliştirebilen demektir. Siz farklı bir yol bulduysanız lütfen bizimle paylaşın.
İlk yolumuz matematiksel formülü kullanmak olacaktır. Gayet basit bir formül ve algoritma.
Aradaki açı = Saat x 30 - Dakika x 11/2 aslında bölü 2 hepsinin altındadır ancak 60/2 yaparak o kısmı 30 diye direk aldım..
#include<stdio.h>
int main()
{
double saat,dakika,aci;
printf("Acisini bulmak istediginiz Saat(0-12) ve Dakikayi giriniz: ";
scanf("%lf%lf",&saat,&dakika);
aci = (saat*30)-(dakika*5.5); /*bu kısımda aciyi az önce verdiğimiz formule göre hesaplattık*/
if(aci<0) /*aradaki açının negatif çıkma olasılıgını burada engellemiş olduk*/
{
aci = (dakika*5.5)-(saat*30);
}
printf("Saat %2.f : %2.f iken akrep ile yelkovan arasindaki aci %2.f'dir",saat,dakika,aci);
getchar();getchar();
return 0;
}
İkinci yolumuza gelince, ikinci yol tamamen mantık üzerine kurulmuştur.
Mantığımız tam olarak şöyle olmalıdır. Bir analog saatin tümü 360 derecedir. Ve 12 parçaya ayrılmıştır. 12 saat olduğu için ve her bir saat arasında 30 derecelik parçalar vardır. Bundan yararlanarak saatin kaç derece ilerleyeceğini bulduktan sonra bir de yelkovanın ne kadar ilerleyeceğini bulup ekleyerek ikisi arasındaki açıyı bulabiliriz..
#include<stdio.h>
int main()
{
int saat,dakika;
int x,y,akrep,yelkovan;
double sonuc;
printf("Saat ve dakika degerlerini giriniz:\n";
scanf("%d %d",&saat,&dakika);
x=saat*30;
y=30*dakika/60;
akrep=x+y;
yelkovan=6*dakika;
if(akrep>yelkovan)
{
sonuc=akrep-yelkovan;
}
else {
sonuc=yelkovan-akrep;
}
printf("Saat %d : %d iken akrep ile yelkovan arasindaki aci %2.f'dir",saat,dakika,sonuc);
getchar();getchar();
return 0;
}