[Soru] C++ For Dongusunde if, else yada switch kullanımı?

BaDGirLRiRi

Diamond Üye
Katılım
2 Şub 2021
Mesajlar
320
Beğeniler
50
c++ konsol uygulaması olarak fonksiyon içinde while dongusu icinde sürekli tuş basan 7 tane fonksiyonum var.Secime göre bunları çağırtmak istiyorum.
örnegin 1 otoz 2 otor 3 oto hp vs...
Consolda istenen fonksiyonlar için giriş alıyorum mesela otoz icin 1 oto r icin 2 secimi var 2 sini kullanmak istiyorsa 12 yazıp entere basıyor.
Bu string olan secimin icindeki for dongusunde aratarak tek tek alıyorum ve secilenleri calıstırıyorum.İlk olarak switch olarak aşşada kodları ekledim fonksiyonları yorum satırı olarak aldığımda sıkıntısız çalışıyor fakat threadlarla ilgili problem var sanırım bu konuda bilgisi olan varsa yazarsa iyi olur onun dısında if olarakda paylaşıyorum oradada ilk fonksiyon calısıyor digerleri calısmıyor.Benim secilenleri calıstırmam lazım bu konuda yardımlarınızı bekliyorum.

C++:
std::cout << "1=Otoz3\n2=OtoR\n3=OtoHP\n4=OtoMP\n5=OtoWolf\n6=OtoRepairSol\n7=OtoRepairSag\nSecimleri ekleyip enterlayiniz.\nOrnegin otoz otohp otomp icin 134 yazip enterleyin." << std::endl;
        sec:
        std::cin >> secim;

        std::cout << secim.length() << std::endl;

        for (char s : secim)
        {
   
            switch (s)
            {
            case '1':
                /*std::thread t1(otoz3);
                t1.join();*/
                std::cout << s << " Sectiniz.Bot basliyor." << std::endl;
                break;
            case '2':
                /*std::thread t2(otor);
                t2.join();*/
                std::cout << s << " Sectiniz.Bot basliyor." << std::endl;
                break;
            case '3':
                /*std::thread t3(otohp);
                t3.join();*/
                std::cout << s << " Sectiniz.Bot basliyor." << std::endl;
                break;
            case '4':
                /*std::thread t4(otomp);
                t4.join();*/
                std::cout << s << " Sectiniz.Bot basliyor." << std::endl;
                break;
            case '5':
                /*std::thread t5(otowolf);
                t5.join();*/
                break;
            case '6':
                /*std::thread t6(otorprsol);
                t6.join();*/
                std::cout << s << " Sectiniz.Bot basliyor." << std::endl;
                break;
            case '7':
               /*  std::thread t7(otorprsag);
               t7.join();*/
                std::cout << s << " Sectiniz.Bot basliyor." << std::endl;
           
                break;
            default:
                break;
            }
     
        }


casede threadlar çalışmıyor caselerin hepsinii değilde tek tek paragrafa aldıgımda ornek veriyorum case '2':{islem} o zaman ilk thread çalışıyor. digerleri çalışmıyor yani
std::thread t1(otoz3);
t1.join();
ilk casede bu çalıştığı zaman döngüde kalıyor. if else içinde aynısı geçerli.
ama şöyle yapabilirsek calısabilir mesela 1 2 3 secildi.
std::thread t1(otoz3);
std::thread t2(otor);
std::thread t3(otohp);
t1.join();
t2.join();
t3.join();

yani aslında aradığım casede takılı kalması degilde işlemi devam eden arka planda çalışan bir multithread task yontemi varsa o işimi rahat görür yada başka aklınıza gelen fikir varsa paylaşırsanız sevinirim.
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt