C++ yanlış sayı girdiğinde düzeltecek program nasıl yazılır?

mburaktekin

Hectopat
Katılım
10 Eylül 2020
Mesajlar
4.964
Makaleler
2
Çözümler
11
Daha fazla  
Cinsiyet
Erkek
Başlık birazcık olmadı :D Yapmak istediğim şey şu. Siz diyelim ki programa 50 sayısını girmek istiyorsunuz ama yanlışlıka 51 girdiniz. Sayıyı girdikten sonra önünüze "Sayıyı değiştirmek ister misiniz? {y/n}: " gibi bir şey çıkacak. Siz "y"e basarsanız önünüze "Sayı giriniz" gibi bir yazı çıkacak; yok "n"ye basarsanız program devam edecek. Ben bir şeyler yaptım ama hata veriyor. Eksiğim nedir? YouTube'da Sefa Ekici'nin derslerini izliyorum. 7. dersteyim.
[CODE lang="cpp" title="Kod"]#include <iostream>

using namespace std;

int main() {

int sayi1;
cin >> sayi1;
cout << "1. sayi budur: " << endl;

string degis;
string y;



cout << "Degistirmek istiyor musunuz? {y/n}: ";
cin >> degis;

if (degis=y) {

cin >> sayi1;
cout << "1. sayi budur: " << endl;


}


}[/CODE]
Adsız.png

Resmi bilerek büyük şekilde koydum. Altta hatayı görebilirsiniz.
 
C++ goto statement bence isinizi çözer.
Sayı aldıktan sonra y/n icin bir if bloğu koyarsiniz. Degistirmek isterse sayi alacağınız adıma goto diyerek süreci recursive hale getirirsiniz.

örnek: (istenilen 50)
sayı giriniz : 49
degistirmek ister misiniz? y
sayi giriniz: 51
degistirmek ister misiniz? y
sayi giriniz: 50
degistirmek ister misiniz? n
C++:
#include <iostream>

using namespace std;

int main() {

    int sayi1;
    again:
    cout << "Sayi giriniz:" << endl;
    cin >> sayi1;

    string degis;

    cout << "Degistirmek istiyor musunuz? {y/n}: ";
    cin >> degis;

    if (degis=="y") {
    goto again;
    }


}
 
Son düzenleme:
Artı -2 Eksi
Şu an başladığınız şekilde değil method şeklinde yazın. Böylece her soru sormak istediğinizde aynı kod bloğunu tekrar tekrar yazmak zorunda kalmazsınız.
"string degisken, y;" gibi mi?
C++ goto statement bence isinizi çözer.
Sayı aldıktan sonra y/n icin bir if bloğu koyarsiniz. Degistirmek isterse sayi alacağınız adıma goto diyerek süreci recursive hale getirirsiniz.

örnek: (istenilen 50)
sayı giriniz : 49
degistirmek ister misiniz? y
sayi giriniz: 51
degistirmek ister misiniz? y
sayi giriniz: 50
degistirmek ister misiniz? n
C++:
#include <iostream>

using namespace std;

int main() {

    int sayi1;
    again:
    cout << "Sayi giriniz:" << endl;
    cin >> sayi1;

    string degis;

    cout << "Degistirmek istiyor musunuz? {y/n}: ";
    cin >> degis;

    if (degis=="y") {
    goto again;
    }


}
Again sanırsam işlemi tekrarlıyor, goto nedir?
Cout kodunun sonuna {Cloud- (y/n +/-) koyarak işlemlerinizi yapabilirsiniz. Else / if koduyla loop döngüsünü başlatın.
Cloud nedir?
 
Birisi eksi vermiş, neyi yanlis dedim acaba :)
C/C++ derlemeli dil ailesine üye diller. Yazdiginiz kod tam anlamiyla bir butun olarak bakar ilgili derleyici. Bir point noktasi koydum kodun yukarisina (again veya bu sizin tanimlayacaginiz baska bir keyword de olabilir) ve istedigim bir kosul ortaya ciktiginda bilgisayarin takip edecegi noktayi degistirdim.


Derleyici;
1
2 < againt:
3 < point
4
5 < if vs olursa. goto againt kodunu calistir

Yukaridaki asamada bilgisayar 3. point noktasini gosteriyor. 3. noktadaki islem bitince bilgisayar 4. point noktasina isaret edecek ve oradaki sureci tamamlayacak. ben 5. noktaya geldiginde program eger if'e girmezse program sonlanacak. If'e girerse program bir sonraki asamaya yani 2. noktaya gidecek ve tekrar surec bir nevi bastan baslamis olacak. 2-3-4-5 diye sirali bir sekilde ilerleyecek.

Umarim cok fazla karisik olmamistir.
 
C++:
#include <iostream>

int main()
{
    std::string degis = "";
    
    do
    {
        std::cout << "Sayi girin: ";
    
        int sayi = 0;
        std::cin >> sayi;
    
        std::cout << "1. sayi budur: " << sayi << std::endl;
    
        std::cout << "Degistirmek istiyor musunuz? {y/n}: ";
    
        std::cin >> degis;
    } while (degis == "y");
    
    return 0;
}

Mümkün olduğunca goto kullanmadan yazmaya çalışın.
 
C++:
#include <iostream>

int main()
{
    std::string degis = "";

    do
    {
        std::cout << "Sayi girin: ";

        int sayi = 0;
        std::cin >> sayi;

        std::cout << "1. sayi budur: " << sayi << std::endl;

        std::cout << "Degistirmek istiyor musunuz? {y/n}: ";

        std::cin >> degis;
    } while (degis == "y");

    return 0;
}

Mümkün olduğunca goto kullanmadan yazmaya çalışın.
Bu şekilde günü kurtarmış olursunuz. Bunu parametrik bir fonksiyon (method) haline getirseniz daha iyi olur.
 

Geri
Yukarı