1.9 Matematik (Math) Fonksiyonları

C++ dilinde matematiksel işlemleri gerçekleştirmek için çeşitli operatörler ve fonksiyonlar bulunmaktadır. Bu bölümde, C++'da matematiksel işlemleri nasıl yapabileceğinizi, cmath kütüphanesini kullanarak temel matematik fonksiyonlarını nasıl uygulayabileceğinizi ve bu konularla ilgili alıştırmaları öğreneceksiniz.

C++ Matematik Operatörleri

C++ dilinde matematiksel işlemler yapmak için kullanılan temel operatörler şunlardır:

Operatör
Açıklama
Örnek

+

Toplama

a + b

-

Çıkarma

a - b

*

Çarpma

a * b

/

Bölme

a / b

%

Modülüs (kalan)

a % b

++

Artırma

a++ veya ++a

--

Azaltma

a-- veya --a

Örnek Kod

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 3;

    cout << "Toplama: " << (a + b) << endl;       // 13
    cout << "Çıkarma: " << (a - b) << endl;      // 7
    cout << "Çarpma: " << (a * b) << endl;        // 30
    cout << "Bölme: " << (a / b) << endl;         // 3
    cout << "Modülüs: " << (a % b) << endl;      // 1

    // Artırma ve Azaltma
    cout << "a++: " << a++ << endl;               // 10, sonra a = 11
    cout << "++a: " << ++a << endl;               // 12
    cout << "a--: " << a-- << endl;               // 12, sonra a = 11
    cout << "--a: " << --a << endl;               // 10

    return 0;
}

Çıktı:

Toplama: 13
Çıkarma: 7
Çarpma: 30
Bölme: 3
Modülüs: 1
a++: 10
++a: 12
a--: 12
--a: 10

cmath Kütüphanesi

C++'da gelişmiş matematiksel işlemler gerçekleştirmek için <cmath> kütüphanesi kullanılır. Bu kütüphane, trigonometrik fonksiyonlar, üs alma, karekök gibi birçok fonksiyonu içerir.

cmath Kütüphanesini Dahil Etme:

#include <cmath>

Temel Matematik Fonksiyonları

<cmath> kütüphanesi içinde bulunan bazı temel matematik fonksiyonları şunlardır:

1. Mutlak Değer (abs)

Bir sayının mutlak değerini (pozitif değerini) döndürür.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int a = -10;
    double b = -5.5;

    cout << "abs(a): " << abs(a) << endl;       // 10
    cout << "abs(b): " << abs(b) << endl;       // 5.5

    return 0;
}

2. Karekök (sqrt)

Bir sayının karekökünü döndürür.

cppCopy code#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double num = 25.0;

    cout << "sqrt(num): " << sqrt(num) << endl; // 5

    return 0;
}

3. Üs Alma (pow)

Bir sayının belirtilen üssünü döndürür.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double base = 2.0;
    double exponent = 3.0;

    cout << "pow(base, exponent): " << pow(base, exponent) << endl; // 8

    return 0;
}

4. Sinüs (sin), Kosinüs (cos), Tanjant (tan)

Açıları radyan cinsinden alır ve trigonometrik değerleri döndürür.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double angle = 45.0;
    double radians = angle * (M_PI / 180.0); // Dereceyi radyana çevirme

    cout << "sin(" << angle << "°): " << sin(radians) << endl; // ~0.7071
    cout << "cos(" << angle << "°): " << cos(radians) << endl; // ~0.7071
    cout << "tan(" << angle << "°): " << tan(radians) << endl; // ~1

    return 0;
}

5. Logaritma (log, log10)

Doğal logaritmayı (log) ve 10 tabanında logaritmayı (log10) döndürür.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double num = 100.0;

    cout << "log(num): " << log(num) << endl;       // ~4.6052 (ln(100))
    cout << "log10(num): " << log10(num) << endl;   // 2 (log10(100))

    return 0;
}

6. Üstünü Al (exp)

e sayısının belirtilen üsse yükseltilmiş halini döndürür.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double exponent = 1.0;

    cout << "exp(exponent): " << exp(exponent) << endl; // ~2.7183 (e^1)

    return 0;
}

Rastgele Sayılar Üretme

C++'da rastgele sayılar üretmek için çeşitli yöntemler bulunmaktadır. Modern C++'da <random> kütüphanesi kullanılarak daha güvenilir ve esnek rastgele sayı üretimi yapılabilir.

