| |
 | Posted by Salih Dinçer in reply to huseyin | Permalink Reply |
|
Salih Dinçer 
Posted in reply to huseyin
| Alıntı (huseyin325325):
> Evet dlang.org ve gecenin son sorusu :D
Hani c++ da int main(int argc, char *argv[]) bole yazılıyor ya D de string[] kullanılıyor bunun arg sayısını nasıl alacaz length kullanarak mı ?
Gerçi Erdem cevap yazmış ama o bir string örneği. Eğer parametrelerde sayı kullanmak istersen yazdığım 'str2num()' işlevini (-bknz. aşağıdaki örnek) kullanabilirsin. Belki D'de std.conv içinde başka çözümü de olabilir; bilemiyorum ama benim hep kullandığım basit ve etkili bir çözüm. Başarılar dilerim...
import std.stdio;
int str2num (string args) {
int n, magicNum = 48;
foreach(a, arg; args) {
n += (cast(int) arg - magicNum) * 10^^(args.length-a-1);
}
return n;
}
bool isPrime(uint p) {
if(p < 2) return false;
if(p != 2 && p % 2 == 0) return false;
for(uint n = 3; n * n <= p; n += 2) {
if(p % n == 0) return false;
}
return true;
}
void main(string[] param) {
foreach (p; param[1 .. param.length]) {
p.write(" is ");
if(!isPrime(str2num(p))) write("not ");
writeln("prime!");
}
}/* dmd isprime.d -release ile derledikten sonra,
/isprime 2 3 4 5 4294967279
gibi denenirse toplam 5 sayının asallık testi yapılır biri için false döner...
*/
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|