[Çözüldü] Karabasan.exe

Başlatan DechroS, 16 Kasım 2013 - 20:24:18

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

DechroS

Hocamız 90lı yıllaın favori oyunu olan "karabasan.exe" tarzı bir oyun geliştirmemizi istedi. Algoritmalarını ve sorularını hazırladım fakat takıldığım tek bir nokta var.

program bizden isim girmemizi isteyecek. bu ismi daha sonra tekrar kullanacak.
bunun için isim isimli bir değişken kullandım.

char isim[255] gibi.
fakat isim yerine küfürler yazıldığında programın buna göre tepki vermesini istiyorum.

bunun için while döngüsünü uygun gördüm.


while (isim == "kelime1" || isim == "kelime2" || isim == "kelime3")
{
printf("lütfen küfür etmeyiniz.");
scanf("%s", &isim);
}


elbetteki çalıştıramadım istediğim gibi. Yardımcı olabilir misiniz?

empax

Mesajınızı düzenler misiniz, her yaştan kullanıcı var ve biraz dikkat edin lütfen...

if (isim == "kelime1" || isim == "kelime2" || isim == "kelime3")
{
printf("lütfen küfür etmeyiniz.");
scanf("%s", &isim);
}


= değil == olacak. Ayrıca tırnak içinde olması gerekiyor diye hatırlıyorum.
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

DechroS



Çalışmıyor maalesef.

alquirel

C'de string değişkenleri karşılaştırmak için strcmp fonksiyonunu kullanmak zorundasın.
Anlatım için : http://www.csystem.org/calisma-sorulari/strcmp-fonksiyonu

Bir de scanf fonksiyonunda &isim olarak kullanılmıyordu yanlış hatırlamıyorsam stringler.

Yani başındaki & işaretini kaldırmalısın.

DechroS

Teşekkür ederim. Aradığım tavsiye buydu. Hemen deniyorum.

alquirel

Denedikten sonra geri dönüş yaparsan seviniriz ;)

DechroS

Maalesef linkteki belirtilen string karşılaştırması aradığım şey değil. Dizgilerin uzunluğunu karşılaştırıyor :(

İsterseniz bir kez daha tarif ediyim. Neyi aradığımı.
Mesela program "nerelisin?" diye soracak.
cevap kayseri ise "oraların sucuğu güzeldir." diyecek. Diğer şehirler içinse genel cevap "o iyidir iyi" diyecek.

bunun tarzı bir kod arıyorum. Gece 3 e kadar denedim çeşitli yazılar inceledim ama bulamadım :(

alquirel

Aslında bahsettiğim nokta doğru ancak verdiğim fonksiyon yanlış olmuş :)

C'de stringlerle uğraşırken str... tipinde bir fonksiyonla ancak amaca ulaşılıyor.

Doğru fonksiyon ismini şimdi tam çıkaramıyorum, strcat de olabilir, bi incelemekte fayda var. Hiç olmadı kendimiz bir fonksiyon yazarız ;)

travego0403

"strcmp" uzunluk karşılaştırmıyor. İki karakter katarının eşit olup olmadığına ya da alfabetik olarak küçük büyük olmasına bakıyor.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

endryz

Qt kütüphaneleri kullanmanda sorun olmayacaksa QString ile işini kolayca halledebilirsin. QString sınıf içerisinde bulunan compare fonksiyonu sana yardımcı olacaktır. Daha detaylı şuradan bakabilirsin;

http://qt-project.org/doc/qt-5.0/qtcore/qstring.html#compare
0: her türlü amaç için yazılımı çalıştırma özgürlüğü.
1: yazılımın nasıl çalıştığını inceleme ve kendi gereksinimleri doğrultusunda değiştirme özgürlüğü.
2: yeniden dağıtma ve toplumla paylaşma özgürlüğü.
3: yazılımı geliştirme ve gelişmiş haliyle topluma dağıtma özgürlüğü.



DechroS

#10
Alıntı yapılan: alquirel - 16 Kasım 2013 - 21:23:53
C'de string değişkenleri karşılaştırmak için strcmp fonksiyonunu kullanmak zorundasın.
Anlatım için : http://www.csystem.org/calisma-sorulari/strcmp-fonksiyonu

Bir de scanf fonksiyonunda &isim olarak kullanılmıyordu yanlış hatırlamıyorsam stringler.

Yani başındaki & işaretini kaldırmalısın.

bu örnek iki dizgiyi karşılaştırıyor. 2 dizgi de kullanıcı tarafından giriliyor.
peki bir dizgi daha önceden yazılmış olsa, girilen dizgiyi bu bilgisayarın hafızasındakiyle karşılaştırsa? bunu nasıl yapabiliriz?



şunun gibi bir kod var aklımda. birkaç düzeltme istiyor. halledersek oldu bu iş. :)

nalcam22

çalışmamasının sebebi
9.satırdaki name2="küfür";
c++ string bu şekilde atama yapamassın strcpy kullanmalısın
9. satır şöyle olacak:
strcpy(name2,"küfür1");

DechroS

Alıntı yapılan: nalcam22 - 18 Kasım 2013 - 20:43:44
çalışmamasının sebebi
9.satırdaki name2="küfür";
c++ string bu şekilde atama yapamassın strcpy kullanmalısın
9. satır şöyle olacak:
strcpy(name2,"küfür1");

işte bu. Çalıştı. Teşekkür ederim. Program artık ismimi sorup karşılık verebilecek. Yaşadığım yere cevap verebilecek. Geriye kalan tek şey e/h lı sorular. En yakın zamanda Karabasan.exe mi bitiriyor, sizlerle kaynak kodunu paylaşıyorum. Derleyip derleyip beni hatırlayın.

heartsmagic

Sorun çözüldüğünde lütfen: cozuldukonusu
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.