Örnek: Basit Rastgele Sayı Üretimi

#include <iostream>
#include <cstdlib> // rand() ve srand() için
#include <ctime>   // time() için
using namespace std;

int main() {
    // Rastgele sayı üreteciyi başlatma
    srand(time(0));

    // 0 ile 99 arasında rastgele bir sayı üretme
    int randomNumber = rand() % 100;
    cout << "Rastgele Sayı: " << randomNumber << endl;

    return 0;
}

Modern C++ ile Rastgele Sayılar

#include <iostream>
#include <random>
using namespace std;

int main() {
    // Rastgele sayı üreteci oluşturma
    random_device rd;  // Cihazdan rastgele bitler alır
    mt19937 gen(rd()); // Mersenne Twister motoru
    uniform_int_distribution<> distrib(1, 100); // 1 ile 100 arasında

    // 10 rastgele sayı üretme
    for(int i = 0; i < 10; ++i) {
        cout << distrib(gen) << " ";
    }
    cout << endl;

    return 0;
}

Matematiksel Sabitler

C++'da matematiksel sabitler cmath kütüphanesi içinde tanımlanmıştır. Bazı yaygın sabitler şunlardır:

Sabit
Açıklama

M_PI

Pi sayısı (3.14159...)

M_E

Euler sayısı (2.71828...)

M_SQRT2

√2 (1.41421...)

M_LN2

ln(2) (0.693147...)

Örnek Kullanım

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    cout << "Pi: " << M_PI << endl;         // 3.14159...
    cout << "Euler Sayısı: " << M_E << endl; // 2.71828...
    cout << "Karekök 2: " << M_SQRT2 << endl; // 1.41421...
    cout << "ln(2): " << M_LN2 << endl;       // 0.693147...

    return 0;
}

Not: Bazı derleyicilerde M_PI gibi sabitler tanımlı olmayabilir. Bu durumda, kendi sabitlerinizi tanımlayabilirsiniz:

const double PI = 3.14159265358979323846;

Alıştırmalar

S1) Aşağıdaki C++ Kodunun Çıktısı Nedir?

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double num = -16.0;

    cout << "abs(num): " << abs(num) << endl;
    cout << "sqrt(abs(num)): " << sqrt(abs(num)) << endl;
    cout << "pow(2, 3): " << pow(2, 3) << endl;

    return 0;
}

a) abs(num): -16 b) abs(num): 16 c) sqrt(abs(num)): 4 d) pow(2, 3): 8 e) Tüm çıktılar doğru


S2) Aşağıdaki C++ Kodunun Çıktısı Nedir?

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double angle = 60.0;
    double radians = angle * (M_PI / 180.0);

    cout << "sin(60°): " << sin(radians) << endl;
    cout << "cos(60°): " << cos(radians) << endl;
    cout << "tan(60°): " << tan(radians) << endl;

    return 0;
}

a) sin(60°): 0.866025 b) cos(60°): 0.5 c) tan(60°): 1.73205 d) Hepsi doğru e) Hepsi yanlış


S3) Aşağıdaki C++ Kodunda Hangi Satır Hata Verir?

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double x = 9.0;
    double y = sqrt(x);
    double z = pow(x, 2);

    cout << "y: " << y << endl;
    cout << "z: " << z << endl;

    // double w = sqrt(-4.0); // Bu satır hata verir
    // cout << "w: " << w << endl;

    return 0;
}

a) double y = sqrt(x); b) double z = pow(x, 2); c) double w = sqrt(-4.0); d) Hiçbir satır hata vermez


S4) Aşağıdaki C++ Kodunun Çıktısı Nedir?

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double num = 8.0;

    cout << "log(num): " << log(num) << endl;       // Doğal logaritma (ln)
    cout << "log10(num): " << log10(num) << endl;   // 10 tabanında logaritma

    return 0;
}

a) log(num): 2.07944 b) log10(num): 0.90309 c) Her ikisi de doğru d) Her ikisi de yanlış


S5) Aşağıdaki C++ Kodunda Hangi Fonksiyon Kullanılarak C++ stringi C-Style stringe dönüştürülmüştür?

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

int main() {
    string cppString = "C++ ile string";
    const char* cString = cppString.c_str();

    cout << "C-Style String: " << cString << endl;
    return 0;
}

a) strcpy b) c_str c) strcat d) strlen

Last updated