C++ ile Karmaşık Sayılarda Dört İşlem

5.050 kez okundu

Eki
12

Karmaşık sayılarla dört işlem, karmaşık gibi görünse de normal yapılan dört işlemden bir farkı yoktur. İşin matematiksel kısmını kısaca açıkladıktan sonra kod kısmına geçeceğim.

Karmaşık sayılarda toplama ve çıkarma işlemlerinde hatırlanacağı üzere sanal kısımla sanal kısım, reel kısımla reel kısım toplanır ya da çıkarılır. Karmaşık sayılarda bölme ve çarpma işlemlerinde ise durum biraz farklıdır. Çarpma işleminde, birinci sayının reel kısmı, ikinci sayının hem reel hem sanal kısmıyla çarpılır. Ardından da yine birinci sayının sanal kısmı ikinci sayının reel ve sanal kısmıyla çarpılır. Çarpımların işaretlerine göre toplama ya da çıkarma işlemleri yapılır. Bölme işleminde ise yine çarpmadan yararlanılır. İki sayı da paydanın eşleniği ile çarpılır. Böylece payda karmaşık sayıdan kurtulur. Pay kısmındaki işlem ise  standart çarpma işlemidir.

Kod kısmına gelindiğinde ise yapılacak işlem yine bilinen toplama, çıkarma ve çarpma işlemleridir. Kod bloğundaki yorum satırlarında kodu açıklamaya çalıştım. Bu yüzden burada açıklamaya gerek duymuyorum.


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include "iostream"
using namespace std;

//değişkenlerin ve fonksiyonların tutulduğu class
class karmasik
{

    private:
        double reel;
        double sanal;

    public:
        karmasik(){}
        karmasik(double x,double y);
        karmasik operator+(karmasik ikinciSayi);
        karmasik operator-(karmasik ikinciSayi);
        karmasik operator*(karmasik ikinciSayi);
        karmasik operator/(karmasik ikinciSayi);
        void ekranaYaz();
};

// reel ve sanal kısımlar atanıyor
karmasik::karmasik(double x, double y)
{
    reel=x;
    sanal=y;
}

//Toplama işlemi
karmasik karmasik::operator+(karmasik ikinciSayi)
{
    karmasik toplam;
    toplam.reel=reel+ikinciSayi.reel;
    toplam.sanal=sanal+ikinciSayi.sanal;

    return toplam;
}

//Çıkarma işlemi
karmasik karmasik::operator-(karmasik ikinciSayi)
{
    karmasik fark;
    fark.reel=reel-ikinciSayi.reel;
    fark.sanal=sanal-ikinciSayi.sanal;

    return fark;
}

//Çarpma işlemi
karmasik karmasik::operator*(karmasik ikinciSayi)
{
    karmasik carpim;
    carpim.reel=(reel*ikinciSayi.reel)-(sanal*ikinciSayi.sanal);
    carpim.sanal=(reel*ikinciSayi.sanal)+(sanal*ikinciSayi.reel);
    return carpim;
}

//Bölme işlemi
karmasik karmasik::operator/(karmasik ikinciSayi)
{
    karmasik bolum;
    karmasik pay;
    float payda;

    pay.reel=(reel*ikinciSayi.reel)+(sanal*ikinciSayi.sanal); //reel
    pay.sanal=(reel*(-ikinciSayi.sanal))+(sanal*ikinciSayi.reel);
    payda=(ikinciSayi.reel*ikinciSayi.reel)+(ikinciSayi.sanal*ikinciSayi.sanal);

    bolum.reel=pay.reel/payda;
    bolum.sanal=pay.sanal/payda;

    return bolum;
}

// Ekrana yazma fonksiyonu. Gereksiz sayılardan kurtarır.
// Yani if blokları içindeki kontroller, 0 + 2i gibi bir sonucu 2i olarak yazmayı sağlar.
void karmasik::ekranaYaz()
{
    if(sanal>0)
    {
        if(reel>0)
        {
            cout<<reel<<"+";
            cout<<sanal<<"i";
        }

        else if(reel==0)
        {
            cout<<sanal<<"i";
        }

        else if(reel<0)
        {
            cout<<reel<<"+";
            cout<<sanal<<"i";
        }
    }

    else if(sanal==0)
    {
        cout<<reel;
    }

    else if(sanal<0)
    {
        if(reel>0)
        {
            cout<<reel;
            cout<<sanal<<"i";
        }

        else if(reel==0)
        {
            cout<<sanal<<"i";
        }

        else if(reel<0)
        {
            cout<<reel;
            cout<<sanal<<"i";
        }
    }
}

int main()
{
// kullanıcıdan sayılar alınıyor

    double reel1, sanal1, reel2, sanal2;
    cout<<"Birinci Karmasik Sayinin Reel Kismini Giriniz: ";
    cin>>reel1;
    cout<<"Birinci Karmasik Sayinin Sanal Kismini Giriniz: ";
    cin>>sanal1;
    cout<<"Ikinci Karmasik Sayinin Reel Kismini Giriniz: ";
    cin>>reel2;
    cout<<"Ikinci Karmasik Sayinin Sanal Kismini Giriniz: ";
    cin>>sanal2;

    //karmasik sınıfından nesneler oluşturulup işleme tabi tutuluyor
    karmasik sayi1(reel1,sanal1);
    karmasik sayi2(reel2,sanal2);
    karmasik toplam, fark, carpim, bolum;
    toplam = sayi1+sayi2;
    fark = sayi1-sayi2;
    carpim = sayi1*sayi2;
    bolum = sayi1/sayi2;

    //ekrana sonuçlar yazılıyor 
    cout<<"\nGirilen Karmasik Sayilarin Toplami: ";
    toplam.ekranaYaz();
    cout<<"\nGirilen Karmasik Sayilarin Farki: ";
    fark.ekranaYaz();
    cout<<"\nGirilen Karmasik Sayilarin Carpimi: ";
    carpim.ekranaYaz();
    cout<<"\nGirilen Karmasik Sayilarin Bolumu: ";
    bolum.ekranaYaz();

    //Sonucu ekranda görebilmek(console u duraklatmak için) için bir input bekleniyor
    int a;
    cin>>a;
    //////

    return 0;
}

C++ ile karmaşık sayılarda dört işlem programının kodları bu şekilde. Değişken isimleri ile zaten neyin ne olduğu açıkça ortada. Yorum satırları da anlaşılmada yardımcı olacaktır.

Yorum Yaz! ( 0 )


Yayınlanma Tarihi: Çarşamba, Ekim 12th, 2011 14:54
Kategori: c ++ Programlama.
Bu yazıya yapılan yorumları takip etmek için RSS 2.0 'a bir tıkla üye olabilirsiniz.

Soru ve Görüşleriniz İçin Yorum Panelini Kullanabilirsiniz

Yorum yazarken lütfen Türkçemizin imla kurallarına uyunuz.
İmla kurallarına uymayan yorumlar ikaz edilmeksizin silinebilir!


bir + dört =

Yazılan yorumların yasal sorumluluğu, yorumun sahibine ait olup serefakyuz.com bundan sorumlu tutulamaz!