Şimdi Ara

C++ - Basit koddaki hataya el atabilecek bir uzman var mı acaba?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
7
Cevap
0
Favori
555
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba, bir süredir üzerinde çalıştığım C++ kodunda, çözemediğim ve yardıma ihtiyaç duyduğum bir hata var.

    Altta belirttiğim C++ kodunu açıp, oyunu çalıştırdığınız taktirde karşınıza (oyun ile ilgili) 100 sayı ve 'Fikirler' çıkar. Şöyle ki 'Fikirler' de size (eğer yeterli fikriniz varsa) 4 sayı çıkar. Mesela (tamamen farz) 5, 61, 74, 2; fakat eğer bir kaç kez daha oynarsanız (ilk seferde de olabilir.) 'Fikirler' de 100 den büyük yada küçük herhangi bir sayı göreceksiniz (mesela -5 ve/veya 113). Bu bir hata. Bunun olmaması lazım; yani fikirlerde 0-101 arası dışında bir sayı/rakam çıkmaması lazım.

    Bunun üzerinde amatör programcılığım ile bir süre kafa yordum; fakat ne yazık ki başaramadım. Sonuç olarak; eğer derdime deva olabilecek biri varsa çok memnun olurum.


    https://www.dosya.tc/server32/42xv6x/main.cpp.html


    Şimdiden çok teşekkür ederim.




    < Bu mesaj bu kişi tarafından değiştirildi Kartal Roni -- 17 Kasım 2020; 0:4:31 >







  • Kodu indirip çalıştırmak riskli. Ne yapacağını bilmiyoruz sonuçta. Onun yerine kodu snippet olarak paylaşsan?

  • Kodu çalıştırmak zorunluymuş gibi, riskli diyor haha.
    Kodda riskli birşey yok fakat kod biraz refactoring istiyor.

    Bir de konsol bekleme animasyonu için altalta sleep yazmak yerine Google da 'console wait animation' sonuçlarına bakılmalı.

    Hatanıın oluştuğu bölgede de bir sürü if, else if var onlar kısaltılmalı, bu haliyle hatayı bulmak hammaliye işi.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 29 Ekim 2020; 23:54:10 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • ...




    < Bu mesaj bu kişi tarafından değiştirildi mosahin -- 29 Ekim 2020; 23:45:24 >
  • Atama yaptiktan sonra o atama icin kullandigin int degerleri degistirmen, otomatik olarak atanmis sayinin degismesine sebep olmaz. Cunku int degere yaptigin atama artik bellekte kendi bolgesinde bulunur, ve bu degere dogrudan atama yapmadigin surece bu alani degistiremezsin. Asagida satir satir aciklamaya calistim buldugum hatalari.


    Kod

    Yığını:
              ///////////////////////////forum ile ilgili//////////////////////////////////rastgele sayinin oluşturulduğu yer////////////////////////////////////////                     int rg; //             srand(time(NULL));             rg = rand() % 100 + 1;             cout << rg << endl; //rg farzedelim 100 geldi             /////////////////////////////////rastgele sayiyi kullanarak rastgele puanlama yapilan yer//////////////////////////////////////////////////////////////////////////////             int roo = rg - 7;             int ro = rg - 5;             int r = rg - 3;             int rr = rg + 21; // rr nin degeri 121 olmus oldu             int rrd = rg + 11; // rrd nin degeri 111 olmus oldu             int rrmd = rg + 6; // rrmd nin degeri 106 olmus oldu             int aa = rg - 4;             int ab = rg - 6;             int ac = rg - 12;             int ad = rg - 16;             int ba = rrd + 10; // ba nin degeri 121 olmus oldu             int bb = rrmd + 20; // bb nin degeri 126 olmus oldu             ////////////////////////////sorunla ilgili şahsi denemem/////////////////////////////////////////////////////////////////////////////////////////////////                 if (aa > 100 || aa < 0 || ab>100 || ab < 0 || ac>100 || ac < 0 || ad>100 || ad < 0 || ba>100 || ba < 0 || bb < 0 || bb>100) {                 cout << "!!!!!!!!!!!!!" << endl;                 a--;             } // Burada sinirin disina cikarsan diye tekrar sayilari bastan tahmin etmeye calismissin. a--; den sonra continue; koyarsan dongu basa doner, asagidaki kodu da calistirmamis olursun. Bunun yerine donguyu while a cevirebilirsin de.             else {             }             if (rr > 100) {                 rr -= 21; // Burada siniri asmissan diye 21 cikariyorsun (121 - 21 diye hesaplayip).             }             else if (rrd > 100) {                 rrd -= 11; // Burada siniri asmissan diye 11 cikariyorsun (111 - 11 diye hesaplayip). rrd 100 e cekiliyor evet. Fakat bu islem artik ba yi olusturan 121 degerini etkilemiyor.             }             else if (rrmd > 100) {                 rrmd -= 6; // Burada siniri asmissan diye 6 cikariyorsun (106 - 6 diye hesaplayip). rrmd 100 e cekiliyor evet. Fakat bu islem artik bb yi olusturan 126 degerini etkilemiyor.             }             ////////////////////////////forum ile ilgisiz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////             cout << endl;             for (int a = 0; a < 31; a++) {                 cout << (char)223;             }             cout << endl;             cout << " Puaniniz = " << puan << "     Fikir  = " << fikir << endl << endl;             for (int a = 0; a < 31; a++) {                 cout << (char)223;             }             if (rooes > 7) {                 cout << endl << "ERROR Olabilir!/'6' Puan kaybettiniz!" << endl;                 Sleep(200);                 cout << endl << "ERROR. Error hatasi: Error A3";                 Sleep(230);                 cout << " .";                 Sleep(200);                 cout << " .";                 Sleep(1000);                 cout << " ." << endl << endl << endl << endl;                 Sleep(230);                 a--;             }             cout << endl;             for (int a = 0; a < 20; a++) {                 for (int b = 0; b < 10; b++) {                     cout << a << b << " ";                     if (a == 10 && b == 0) {                         a += 100;                         b += 100;                         Sleep(20);                     }                 }                 cout << endl;             }             for (int a = 0; a < 31; a++) {                 cout << (char)223;             }             cout << endl;             /////////////////////////////forum ile ilgili///////////sorunla ilgili kendi şahsi denemem//////////////////////////////////////////////////////////////////             if (aa < 1) { // Bloklar else if oldugu icin sadece tek bir sayidaki hatayi duzeltip digerlerini atliyorsun. Else if ler yerine sadece if kullanman gerek.                 aa -= aa; // Bu islemi negatifse pozitife cevirmek icin yapmissin. Fakat aa = -aa sekilnde yazmaliydin. Veya bunun yerine abs(aa) fonksiyonunu kullanabilirsin.             }             else if (ab < 1) {                 ab -= ab; // Bu islemi negatifse pozitife cevirmek icin yapmissin. Fakat ab = -ab sekilnde yazmaliydin. Veya bunun yerine abs(aa) fonksiyonunu kullanabilirsin.             }             else if (ac < 1) {                 ac -= ac; // Bu islemi negatifse pozitife cevirmek icin yapmissin. Fakat ac = -ac sekilnde yazmaliydin. Veya bunun yerine abs(aa) fonksiyonunu kullanabilirsin.             }             else if (ad < 1) {                 ad -= ad; // Bu islemi negatifse pozitife cevirmek icin yapmissin. Fakat ad = -ad sekilnde yazmaliydin. Veya bunun yerine abs(aa) fonksiyonunu kullanabilirsin.             }             else if (ba > 100) {                 ba -= 15; // Burada siniri asmissan diye 15 cikariyorsun (115 - 15 diye hesaplayip. Yukarda acikladigim sebepten dolayi burada 21 cikarman gerek.             }             else if (ba > 100) { // Burada ba yerine bb yi kontrol etmen gerekiyor diye dusunuyorum.                 bb -= 25; // Burada siniri asmissan diye 25 cikariyorsun (125 - 25 diye hesaplayip). Yine ayni sebepten burada 26 cikarman gerek.             }             else if (aa > 100)                 cout << endl;




    C++ - Basit koddaki hataya el atabilecek bir uzman var mı acaba?




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.