C++ toplama çıkarma islemi

Kunkka

Hectopat
Katılım
19 Ekim 2019
Mesajlar
1.422
Çözümler
4
Yer
Dire
Kod:
#include <iostream>
using namespace std;
int main ()
{
int a,b;
string c;
cout <<"Enter the operation type (+ or -): "; cin >> c;
cout << "Enter the numbers: "; cin >> a >>b;
if (a==0 || b==0)
{
cout <<"Operation can not be done";
}
else if (c=="+" || c=="-")
{
if (c=="+")
{
double r;
r=(1/a)+(1/b);
cout <<"******\n";
cout <<"1/" << a << "+" <<"1/" << b << "=" << r << endl;
}
else
{
double r;
r=(1/a)-(1/b);
cout <<"******\n";
cout <<"1/" << a << "-" <<"1/" << b << "=" << r << endl;
}

}
else
{
cout <<"Invalid operation";
}
}

Program linkte bulunmaktadır.
İşlemi yaptığımda sonuç 0 geliyor, problemi çözemedim.
 
Son düzenleyen: Moderatör:
a ve b'yi double olarak tanımlamalısın. Integer olarak tanımladığın için ondalık olan sunucu otomatik olarak 0'a yuvarlayıp gösteriyor.
 
C++:
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    string c;
    cout << "Enter the operation type (+ or -): "; cin >> c;
    cout << "Enter the numbers: "; cin >> a >> b;
    if (a == 0 || b == 0)
    {
        cout << "Operation can not be done";
    }
    else if (c == "+" || c == "-")
    {
        if (c == "+")
        {
            int r;
            r = a + b;
            cout << "**\n";
            cout << "result : " << a << " + " << b << " = "  << r;
        }
        else
        {
            int r;
            r = a - b;
            cout << "**\n";
            cout << "result : " << a << " + " << b << " = " << r;
        }

    }
    else
    {
        cout << "Invalid operation";
    }
}

1583955970321.png


Eğer isterseniz bu şekilde yaptım. Sorunuza cevap arıyorsanız 1/sayı yaptığınız için sonuç sürekli 0 geliyor.
 
Indentation'a da dikkat etmen ileride işine yarar.
Sorun 1/a+1/b'yi r yapman. a bir integer. 1/a dediğin an bu bir integer olur. Normalde değeri 0,xyz olması gerekirken veri kaybına uğrarsın. 1.0/a yaparsan veri kaybı olmaz. Ya da typecasting yaparsın.
Integer/integer işleminin sonucu integer olur. Double/integer ya da integer/double işleminin sonucu ise double olur. En ayrıntılı hangisi ise ona göre sonucu elde eder.
 
a ve b'yi double olarak tanımlamalısın. Integer olarak tanımladığın için ondalık olan sunucu otomatik olarak 0'a yuvarlayıp gösteriyor.
double olarak atayınca 0 harici bir sonuç verdi lakin fotoğraftaki gibi yazdırmam gerekiyor. Mümkün müdür?
 

Dosya Ekleri

  • Adsız.png
    Adsız.png
    21,6 KB · Görüntüleme: 32
Sadeleştirme sorun olmayacaksa çıkarmada pay b - a, payda a * b olur. Toplamada ise pay a + b, payda yine a * b olur. Ancak 1 / 2 yerine 10 / 20 gibi sonuçlar dönebilir.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı