Aaa evet, benim kod da ilk bulduğunu silip olduğu gibi gönderecektir...:)
Basit mantık iyidir! Karşılaştırma olması için her iki mantığı güzel bir cümle ile örneklersek:
import std.algorithm, std.stdio;
auto tekiniSil(string[] dizi, string eleman)
{
string[] dizi2; // <---Bu kullanılmadığında tekini siler...
for(int i = 0; i < dizi.length; i++) {
if(dizi[i] == eleman) return dizi.remove(i);
}
return dizi;
}
auto hepsiniSil(string[] dizi, string eleman)
{
string[] dizi2;
for(int i = 0; i < dizi.length; i++) {
if(dizi[i] != eleman) dizi2 ~= dizi[i];
}
return dizi2;
}
void main()
{
auto cümle = [ "Ali,", "o", "topu", "at", "yoksa",
"bisiklete", "topu", "koyamazsın." ];
foreach(s; cümle) s.write(" ");
writeln;
foreach(s; tekiniSil(cümle, "topu")) s.write(" ");
writeln;
foreach(s; hepsiniSil(cümle, "topu")) s.write(" ");
writeln;
}/* Çıktısı:
Ali, o topu at yoksa bisiklete topu koyamazsın.
Ali, o at yoksa bisiklete topu koyamazsın.
Ali, o at yoksa bisiklete koyamazsın. koyamazsın.
*/
Bu tekrarların -------------------------------^----------------------^ neden olduğunu bilmiyorum...:(
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]