Çözüldü C++'de swtich case içine if/else if kullanımı

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

vylox

Femtopat
Katılım
9 Ağustos 2020
Mesajlar
2
2 Gündür çabalıyorum ama beceremedim programlama bilgisi iyi olan varsa bir yardımcı olabilir mi? C++'da beginner seviyede yazıyorum şu an switch caseler ve if/ else if türevi komutlarla çalışıyorum. Devc++ IDE'da yazıyorum Visual Studio'dan da check ediyorum fakat alim satım seçtikten sonra hesaplamaları yapmıyor.
İstenirse .cpp dosyasını da atabilirim. Yardımlarınızı bekliyorum.

Untitled - Pastebin
 

Dosya Ekleri

  • helpp.png
    helpp.png
    22,7 KB · Görüntüleme: 105
Çözüm
Alim satım seçtikten sonra hesaplamaları yapmıyor.
Yapıyor.

Bu kısmı bile ben yazdırdım. Hiçbir şey hazırlamamışsın.

Öncelikle kurları sabit olarak tut. Sayı olarak değil. Yaz bi' güzel constexpr double euro1 = 3.85; diye. Adamdan hem isim hem soyisim iste. Para üstü hesapla. Eşitlikleri kontrol et. Ben buraya 1000 değeri girsem program patlar. Kod tekrarı yapıp durmuşsun. Fonksiyon kullan. Fonksiyona para metre olarak kuru yolla mesela. Her seferinde dolar için euro için ayrı ayrı metin yazmış olma. Hatta seçim kısmındaki metin için bile fonksiyon yapılabilir. Döngüleri de insanların anlayabileceği şekilde bırak. Satır sayısı fazla olunca daha hızlı çalışmıyor. Okunmasını zorlaştırıyor sadece.
Son olarak değişkenleri ilklendir. Git isim yerine boşluk koy, a koy, b koy. Ama koy. İleride saçma yerlerde hata çıkartır farkına bile varmazsın.

Bir yerde de switch içindeki default'tan sonra break vardı. Default'un içinde. Anlamsız.

Ekran Görüntüsü (4987).png
Çalışmayan kısmı da söyleseydin keşke. Oturup tüm ödevi öğrenmemizi bekleme.

Link olarak paylaşmış kodu.

Çalışmayan kısım şöyle; alım satımdan sonra miktar soruyor ya oradaki işlemden sonra if/else if yapısını bende yapmıyor aşağıda yazan arkadaşlar bende çalışıyor falan demişler ama dev C++ ile ve Visual Studio ile de denedim ama işlem adımlarını yaptıramadım.
Dönüşünüz için teşekkürler...
Yapıyor.

Bu kısmı bile ben yazdırdım. Hiçbir şey hazırlamamışsın.

Öncelikle kurları sabit olarak tut. Sayı olarak değil. Yaz bi' güzel constexpr double euro1 = 3.85; diye. Adamdan hem isim hem soyisim iste. Para üstü hesapla. Eşitlikleri kontrol et. Ben buraya 1000 değeri girsem program patlar. Kod tekrarı yapıp durmuşsun. Fonksiyon kullan. Fonksiyona para metre olarak kuru yolla mesela. Her seferinde dolar için Euro için ayrı ayrı metin yazmış olma. Hatta seçim kısmındaki metin için bile fonksiyon yapılabilir. Döngüleri de insanların anlayabileceği şekilde bırak. Satır sayısı fazla olunca daha hızlı çalışmıyor. Okunmasını zorlaştırıyor sadece.
Son olarak değişkenleri ilklendir. Git isim yerine boşluk koy, a koy, b koy. Ama koy. İleri de saçma yerlerde hata çıkartır farkına bile varmazsın.

Bir yerde de Switch içindeki Default'tan sonra break vardı. Default'un içinde. Anlamsız.

Eki Görüntüle 635226

Dediğim gibi beginner seviyedeyim öğrenmeye çalışıyorum, desteğiniz için çok teşekkürler dediklerinizi dinleyeceğim yarın bir bakayım bakalım baştan yazmayı ya da değişim yapmayı planlıyorum.
Euro ve Dolar'ı okudum sadece ama sıkıntı yok gibi geldi. Diğerlerini kopyala yapıştır mı yaptın? Ona göre kendi derleyicimde deneyeceğim.

Evet kopyala yapıştır ile ilerledim ama bende dev C++'da da Visual Studio'da da miktardan sonra çalışmıyor yani döviz kurlarının çarpımı olmadan program kapanıyor.
Euro ve Dolar'ı okudum sadece ama sıkıntı yok gibi geldi. Diğerlerini kopyala yapıştır mı yaptın? Ona göre kendi derleyicimde deneyeceğim.

Evet kopyala yapıştır ile ilerledim ama bende dev C++'da da Visual Studio'da da miktardan sonra çalışmıyor yani döviz kurlarının çarpımı olmadan program kapanıyor.

Kardeşim coderf#2503 Discord'dan bütün ödevi anlatayım burada kısa kısa mesajlar çok sağlıklı olmaz.
Burada da yardım edebilirim ama Discord üzerinden daha sağlıklı olur.

