Jump to page: 1 2 3
Thread overview
September 21, 2009

Alıntı (acehreli):

>
auto sıralama = "abcçd";

Şimdi bu diziyi baştan sona yürüyerek sıra numaralarını başka bir diziye yerleştirebiliriz. Sonuçta sıra numarası dizimizde şunlar olur:

int[] sıraNumaraları dizisi şu şekilde oluşturulabilir:
sıraNumaraları['a'] değeri 0
sıraNumaraları['b'] değeri 1
sıraNumaraları['c'] değeri 2
sıraNumaraları['ç'] değeri 3
sıraNumaraları['d'] değeri 4

Nasıl a'ya 1 verdikten sonra b'ye derleyicinin iki vermesini sağlarız diye sormuştum. Bu dediklerinizden hiç bir şey anlamadım. Sonra "Nasıl a'ya 1 verdikten sonra b'ye derleyicinin iki vermesini sağlarız"' sorusuna değil "şöylemi yapacağız" sorusuna cevap verdiğinizi anladım. Ayrıca tekrar soruyorum. Nasıl a'ya 1 verdikten sonra b'ye derleyicinin iki vermesini sağlarız ? Bunu enum ile yapamayacaksak başka yolu olmalı. D bize teker teker değer vermemizi istemez. birde

int[] sıraNumaraları

bunu yanlış yazdınız değil mi ? Doğrusu bu olacak sanırım.

int[dchar] sıraNumaraları

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 21, 2009

Evet benimki bence de daha iyi :-D

Şaka bir yana a ile â'ya aynı değeri verebilir miyiz bunda ? Bana veremeyiz gibi geldi. Ben a ile â'ya aynı numarayı verip if ile ikisinin değeri aynı ise a'nın â'dan önce yazılması gerektiğini söyleyen çıktıyı verdirtecektim. Siz bunda a ile â'yı halletmek için ne yapacaksınız ?
Hem birde benim yöntemimle yaparsak değişkeni başka bir metinde tanımlayıp 'import' ederek kullanabiliriz değil mi? Eğer karakter ekleyip sayıyı değiştirmek istersek oradan değiştiririz.

Ama size söyleyeyim sizin bu şekilde düşünme zekanıza hayranım. Ama ilk önce basiti düşünmek gerekir. Eğer çıkış yolu uzunsa zora yönelinir. Ve benim ki uzun gibi :-)

Bu arada Alıntı (acehreli):

>

int[dchar], bir eşleme tablosu (assosiaced array) olurdu... O da olur. Ama ben şöyle bir şey düşünmüştüm; ve sanırım seninki daha kolay ve daha temiz:

Bizde eşleyeceğimize göre aslında yine en iyisi isime bakarsak benim önerdiğim :-)

Birde benim önerdiğim yöntemde kısaca a'ya b'ye.. nasıl otomatik sayı veririz. Örneğin

enum sıralama{
a=1, â=1,b, c, ç,d,
}

gibi.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 21, 2009

int[dchar], bir eşleme tablosu (assosiaced array) olurdu... O da olur. Ama ben şöyle bir şey düşünmüştüm; ve sanırım seninki daha kolay ve daha temiz:

import std.stdio;

