Visual Studio Konsol Hemen Kapanıyor

nagararcus

Decapat
Katılım
6 Haziran 2021
Mesajlar
201
Makaleler
1
Çözümler
1
Yer
Ege
Daha fazla  
Cinsiyet
Erkek
Meslek
EEM
Merhaba, Visual Studio'da girilen notlara göre harf notunu, geçip geçmediğini gösteren bir program yazdım. C++ dil. Visual Studio'nun terminalini kullanmak basit ama derleyicinin oluşturduğu .exe dosyasını kullandığımda komut yönetici(?) açılıyor. Notları giriyorum ardından bana ortalamayı ve sonucu vereceğinde hemen kapanıyor. Bir scanf veya getch fonksiyonuyla kapatmayı durdurabilirim ama kodun çok fazla çıkışı var. Yani en az 20 yere ekstra fonksiyon eklemem gerekicek. launch.json'dan stopatentry"true" yapıyorum ama bu sefer adım adım çalışıyor.
 
"Çıkmak için tıklayın" şeklinde yazdırıp, ne tıklanırsa tıklansın kapat komutu yazabilirsin. O sırada tıklanmayı bekler. Çok berbat bir çözüm ancak iş görecektir.
 
Artı -1 Eksi
"Çıkmak için tıklayın" şeklinde yazdırıp, ne tıklanırsa tıklansın kapat komutu yazabilirsin. O sırada tıklanmayı bekler. Çok berbat bir çözüm ancak iş görecektir.
namespace std kullanıyorsan std::cin.get(); yerine cin.get() yazman yeterli. Bunu yazmanın sebebi, ana fonksiyonun hemen return etmeden senden input beklemesi. Eğer yine olmazsa compile ettiğin .exe dosyasını CMD üzerinden aç. Onu da, .exe dosyasıyla aynı dizine geçip, dosya_ismi.exe şeklinde çalıştırabilirsin.
Tek bir return yok kodda. O yüzden 20 farklı yere input eklemem gerekicek. En iyisi VS Code terminalinden devam etmek. CMD üzerinden açmayı deniycem. Teşekkürler.
 
VS Code üzerinden terminal ile açınca sıkıntı yok.
İşin raconu böyle. Temel şeyler yapıyorsun. .exe olarak dünyaya dağıtmana gerek yok. Kaynak kodunu paylaşırsın, millet derleyip çalıştırır.
main fonksiyonuna return 0 yazmak yerine cin.get yazabilirsin. Aynı efor.
Tek bir return yok kodda.
main'de tek return olmalı. Programdan programa değişmekle beraber iyi bir program genel olarak bunu sağlar.
Bir fonksiyon yazın. Onun içinde cin.get alın. Sonra da exit dersiniz.
Her yanlış değer gireni kapıdan kovmak yerine farklı bir şekilde programı tasarlamanızı tavsiye ederim.
 
İşin raconu böyle. Temel şeyler yapıyorsun. .exe olarak dünyaya dağıtmana gerek yok. Kaynak kodunu paylaşırsın, millet derleyip çalıştırır.
main fonksiyonuna return 0 yazmak yerine cin.get yazabilirsin. Aynı efor.

main'de tek return olmalı. Programdan programa değişmekle beraber iyi bir program genel olarak bunu sağlar.
Bir fonksiyon yazın. Onun içinde cin.get alın. Sonra da exit dersiniz.
Her yanlış değer gireni kapıdan kovmak yerine farklı bir şekilde programı tasarlamanızı tavsiye ederim.
Daha yeniyim, teşekkürler. Kodda çok fazla gereksiz hamle, satır vb. şeyler var onun yerine yararlı şeyler eklemeyi deniycem.
 
main Fonksiyonu içinde kaç tane return var? Benim bildiğim en sonda return 0; yazılır.
C++:
        cout<<"\nDC yapan en yuksek ortamala degeriniz nedir?\n";
        cin>>sinir;
        if (sinir<0;sinir>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nVize notunuz nedir?";
        cin>>vize;
        if (vize<0;vize>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nFinal notunuz nedir?";
        cin>>final;
        if (final<0;final>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nVize notunuz % kac etkiliyor?";
        cin>>vizekat;
        if(vizekat<0;vizekat>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nFinal notunuz % kac etkiliyor?";
        cin>>finalkat;
        if (finalkat<0;finalkat>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

Bunlar sadece yarısı. Böyle yazmak yanlış bir tercih bence de. Ayrıca CMD'den .exe'yi çalıştırınca istediğime ulaştım bir nevi. Yine de programın beklemesi için bir girdi beklemesini eklemek şart oldu. Ayrıca öylesi daha mantlıklı.
 
C++:
        cout<<"\nDC yapan en yuksek ortamala degeriniz nedir?\n";
        cin>>sinir;
        if (sinir<0;sinir>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nVize notunuz nedir?";
        cin>>vize;
        if (vize<0;vize>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nFinal notunuz nedir?";
        cin>>final;
        if (final<0;final>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nVize notunuz % kac etkiliyor?";
        cin>>vizekat;
        if(vizekat<0;vizekat>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

        cout<<"\nFinal notunuz % kac etkiliyor?";
        cin>>finalkat;
        if (finalkat<0;finalkat>100){cout<<"Yanlis deger girdiniz";return 0;}
        else

Bunlar sadece yarısı. Böyle yazmak yanlış bir tercih bence de. Ayrıca CMD'den .exe'yi çalıştırınca istediğime ulaştım bir nevi. Yine de programın beklemesi için bir girdi beklemesini eklemek şart oldu. Ayrıca öylesi daha mantlıklı.
Çok garip bir kod olmuş. Neden en sonda return etmek yerine her if'ten sonra ettiniz ki?
 
yanlıs deger girdigini söyleyip kodu bitirmesini istemiştim. return eklemeden denedim mi hatırlamıyorum ama öyle yaparsam kod çalışmaya devam eder gibi geldi.
Hmm kodu bitirmek istediğinizi şimdi gördüm, ama else if yapısını kullanmak daha mantıklı olmaz mıydı?
 
Hmm kodu bitirmek istediğinizi şimdi gördüm, ama else if yapısını kullanmak daha mantıklı olmaz mıydı?
Olabilirdi hocam. Baya yeniyim bu işte, cin cout komutunu dün öğrendim, if elseyi bugün öğrendim. Sadece denemek istedim neler olabileceğini. Yazdığım şeyin bir çok yerinde gerçekten saçma satırlar var. Tek bir değişkenle kontrol edebileceğim yerde bir sürü if else kullanmışım. Demek istediğim, yeni öğrendiğim şeyleri böyle birazcık rastgele kullanarak denemeyi seviyorum. Hatta açıkcası kodu burda paylaşmaya bile utandım, çok üstünde durduğum bir şey olmamıştı.
 

Yeni konular

Geri
Yukarı