Kodunuzu biraz degistirdim.
Tek degistirdigim sey long long int
vefloat
yerine long double
kullanmak oldu. Tabii ki buna uygun sekilde scanf
in okuma stringini "%Lf"
ile degistirdim ve pow
fonksyonu yerine powl
fonksyonunu kullandim.
Verdiginiz girdiler ile $(100,100,100)$ gelen sonuc
Ulke nufusunu giriniz: 100
Yillik artis yuzdesini giriniz: 100
Kac yil sonrasi icin nufusu ogrenmek istiyorsunuz? 100
126765060022822940149670320537600.000000
Aradiginiz cevap bu mu acaba ?
Kodun degistirilmis hali asagidadir.
int main(){
int bed3;
long double a3, bed1;
long double bed2,abc, a1,a2;
printf("Ulke nufusunu giriniz: ");
scanf("%Lf", &bed1);
if(bed1<2)
{
printf("Hatali giris: Nufus,en az 2 olmali.");
}
else
{
printf("Yillik artis yuzdesini giriniz: ");
scanf("%Lf", &bed2);
if(bed2<0)
{
printf("Hatali giris: Artis yuzdesi negatif olmamali.");
}
else
{
printf("Kac yil sonrasi icin nufusu ogrenmek istiyorsunuz? ");
scanf("%d", &bed3);
if(bed3<0)
{
printf("Hatali giris: Yil sayisi 0'dan buyuk olmali!");
}
else
{
abc=bed2/100;
a1=1+abc;
a2=powl(a1,bed3);
a3=bed1*a2;
printf(" %Lf \n", a3);
}
}
}
}
Yorumun buradan sonrasi estetik ile alakali.
Eger kullandigimiz degiskenlere daha guzel isimler verirsek kodu anlamak kolaylasir. Ileride geri donup baktigimizda kodumuza ne yaptigimizi daha iyi hatirlariz. Kodu yukaridan asagi okuyoruz. Onemli seyler yukarida olsa iyi olur. C makrolari bazen dostumuzdur.
#define Hata_Makrosu(X,MinimumDeger) \
do \
{ \
if(X < MinimumDeger) \
{ \
printf("Hatali giris: " #X " en az" #MinimumDeger "olmali.\n"); \
} \
} \
while(0); \
int main(){
int yil_sayisi;
long double tahmin, nufus;
long double artis_yuzdesi,artis ;
printf("Ulke nufusunu giriniz: ");
scanf("%Lf", &nufus);
printf("Yillik artis yuzdesini giriniz: ");
scanf("%Lf", &artis_yuzdesi);
printf("Kac yil sonrasi icin nufusu ogrenmek istiyorsunuz? ");
scanf("%d", &yil_sayisi);
if(nufus>=2 && artis_yuzdesi>=0 && yil_sayisi>=0)
{
artis=1+(artis_yuzdesi/100);
tahmin=nufus*powl(artis,yil_sayisi);;
printf(" %Lf \n", tahmin);
}
else
{
Hata_Makrosu(nufus,2);
Hata_Makrosu(artis_yuzdesi,0);
Hata_Makrosu(yil_sayisi,0);
}
}