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?
 

Geri
Yukarı