Şimdi Ara

C++ Logaritma fonksiyonu (çözüldü)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
4.837
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Logaritma fonksiyonu yazmaya çalışıyorum.

    double getLogValue(int base, int value){ // logaritma alma fonksiyonu. taban ve değer giriyoruz 

    int val = value; // girdiğimiz değeri printf satırında ekrana yazdırmak için yedeğini aldım.

    int temp = 0; // logaritma hesabını yaparken şöyle bi yol izledim. Mesela log 2 tabanında 8. burda base=2, value=8.
    double sonuc = 0; // 8'i 1 bölümünü verene kadar 2'ye böldüm. her bölümde sonucu 1 arttırdım. 8/2 = 4. 4/2 = 2. 2/2 = 1. sonuc = 3

    while(temp!=1){
    temp = value / base;
    value = temp;
    sonuc++;}

    cout<<"Log "<<base<<" tabaninda "<<val<<" = "<<sonuc<<endl;
    return sonuc;
    }


    Eğer değer tabanın tam kuvvetiyse çalışıyor bu, yani 2 tabanında 8 cevap 3 veriyor ama 2 tabanında 9 yapınca çalışmıyor program. Yardımınız gerekli, şmdiden teşekkürler

    Edit: 2 tabanında 9 = 3 küsür bişey vermesi gerek ya, ben o küsüratı da hesaplamak istiyorum onu soruyorum



    < Bu mesaj bu kişi tarafından değiştirildi Bruoglione -- 14 Mart 2013; 11:39:08 >







  • math library varken ne gerek var böyle uğraşmaya.

    http://www.cplusplus.com/reference/cmath/

    ha bide eğer küsüratı da istiyorsan değişkenleri integer(int) tanımlamayacaksın.
    double falan tanımla düzelir o sorun.

    integer tam sayı demek. eğer float bir değere int olarak ulaşmak istersen sadece tam kısmını alır.

    eğer int bir değere float olarak ulaşmak istersen virgülten sonra 000 falan atar. yani tam ama gene ondalıklı kısımı gösteriyor gibi.


    başarılar



    < Bu mesaj bu kişi tarafından değiştirildi {engineer} -- 14 Mart 2013; 1:55:52 >




  • quote:

    Orijinalden alıntı: {engineer}

    math library varken ne gerek var böyle uğraşmaya.

    http://www.cplusplus.com/reference/cmath/

    ha bide eğer küsüratı da istiyorsan değişkenleri integer(int) tanımlamayacaksın.
    double falan tanımla düzelir o sorun.

    integer tam sayı demek. eğer float bir değere int olarak ulaşmak istersen sadece tam kısmını alır.

    eğer int bir değere float olarak ulaşmak istersen virgülten sonra 000 falan atar. yani tam ama gene ondalıklı kısımı gösteriyor gibi.


    başarılar

    math kütüphanesinde
    double getLog(int sayi)
    fonksiyonu var. Standart olarak 10 tabanında alıyor logaritmayı, anlatabildim mi? bana taban değerinide parametre olarak alacak logaritma fonksiyonu lazım
    double getLog(int taban, int sayi) prototipinde



    < Bu mesaj bu kişi tarafından değiştirildi Bruoglione -- 14 Mart 2013; 11:13:37 >




  • Tamam hallettim.

     C++ Logaritma fonksiyonu (çözüldü)

    formülünü kullandım.

    double getLogValue(double base, double value){ 

    double sonuc = 0;

    sonuc = log(value) / log(base);

    cout<<"Log "<<base<<" tabaninda "<<value<<" = "<<sonuc<<endl;
    return sonuc;
    }



    < Bu mesaj bu kişi tarafından değiştirildi Bruoglione -- 14 Mart 2013; 11:38:39 >
  • sorunu cidden güzel çözmüşün. hepimiz biliyoruz o formülü ama böyle bişeyde aklına gelen olmuyor
  • quote:

    Orijinalden alıntı: {engineer}

    sorunu cidden güzel çözmüşün. hepimiz biliyoruz o formülü ama böyle bişeyde aklına gelen olmuyor

    yazılımcılıkta çareler tükenmez
  • Yapay Zeka’dan İlgili Konular
    C# OLASILIK
    5 yıl önce açıldı
    c# Matrisler
    12 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.