C++ if kullanmadan hesap makinesi yapma

Emre Bilen

Decapat
Katılım
5 Mart 2022
Mesajlar
43
Daha fazla  
Cinsiyet
Erkek
C++ ogreniyorum. İf kullanmadan hesap makinesi yapabilecegim soylendi. İnternette arastirdim bir turlu bulamadim. Bilen birisi varsa soyleyebilir mi?
 
Switch-case de mi kullanamazsın?

C++:
#include <iostream>
 
using namespace std;
 
int main()
{
   int sayi1,sayi2,secim,sonuc;
   cout<<"Sayi giriniz :"; cin>>sayi1;
   cout<<"Sayi giriniz :"; cin>>sayi2;
   cout<<"Yapmak istediginiz islemi seciniz \n 1.Toplama \n 2.Cikarma \n 3.Carpma \n 4.Bolme \n"; cin>>secim;
 
   switch(secim)
   {
      case 1:
         sonuc=sayi1+sayi2;
         break;
      case 2:
         sonuc=sayi1-sayi2;
         break;
      case 3:
         sonuc=sayi1*sayi2;
         break;
      case 4:
         sonuc=sayi1/sayi2;
         break;
      default:
         cout<<"Lütfen 1 ile 4 arasında bir sayi giriniz";
         break;
   }
   cout<<"islem sonucunuz = "<<sonuc;
   return 0;
}
 
Switch- Case'i kastetmiş olmalılar. Benim bildiğim if dışındaki mantıksal işlem komutu bu. Zaten mantıksal işlem komutu olmadan hesap makinesi yapamazsın.
 
Çok anladığım bir şey değil ama son satırsa ok yönleri ters bundan olabilir mi diğer satırlarda farklı çünkü ok yönleri sanki sağa doğru bakmalı olabilir mi?

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Switch-case de mi kullanamazsın?

C++:
#include <iostream>
 
using namespace std;
 
int main()
{
   int sayi1,sayi2,secim,sonuc;
   cout<<"Sayi giriniz :"; cin>>sayi1;
   cout<<"Sayi giriniz :"; cin>>sayi2;
   cout<<"Yapmak istediginiz islemi seciniz \n 1.Toplama \n 2.Cikarma \n 3.Carpma \n 4.Bolme \n"; cin>>secim;
 
   switch(secim)
   {
      case 1:
         sonuc=sayi1+sayi2;
         break;
      case 2:
         sonuc=sayi1-sayi2;
         break;
      case 3:
         sonuc=sayi1*sayi2;
         break;
      case 4:
         sonuc=sayi1/sayi2;
         break;
      default:
         cout<<"Lütfen 1 ile 4 arasında bir sayi giriniz";
         break;
   }
   cout<<"islem sonucunuz = "<<sonuc;
   return 0;
}
Yada reflection kullanılarakta yapılabilir. Şu şekilde

C++:
#include <iostream>
#include <map>
#include <string>
#include <functional>
using namespace std;

double sum(double num1, double num2) {
    return num1 + num2;
}
double sub(double num1, double num2) {
    return num1 - num2;
}
double multi(double num1, double num2) {
    return num1 * num2;
}
double divide(double num1, double num2) {
    return num1 / num2;
}

int main()
{
    map<string, function<double(double, double)>> operations;
    
    operations["+"] = sum;
    operations["-"] = sub;
    operations["*"] = multi;
    operations["/"] = divide;
    string op;
    double num1, num2, result=0.f;
    cin>>num1;
    cin>>num2;
    cin>>op;
    if (operations.find(op) != operations.end()) {
        result = operations[op](num1, num2);
    }
    cout << result << endl;
    return 0;
}

JavaScript de de şu şekilde yapılır;

JavaScript:
const operations = {
  "+": (n1, n2) => {
    return n1+n2;
  },
  "-": (n1, n2) => {
    return n1-n2;
  },
  "*": (n1, n2) => {
    return n1*n2;
  },
  "/": (n1, n2) => {
    return n1/n2;
  }
}

const num1 = 5, num2 = 10

const test = (expected, op) => {
  return expected === operations[op](num1, num2)
}

console.log(`
  sum test: ${test(num1 + num2, "+")},
  sub test: ${test(num1 - num2, "-")},
  mul test: ${test(num1 * num2, "*")},
  div test: ${test(num1 / num2, "/")},
`)

Genel olarak bu tür kullanımlar da switch case veya if else kullanımını tercih etmiyorum.
 

Geri
Yukarı