Eğer yarın gün içinde müsait olursanız size ulaşabilirim teşekkürler dönütünüz için.
Euro ve Dolar'ı okudum sadece ama sıkıntı yok gibi geldi. Diğerlerini kopyala yapıştır mı yaptın? Ona göre kendi derleyicimde deneyeceğim.

Evet kopyala yapıştır ile ilerledim ama bende dev C++'da da Visual Studio'da da miktardan sonra çalışmıyor yani döviz kurlarının çarpımı olmadan program kapanıyor.

Kardeşim coderf#2503 Discord'dan bütün ödevi anlatayım burada kısa kısa mesajlar çok sağlıklı olmaz.
Burada da yardım edebilirim ama Discord üzerinden daha sağlıklı olur.

Eğer yarın gün içinde müsait olursanız size ulaşabilirim teşekkürler dönütünüz için.

Yapıyor.

Bu kısmı bile ben yazdırdım. Hiçbir şey hazırlamamışsın.

Öncelikle kurları sabit olarak tut. Sayı olarak değil. Yaz bi' güzel constexpr double euro1 = 3.85; diye. Adamdan hem isim hem soyisim iste. Para üstü hesapla. Eşitlikleri kontrol et. Ben buraya 1000 değeri girsem program patlar. Kod tekrarı yapıp durmuşsun. Fonksiyon kullan. Fonksiyona para metre olarak kuru yolla mesela. Her seferinde dolar için Euro için ayrı ayrı metin yazmış olma. Hatta seçim kısmındaki metin için bile fonksiyon yapılabilir. Döngüleri de insanların anlayabileceği şekilde bırak. Satır sayısı fazla olunca daha hızlı çalışmıyor. Okunmasını zorlaştırıyor sadece.
Son olarak değişkenleri ilklendir. Git isim yerine boşluk koy, a koy, b koy. Ama koy. İleri de saçma yerlerde hata çıkartır farkına bile varmazsın.

Bir yerde de Switch içindeki Default'tan sonra break vardı. Default'un içinde. Anlamsız.

Eki Görüntüle 635226

Acaba duruyor ise kodu benimle paylaşma ihtimalimiz var mı düzenleme yaptığınız kısımları incelemek ve hatamı görmek istiyorum da.
2 Gündür çabalıyorum ama beceremedim programlama bilgisi iyi olan varsa bir yardımcı olabilir mi? C++'da beginner seviyede yazıyorum şu an Switch caseler ve if/ else if türevi komutlarla çalışıyorum. Devc++ IDE'da yazıyorum Visual Studio'dan da check ediyorum fakat alim satım seçtikten sonra hesaplamaları yapmıyor.
İstenirse .cpp dosyasını da atabilirim. Yardımlarınızı bekliyorum.

 
Son düzenleme:
Acaba duruyor ise kodu benimle paylaşma ihtimalimiz var mı düzenleme yaptığınız kısımları incelemek ve hatamı görmek istiyorum da.
Kusura bakmayın bilgisayarım elimde değildi bir süredir. Baştaki birkaç kısmı düzenlemiştim. Gerisinin neredeyse aynı olması kötü. Dediğim basit şeyler yapılırsa çok daha düzgün bir şey ortaya çıkar. O zaman ufak sorunlar olur. Onları ya kendiniz çözersiniz ya da burada konu açarsınız.

Bu arada şimdi fark ettim stdio.h eklemeniz şart mı? Kullanımınızı görmedim.
conio.h'ı çeşitli yerlerde görsem de şimdiye kadar bakmamıştım. Bakınca da gerekli olduğu bir yeri göremedim. Gözümden bir şey kaçmadıysa iostream işinizi görecektir.

Zamanında gözüme çarpmış şeyleri tekrar söyleyeyim.
Kurları #define ile ya da int constexpr ile tanımla, adıyla çağır.
Metin tekrarları için fonksiyon kullan.
default'tan sonra break yazmana gerek yok.
Değişkenleri mümkün olduğunca ilklendir. Tanımladığın yerde değer ver.
Girdi alırken biraz düzgün yap. cout << "Isminizi Giriniz: "; yeterli. Metinden sonra iki nokta ardından boşluk. Kullanıcı zaten enter'a basınca alt satıra inecek.
İnsanlara seçiminiz şu, deme. Adam aptal değil. 2 satır yukarıda seçenekler hala duruyor, hangi sayıyı girdiği de görünüyor.

Kod:
#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

