Şimdi Ara

c++ string komutunu kullandım, Gerisinde takıldım (Yardım)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
1.242
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Kendim başta char olarak denedim olmadı. Okulda arkadaşa sordum "string" dene dedi. String komutunu tam olarak kullanamıyorum. C++ ya yeni başladım pek bi bilgim yok ne okursam o. Araştırmada yaptım ama pek yararlı olmadı. Kendi çapımda, kendi işime yarıyacak bi rehber(DOTA için) yapmak istedm.
    Yazdığım kodlar aşşağıdadır. Ama programı çalıştırp "venge" yazdığımda program benim venge için belirlediklerimi değil, venge yazısını çıkarıyor. Yaptığım hata nerededir? Nasıl düzeltmeliyim?

     c++ string komutunu kullandım, Gerisinde takıldım (Yardım)


     c++ string komutunu kullandım, Gerisinde takıldım (Yardım)

    ----------------------------------------
    quote:

    Orijinalden alıntı: leventg

    Yaptığın hata şurada;
    "venge" diye bir değişken oluşturmuşsun ve ilk itemların bulunduğu stringi buna atamışsın. Daha sonra gene aynı değişken olan "venge" nin üstüne hero ismi yazdırmışsın. O yüzden cout son değeri olan venge yi ekrana basıyor doğal olarak.


    Teşekkür ederim. Çözdüm şimdi sayende =) // Fakat şimdide önümde başka bir eksikliğim var.
    Oyundaki heroların adı (atıyorum) a,b,c,d,e,.... (103 tane) diye gidiyo.

    Venge değeri girildiğinde çıkan itemleri belirledim.
    Başka bir heronunda değerlerini belirledim. (örn: blod)
    Blod yazdığımda yine venge nin itemleri çıkıyor.

    bir başka fark ettiğim nokta ise; başta blod da yazsam venge de yazsam ilk venge için belirlediklerim; 2. olarak blodda yazsam vengede yazsam, blod un itemleri çıkıyor.
    If-else komutlarını kullanmayı düşündüm, sanırım onlarda sayısal değerler için işe yarıyor. Loop denemeyi düşündüm. Şu an ki bilgimle de ne kullanmam lazım bilmiyorum. Sizce ne yapmalıyım?

    Kırmızı işaretlediğim yerin hata
    Turuncu işaretlediğim yerinde bir eksikliği olduğunu düşünüyorum

     c++ string komutunu kullandım, Gerisinde takıldım (Yardım)



     c++ string komutunu kullandım, Gerisinde takıldım (Yardım)



    < Bu mesaj bu kişi tarafından değiştirildi Archamanel -- 11 Ekim 2011; 21:22:54 >







  • Yaptığın hata şurada;
    "venge" diye bir değişken oluşturmuşsun ve ilk itemların bulunduğu stringi buna atamışsın. Daha sonra gene aynı değişken olan "venge" nin üstüne hero ismi yazdırmışsın. O yüzden cout son değeri olan venge yi ekrana basıyor doğal olarak.
  • Teşekkür ederim. Çözdüm şimdi sayende =) // Fakat şimdide önümde başka bir hata var.
    Oyundaki heroların adı (atıyorum) a,b,c,d,e,.... (103 tane) diye gidiyo.

    Venge değeri girildiğinde çıkan itemleri belirledim.
    Başka bir heronunda değerlerini belirledim. (örn: blod)
    Blod yazdığımda yine venge nin itemleri çıkıyor.

    bir başka fark ettiğim nokta ise; başta blod da yazsam venge de yazsam ilk venge için belirlediklerim; 2. olarak blodda yazsam vengede yazsam, blod un itemleri çıkıyor.
    If-else komutlarını kullanmayı düşündüm, sanırım onlarda sayısal değerler için işe yarıyor. Yapamadım. Loop denemeyi düşündüm. Şu an ki bilgimle de ne kullanmam lazım bilmiyorum. Sizce ne yapmalıyım?

    Kırmızı işaretlediğim yerin hata
    Turuncu işaretlediğim yerinde bir eksikliği olduğunu düşünüyorum



     c++ string komutunu kullandım, Gerisinde takıldım (Yardım)


     c++ string komutunu kullandım, Gerisinde takıldım (Yardım)



    < Bu mesaj bu kişi tarafından değiştirildi Archamanel -- 11 Ekim 2011; 21:22:33 >




  • 	 
    string venge, vengeful, blod, blooddon;

    vengeful = "itemlar_vengeful_olanlar";

    blooddon = "itemler_blooddon_olanlar";

    cout << "Lutfen hero adi giriniz:";

    // Ilk olarak cin ile aldığımız inputu daha güzel bir "ismi" olan degiskene atalım
    // Mesela hero_isim gibi ;)

    string hero_isim; // aklın karismasin diye, yoksa baska bir luzumu yok

    cin >> hero_isim; // burdan sonra kullanıcının girdigi isim hero_isim degiskeninde bulunacak

    // bundan sonra dedigin gibi if-else kullanmak lazım;

    // kullanicinin girdigi isime göre if-else ayıralim;

    string vengefulIsim = "vengeful"; // karsilastirmak icin lazım

    string blooddonIsim = "blooddon"; // karsilastirmak icin lazım

    if( hero_isim.compare(vengefulIsim)==0 ){ // burda string classının methodunu kullanarak karsilastirma yapabilirsin. karsilastirilanlar aynıysa method sifir doner, ondan dolayi sifirmi degilmi kontrol ediyor
    cout << "Kasilabilecek itemlar:" << vengeful << endl;
    }
    else if( hero_isim.compare(blooddonIsim) == 0){ // ayni sekil
    cout << "Kasilabilecek itemlar:" << blooddon << endl;
    }
    else
    cout << " Sacma sapan bir isim girdin!" << endl; // dikkat et tamamiyle ayni olmasi lazim karsilastirilan isimlerin, yoksa bu kisma girer

    system("PAUSE");
    return EXIT_SUCCESS ;





  • Çok teşekkür ediyorum. Compare olayını bilmiyordum. Onuda öğrenmiş oldum.

    Peki bu if , else if
    olayını sadece 2 ile mi sınırlı yoksa bunu kalan 101 heroyada yapabilrmym :D
  • 1 milyon tane yaparsin.
  • 103 tane if-else mi yazacaksın?
    Madem bilmediğin şeyleri de kullanacaksın biraz daha ileri git bari.

     
    #include <iostream>
    #include <string>
    #include <map>
    using namespace std;

    int main()
    {
    map<string, string> hero;
    map<string, string>::iterator ptr_hero;

    hero.insert(make_pair("venge", "a, b, c, d, e"));
    hero.insert(make_pair("blod", "f, g, h, i, j"));
    hero.insert(make_pair("baskasi", "k, l, m, n"));
    // ...

    string hero_ismi;
    do {
    cout << "Hero adı giriniz: ";
    cin >> hero_ismi;
    ptr_hero = hero.find(hero_ismi);

    if(ptr_hero != hero.end())
    cout << ptr_hero->second + '\n';
    else {
    cout << "Böyle bir hero yok!\n";
    break;
    }
    }
    while(true);

    return 0;
    }


    hero.insert... satırını bütün hero-itemler için tekrarlarsan bir hero-item listesi oluşturmuş olursun. Sonra girdiğin hero ismine karşılık gelen itemler otomatik olarak bulunur ve yazdırılır. Program, olmayan bir hero ismi girene kadar yazmaya devam eder.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 11 Ekim 2011; 23:51:53 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • O kadar if else yerine switch kullan


    //edit
    @elektro_gadget baya ileri gitmiş yalnız



    < Bu mesaj bu kişi tarafından değiştirildi Meniz -- 11 Ekim 2011; 23:50:24 >
  • Deniyorum şimdi :D

    bide ben şimdi az daha ileri götürmek istedm rehber olayını. Yani karakterlerin özellikleri vs onlarıda eklemek istiyorum. Fakat örn: Venge değerini yazarken alt satıra geçmek istiyorum.
    venge = "a,b,c,d,e" <<endl <<" f,g,h,d" 
    yazamıyorum. Ve istediğim alt satıra geçme olayını space e uzun basarak yapıyorum. O sorunumada yardım edermisnz?
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.