C++ İşlem Önceliği

Katılım
29 Aralık 2017
Mesajlar
99
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
C++ da yeniyim. Bölme işlemi biraz garip geldi. Mesela 2 ile 14'ü böldüğümde 0 çıkıyor ama 14 ile 2'yi böldüğümde 7 çıkıyor ama iki türlü de nasıl doğru cevabı çıkarmasını sağlarım? Yani ikisinde de 7 çıkması gerekiyor ve belki de kullanıcı ilk 2 sayısını girecek, sonra 14 girecek bu gibi durumları nasıl düzeltiyoruz?

C++:
#include <iostream>

using namespace std;

int main(){
setlocale(LC_ALL,"Turkish");
int s1,s2;

cout<<"İlk değeri gir: "<<endl;
cin >> s1;
cout<<"İkinci değeri gir: "<<endl;
cin>> s2;

cout<<s1<<" + " <<s2<< " = "<<s1+s2<<endl;
cout<<s1<<" - " <<s2<< " = "<<s1-s2<<endl;
cout<<s1<<" / " <<s2<< " = "<<((float)s1/(float)s2)<<endl;

return 0;
}
 
Hocam öyle bir şeyin olması mantıklı olmayabilir sanki 5'i 10'a bölünce farklı 10'u 5'e bölünce farklı sonuç alıyoruz sonuçta ikisinin aynı olmasını bekleme tam mantıklı olmayabilir ama emin değilim.
 
2 ıle 14'ü böldüğünde 7 çıkmaz ki, 0, 14 çıkar bunu yuvarlayınca 0 olur. Yani sen matematikte hata yapıyorsun 2/14 ile 14/2 aynı cevabı çıkartmaz :D. S1 ve S2'yi float tanımla.
 
int / int = int olur.
Eğer float veya double bir sonuç elde etmek istiyorsanız. Değişkenlerden en az bir tanesinin float/double olması gerekiyor.

double result = 2 / 14.0 ya da double result = 2 / (double)14 şeklinde bilinçli dönüşüm yapmanız gerekiyor.
 
Integer bölme öyledir. Alt taban fonksiyonu sonucu verir.
Denildiği gibi istediğin sonuç için türlerden birinin ondalıklı olması lazım. Ya da daha güzeli; typecasting denen şeyi yapacaksın. O parantezle yaptığın şey aslında o.
Ama C++'ta daha çok static_cast kullanılır bu iş için. Onu kullanmanı tavsiye ederim. Düzgün kod yazmaya alışkanlık olur.
 
Sanırım büyük olanın küçük olana bölünmesini sormuşsun. Büyük sayı ve küçük sayı için ayrı bir değişken oluştur(örneğin: bNumber ve sNumber) if ile hangisinin büyük olduğunu bul s1 büyük ise bNumber'ı s1'e, SNumber'ı s2'ye eşitle değilse tam tersini yap.
 
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.

Technopat Haberler

Yeni konular

Geri
Yukarı