int main()
{
    string ad;
    int doviz;
    int lira;
    int alim, satim; //Alımda büro alıyor satıcı satıyor,satımda tam tersi
    int secim;
    int secim2;
    double dolar;
    double euro;
    double sterlin;
    double frank;



    cout << "Isminizi Giriniz: ";
    cin >> ad;

    cout << endl << "****Islem Yapmak Istediginiz Doviz Kuru****" << endl;
    cout << " 1-Euro\n 2-Dolar\n 3-Sterlin\n 4-Frank\n " << endl;
    cout << "Seciminiz: ";
    cin >> secim;
    switch (secim)
    {


    case 1:
        cout << " 1-Alim\n 2-Satim" << endl << endl;
        cout << "Seciminiz: ";
        cin >> secim2;
        switch (secim2) {

        case 1:
            cout << "Miktar: ";
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz: ";
            cin >> lira;

            if (doviz > 0 && doviz < 1000) {
                euro = lira / 3.85;
            }
            else if (doviz > 1000 && doviz > 5000) {
                euro = lira / 3.89;
            }
            else if (doviz > 5000) {
                euro = lira / 3.90;
            }

            cout << endl;
            cout << "Sayin " << ad << ";"<<endl;
            cout << "3,85 Kur degerinden " << euro << " Euro satin aldiniz." << endl;
            cout << lira << " para verdiniz." << endl;
            cout << "para ustu almadiniz cunku ogrenci anca euro ve lirayi degisken olarak tutmus" << endl;
            cout << "yine gelmeyin, bu herif sizi kazikliyor. gule gule" << endl;
            //cout << "euro: " << euro << " lira: " << lira << endl;

            break;

        case 2:
            cout << "Miktar: ";
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz: ";
            cin >> lira;


            if (doviz > 0 && doviz < 1000) {
                euro = lira / 3.98;
            }
            else if (doviz > 1000 && doviz > 5000) {
                euro = lira / 3.94;
            }
            else if (doviz > 5000) {
                euro = lira / 3.92;
            }

            break;

        default:
            cout << "Hatali Giris Yaptiniz!" << endl;
        }
        break;

    case 2:
        cout << " 1-Alim\n 2-Satim" << endl << endl;
        cout << "Seciminiz: ";
        cin >> secim2;
        switch (secim2) {

        case 1:
            cout << "Miktar: ";
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz: ";
            cin >> lira;

            if (doviz < 1000 && doviz>0) { dolar = lira / 3.54; }
            else if (1000 < doviz && doviz > 5000) { dolar = lira / 3.57; }
            else if (doviz > 5000) { dolar = lira / 3.58; }
            break;

        case 2:
            cout << "Miktar: ";
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz: ";
            cin >> lira;

            if (doviz < 1000 && doviz>0) { dolar = lira / 3.68; }
            else if (1000 < doviz && doviz > 5000) { dolar = lira / 3.63; }
            else if (doviz > 5000) { dolar = lira / 3.62; }


            break;

        default:
            cout << "Hatali Giris Yaptiniz!" << endl;
        }
        break;
    case 3:
        cout << " 1-Alim\n 2-Satim" << endl << endl;
        cout << "Seciminiz: ";
        cin >> secim2;
        switch (secim2) {

        case 1:
            cout << "Seciminiz Alim" << endl;

            cout << "Miktar :" << endl;
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz:";
            cin >> lira;

            if (doviz < 1000 && doviz>0) { sterlin = lira / 4.57; }
            else if (1000 < doviz && doviz > 5000) { sterlin = lira / 4.57; }
            else if (doviz > 5000) { sterlin = lira / 4.60; }
            break;

        case 2:
            cout << "Seciminiz Satim" << endl;

            cout << "Miktar :" << endl;
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz:";
            cin >> lira;

            if (doviz < 1000 && doviz>0) { sterlin = lira / 4.70; }
            else if (1000 < doviz && doviz > 5000) { sterlin = lira / 4.66; }
            else if (doviz > 5000) { sterlin = lira / 4.62; }



            break;

        default:
            cout << "Hatali Giris Yaptiniz!" << endl;
        }
        break;
    case 4:
        cout << " 1-Alim\n 2-Satim" << endl << endl;
        cout << "Seciminiz: ";
        cin >> secim2;
        switch (secim2) {

        case 1:
            cout << "Seciminiz Alim" << endl;

            cout << "Miktar :" << endl;
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz:";
            cin >> lira;

            if (doviz < 1000 && doviz>0) { frank = lira / 3.55; }
            else if (1000 < doviz && doviz > 5000) { frank = lira / 3.61; }
            else if (doviz > 5000) { frank = lira / 3.67; }
            break;

        case 2:
            cout << "Seciminiz Satim" << endl;

            cout << "Miktar :" << endl;
            cin >> doviz;
            cout << "Elinizdeki Turk Lirasini Giriniz:";
            cin >> lira;

            if (doviz < 1000 && doviz>0) { frank = lira / 3.75; }
            else if (1000 < doviz && doviz > 5000) { frank = lira / 3.70; }
            else if (doviz > 5000) { frank = lira / 3.69; }


            break;

        default:
            cout << "Hatali Giris Yaptiniz!" << endl;
        }
        break;
    default:
        cout << "Hatali Giris Yaptiniz!" << endl;
    }
}
Aşağıda yazan arkadaşlar bende çalışıyor falan demişler ama dev C++ ile ve Visual Studio ile de denedim ama işlem adımlarını yaptıramadım.
repl.it üzerinden dene istersen. Çalışması lazım. Bu arada eşitlikleri de unutma. Kullanıcı tam 1000 girse program saçmalar.
 

Geri
Yukarı