Forum: Projeler Genel RSS
Hatalar ve çözümleri
qyn_ #1
Kullanıcı başlığı: qyn
Üye Nis 2010 tarihinden beri · 32 mesaj · Konum: öğrenci
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Hatalar ve çözümleri
D dilinde anlamadigim şekillerde access violation hatası alıyorum .örnegin şöle basit bir kodda bu hatayi aliyorum gözden kacirdigim bisey mi var acaba ? .
import std.cstream;
import std.stdio;
import std.process;
import std.random;
 
int main(){
    int girilen_deger=0;
    int tahmin_sayisi=0;
    int sayimiz=0;
    int puan=0;
    bool dvm=true;
    
    while(dvm==true){
    sayimiz=uniform(1,1000);
    writeln(" 0 ile 1000 arasi bir deger giriniz");
    din.readf(&girilen_deger);
    writeln("rasgele sayimiz =>",sayimiz,"..di");
    
    if( (0<sayimiz && sayimiz<500 ) && (0<girilen_deger && girilen_deger<500) ){
        ++puan;    
        
    }else if((sayimiz>=500 && sayimiz<1000) &&  (girilen_deger<1000  && girilen_deger>=500) ){
        
        --puan;
    }else{
        writeln("Tahmininiz tutmadi");
    }
    
     writeln("Puaniniz => ",puan ,"tamammi devammi ?");
     din.readf(&dvm);
     if(dvm==false){
             break;
     }
            
    }
    
    std.process.system("pause");
 
return 1;
}
Bu mesaj acehreli tarafından değiştirildi; zaman: 2010-11-20, 11:11.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4533 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hata, din.readf(&dvm) satırında oluşuyor çünkü din.readf, girişten bool değer okumayı bilmiyor. Bu, benim oluşturduğum ilk hata raporuydu sanırım. Nasıl bool değerler 'false' ve 'true' olarak yazılıyorlarsa, aynı karakterlerden de okunabilmeliydiler.

Zaten bu eksiklik nedeniyle Mantıksal İfadeler dersi için girişten_bool_oku() diye bir işlev yazmak zorunda kalmıştım:

  http://ddili.org/ders/d/mantiksal_ifadeler.html

Bir çözüm, öyle bir işlev kullanman olabilir.

Ek olarak, din ve dout gidiciler; o yüzden bu eksikliğin din için giderileceğini bekleyemeyiz. Onların yerine stdin ve stdout kullanılacak. Ben de D.ershane'de tam da bu noktada takılmış durumdayım. stdin ve stdout'un biraz daha kullanışlı hale gelmelerini bekliyorum. Sonra bütün din ve dout'ların yerine stdin ve stdout koyacağım.

Ali

Not: Senin kod satırlarını code ve /code belirteçleri arasına aldım.
qyn_ #3
Kullanıcı başlığı: qyn
Üye Nis 2010 tarihinden beri · 32 mesaj · Konum: öğrenci
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Teşekkürler Ali üstad .Ben o derse başlamadan önce yazmistim bunu.stdin ve stdout un din ve dout ' tan farki ne olabilirki acaba .Neyse cok sordum :))
code satirlarina aldigin iyi olmuş Ali üstad bende alirim bundan sonra.
canalpay (Moderatör) #4
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
stdin ve stdout un din ve dout ' tan farki ne olabilirki acaba
Biz şuan cstreamdeki işlevleri kullanıyoruz. Sanırım o gidici(sanmıyorum) ve yerine stdioda stdin gelecek ki geldi. cstream C'nin kütüphanesi ile D1'den kalmış stream modülünün D1 zamanında sarmalanmasından oluşuyor. Onu geride bırakıp stdio ile uygun işlevler koyacaklar.

Örn:

import std.stdio;
 
void main()
{
    stdout.writeln("Merhaba !");
    char[] s;
    stdin.readf("%s", &s);
 
    stdout.writeln(s);
}

Bu arada stdin ya da stdout yazmadan direk writeln ya da readf yazabiliyorsunuz. Şuan stdio'dakinleri kullanabilirsiniz ancak biraz hatalı. Örn : http://d.puremagic.com/issues/show_bug.cgi?id=4922 gibi. Ancak arasında pek büyük bir fark yok.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Projeler Genel RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-12-11, 01:25:21 (UTC -08:00)