Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
573
Tıklama
0
Öne Çıkarma
C++ - Basit koddaki hataya el atabilecek bir uzman var mı acaba?
K
5 yıl
Er
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

S
5 yıl
Binbaşı

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



T
5 yıl
Yarbay

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ı >

M
5 yıl
Teğmen

...





< Bu mesaj bu kişi tarafından değiştirildi mosahin -- 29 Ekim 2020; 23:45:24 >

M
5 yıl
Teğmen

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.

          ///////////////////////////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;





< Resime gitmek için tıklayın >



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.