C++ hata

Cins ve karman çorman yazımınız dışında bir sorun ben de göremedim.
G++'ı direkt kullanıyor olabilirsiniz. Belki de onunla alakalıdır. Dolusuyla derleme seçeneği var.

Aşağıdaki kod MSVC ile C++17 standardında istediğinizi düşündüğüm şekilde çalışıyor.
Kod:
#include <iostream>
#include <string>
#include <windows.h>
#include <clocale>

int main() {
    setlocale(LC_ALL, "Turkish");
   
    std::string islem;
    auto sayi1 = 0l;
    auto sayi2 = 0l;
    auto topla = 0l;
    auto cikar = 0l;
    auto carp = 0l;
    auto kalan = 0l;
    auto sayi1bolum = 0.0;
    auto sayi2bolum = 0.0;
    auto bolum = 0.0;

    do {
        system("cls");
        system("color a");
        std::cout << "\n\nHesap Makinesi\n1. İşlem: Toplama\n2. İşlem: Çıkarma\n3. İşlem: Çarpma\n4. İşlem: Bölme\n5. İşlem: Kalan\n0. İşlem: Çıkış\n";
        std::cout << "\nİşlem: ";
        std::cin >> islem;

        if (islem == "0") {
            system("cls");
            system("color c");
            std::cout << "Çıkış yapılıyor...";
            std::cout << std::endl;
            Sleep(1000);
            std::cout << "Çıkış yapıldı!";
            return 0;
        }
        else if (islem == "1") {
            std::cout << "1. Sayı: ";
            std::cin >> sayi1;
            std::cout << "2. Sayı: ";
            std::cin >> sayi2;
           
            topla = sayi1 + sayi2;
            std::cout << sayi1 << " + " << sayi2 << " = " << topla;
            Sleep(1000);
            std::cin.get();
        }
        else if (islem == "2") {
            std::cout << "1. Sayı: ";
            std::cin >> sayi1;
            std::cout << "2. Sayı: ";
            std::cin >> sayi2;

            cikar = sayi1 - sayi2;
            std::cout << sayi1 << " - " << sayi2 << " = " << topla;
            Sleep(1000);
            std::cin.get();
        }
        else if (islem == "3") {
            std::cout << "1. Sayı: ";
            std::cin >> sayi1;
            std::cout << "2. Sayı: ";
            std::cin >> sayi2;

            carp = sayi1 * sayi2;
            std::cout << sayi1 << " * " << sayi2 << " = " << carp;
            Sleep(1000);
            std::cin.get();
        }
        else if (islem == "4") {
            std::cout << "1. Sayı: ";
            std::cin >> sayi1bolum;
            std::cout << "2. Sayı: ";
            std::cin >> sayi2bolum;

            bolum = sayi1bolum / sayi2bolum;
            std::cout << sayi1bolum << " / " << sayi2bolum << " = " << bolum;
            Sleep(1000);
            std::cin.get();
        }
        else if (islem == "5") {
            std::cout << "1. Sayı: ";
            std::cin >> sayi1;
            std::cout << "2. Sayı: ";
            std::cin >> sayi2;

            kalan = sayi1 % sayi2;
            std::cout << sayi1 << " % " << sayi2 << " = " << kalan;
            Sleep(1000);
            std::cin.get();
        }
        else {
            std::cout << "Lütfen tablodaki işlemlerden birisini giriniz.";
            Sleep(1000);
            std::cin.get();
        }
    } while (1);

}

setlocale'in dönüş değerinin NULL olup olmamasını kontrol eder misiniz?
 
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

Geri
Yukarı