void main()
{
   auto sıralama = "abcçd"d;
   int[] sıraNumaraları;

   foreach (i, harf; sıralama) {

       // Yeterince yer olduğunu garantilemek için; ama bunun
       // yavaş bir işlem olabileceğini biliyoruz (eğer
       // uzunluğu baştan biliyorsak, her seferinde büyütmek
       // yerine baştan da büyütebiliriz)
       if (harf >= sıraNumaraları.length) {
           sıraNumaraları.length = harf + 1;
       }

       sıraNumaraları[harf] = i;
   }

   void dene(dchar harf)
   {
       writeln(harf, ": ", sıraNumaraları[harf]);
   }

   dene('c');
   dene('ç');
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 21, 2009

D'nin eşleme tablolarının arka planda nasıl gerçekleştirildiklerinden emin değildim: C++'nın std::map'i gibi ağaç olsa daha yavaş olurdu ('O(logN)'), ama hızlı eşleme tablosu (hash table: 'O(1)') imiş. Güzel... :)

Sıralama için kullanacağımız tablo, modüle ait olacak. Sanırım modül için statik kurma diye bir kavram var; şimdilik önemli değil...

a ve â'nın aynı kodlu olmaları doğru, ama bir de 'şapkalı' gibi bir belirteci olmalı. Ona daha sonra bakmalıyız. Bu yüzden, sıralama için bir int[dchar] değil, SıralamaBilgisi[dchar] gibi bir tablo oluşturabiliriz:

// Tabii ki ismi değişik olabilir
struct SıralamaBilgisi
{
   int sıra;
   bool şapkalı;
}

Evet, sonra daha hızlandıracak yollar bulacağız...

enum'u da doğru kullanıyorsun.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 24, 2009

Şimdi ilkel halini hazırladım.
İlkel hali : http://www.ozgurlukicin.com/yapistir/242/
icmp de tekrar yazılması gerekiyor. Onun içinde tolower fonksiyonu ile küçültür yine cmp'den geçiririz. :-) Sonra cmp'yi hızlandırırız .

Şuan foreach döngüsü kurup teker teker baktıracağım herhalde. Eğer iki taraf aynı olmazsa foreachden çıkartıp sonucu yazacağım.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 24, 2009

Dizgileri de dahil etsin diye kodu buna çevirdim :http://www.ozgurlukicin.com/yapistir/243/

Ama hata olarak bunu veriyor :

bos2.a(dmain2_18e_1a5.o): In function `_D2rt6dmain24mainUiPPaZi7runMainMFZv':
dmain2.d:(.text._D2rt6dmain24mainUiPPaZi7runMainMFZv+0x10): undefined reference to `_Dmain'
/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../libphobos2.a(thread_42_258.o): In function `_D4core6thread6Thread6__ctorMFZC4core6thread6Thread':
core/thread.d:(.text._D4core6thread6Thread6__ctorMFZC4core6thread6Thread+0x27): undefined reference to `_tlsend'
core/thread.d:(.text._D4core6thread6Thread6__ctorMFZC4core6thread6Thread+0x2d): undefined reference to `_tlsstart'
/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../libphobos2.a(deh2_166_525.o): In function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable':
deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x4): undefined reference to `_deh_beg'
deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0xc): undefined reference to `_deh_beg'
deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x13): undefined reference to `_deh_end'
deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x37): undefined reference to `_deh_end'
/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../libphobos2.a(thread_3f_713.o): In function `thread_entryPoint':
core/thread.d:(.text.thread_entryPoint+0x5f): undefined reference to `_tlsstart'
core/thread.d:(.text.thread_entryPoint+0x68): undefined reference to `_tlsend'
collect2: ld returned 1 exit status


--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 24, 2009

Son hali(ve tabiki hatalı :-) ) :
http://www.ozgurlukicin.com/yapistir/246/

Verilen hata: icmp.d(73): Error: function icmp.icmp_tr no return exp; or assert(0); at end of function

Sanırım değer döndürmüyor diyor ama neden döndürmesin canım sen görmüyorsundur :-D Şaka bir yana eğer hata yapmadıysam her olasılıkta döndürmesi gerekiyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 24, 2009

Alıntı (acehreli):

>

İki tane return satırı var ama ikisi de bazı koşulların içinde duruyor. Gelen dizginin ne olacağı derleme zamanında bilinemeyeceği için derleyici bu koda bakarak o koşulların her zaman için doğru olacaklarını bilemez. Doğrusu ben de bilemem. :)

Ben ermiş kişi bilirim. Ama derleyicinin daha akıllı olup bilmesini isterdim. Çünkü iki olasılık var. Biri eşit olacak diğeri olmayacak. Ee ikisi içinde return dönüyor.

Fonksiyonu denedim ve olmuş ellerime sağlık. â î bizimle alakası olmadığı halde daha sonra ekleyeceğim. Şimdilik iş planım bu :

**1. icmp'yi son kez dene. Doğru ise svn'ye gönder(unittest olsun yorum olsun ekle) ( bu arada konsolda şimdiye kadar svn ile bir şey göndermedim hatalı olursa alltan alırsınız artık :-) )

  1. cmp'yi yap (ya a=1 A=1 diyeceğim ya da tolower ile hepsini küçültüp deneyeceğim. Sizce hangisi daha iyi ? )

  2. â î û ... destekli hale getir.**

Size göre eksikler nelerdir ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 24, 2009

Şu sihirli fonksiyonu ekle, derlenir:

void main()
{}

:D

Not: Aslında derleniyordu tabii; onlar bağlayıcı (linker) hatalarıydı.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 24, 2009

İki tane return satırı var ama ikisi de bazı koşulların içinde duruyor. Gelen dizginin ne olacağı derleme zamanında bilinemeyeceği için derleyici bu koda bakarak o koşulların her zaman için doğru olacaklarını bilemez. Doğrusu ben de bilemem. :)

Fonksiyonun sonunda da bir return gerekli...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2 3