Bu soru biraz karışıktı açıkçası.
Verdiği bin basamaklı sayıları 5'erli dilimlere ayırmamızı istiyor.Daha sonrasında bu dilimlerin basamak çarpımını bulmamızı ve en büyük basamak çarpımını sonuç olarak göndermemizi istiyordu.Sayı aralıklarını ve dosyaları kullandım.Dosyalar biraz uğraştırdı.Ben readln()'ın emekli olduğunu sanıyordum ama Dershane'ye bakınca kullanmaya karar verdim.-w parametresi ile uyarı vermedi.Demek ki yanlış hatırlamışım.
Kod:
import std.stdio;
import std.string;
import std.conv;
int basamaklarıÇarp( int dilim )
{
int çarpım = 1;
while( dilim >= 10 ){
çarpım *= dilim % 10;
dilim /= 10;
}
çarpım *= dilim;
return çarpım;
}
void main()
{
File dosya = File("sayı.txt","r");
char[] sayı;
int[] parçalar;
int sayaç = 999;
int enBüyükÇarpım;
while( !dosya.eof() ){
sayı ~= chomp( dosya.readln() );
}
while( sayaç >= 5 ){
parçalar ~= to!int( sayı[ $ - sayaç .. $ - ( sayaç - 5 ) ] );
--sayaç;
}
foreach( parça; parçalar ){
int çarpım = basamaklarıÇarp( parça );
if( çarpım > enBüyükÇarpım ){
enBüyükÇarpım = çarpım;
}
}
writeln( enBüyükÇarpım );
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]