Girilen Sayının, Herhangi Bir Sayının Üssü Olup Olmadığını Kontrol Etme
C Programlama dilinde girilen bir sayının, herhangi bir sayının üssü olup olmadığını kontrol etmek için logaritma ya da bir döngü kullanarak çözebiliriz. Bu örnekte iki farklı yolu da göstereceğiz.
Yöntem 1 (logaritma ve logaritma özellikleri kullanarak)
C Programlama Dilinde math kütüphanesi sayesinde 10 tabanında ya da e tabanında logaritma kullanabiliyoruz. Bu sorunu logaritma özellikleri kullanarak çok basit bir şekilde yapabiliriz.
Örn: 1024 sayısının 2’nin üssü olup olmadığını kontrol etmek için;
log21024 = x ile bulabiliriz. x değeri eğer integer (tamsayı) ise 1024, 2 nin üsstü diyebiliriz. Bunu yapabilmek için;
log21024 = log101024 / log102 (logaritma özelliklerinden geliyor) şeklinde kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <stdio.h> #include <math.h> int main() { float sayi, us, sonuc; printf("Sayi Giriniz: "); scanf("%f", &sayi); printf("Sonuc Giriniz: "); scanf("%f", &sonuc); us = log10(sonuc) / log10(sayi); if(us / (int) us == 1 ) printf("%d ^ %d = %d\n", (int)sayi, (int)us, (int)sonuc); else if (sonuc == 1) printf("%d ^ %d = %d\n", (int)sayi, 0, (int)sonuc); else printf("ussu degildir\n"); return 0; } |
Yöntem 2 (döngü kullarak)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <stdio.h> int main() { int sayi, us, sonuc, sayac, gecici; printf("Sayi Giriniz: "); scanf("%d", &sayi); printf("Sonuc Giriniz: "); scanf("%d", &sonuc); gecici = sayi; sayac = 1; while (gecici < sonuc) { gecici *= sayi; sayac++; } if (gecici == sonuc) printf("%d ^ %d = %d\n", sayi, sayac, sonuc); else if (sonuc == 1) printf("%d ^ 0 = %d\n", sayi, sonuc); else printf("ussu degildir"); return 0; } |
Leave a reply
Lütfen yorum için giriş yap ve yakayıt ol Teşekkürler .