Hımm. Programı çalıştırmadan ve cevaba bakmadan rastgele fikirler..
import std.stdio, std.random;
void main () {
double[5] dizi;
foreach(ref eleman; dizi) {
eleman = uniform(5, 15);
}
foreach(i; 0 .. dizi.length) {
writeln(dizi[i]);
}
}
Örneğin bu program çalışıyor. Burada foreach ile ilgili bir hata yok sanırım. Çünkü dershanede bu şekilde örnekler vardı.
foreach (sayaç, eleman; dizi) {
writeln(sayaç, ": ", eleman);
}
Sabit genişlikli bir diziyi bir işleve parametre olarak geçtiğimizde ya da döndürdüğümüzde tüm elemanlar kopyalanıyordu. Ama böyle bir durum da gözükmüyor.
'i''nin ilklendirme değeri ne olabilir. Eğer sayaç olarak kullanılacaksa arttırılması gerekmez mi. Ben 'i''yi hataya yakın buluyorum. Ve ilklendirme değeri geçersiz bir değerse hatalı sonuç elde edebiliriz diye düşünüyorum.
Birazdan programı çalıştırıp deneyeceğim merak etmeye başladım! :-D
Programı çalıştırdıktan sonra 'i 've 'eleman''ın türleri farklı. Birisi 'double' birisi 'int'.
Programı şu şekilde düzelttikten sonra çalışıyor:
import std.stdio;
void main()
{
double[5] dizi;
int ortaDeğer = 3;
foreach (int i, ref eleman; dizi) {
eleman = cast(double) (i - ortaDeğer);
}
writeln(dizi);
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]