| |
| Posted by Ali Çehreli in reply to İbrahim | PermalinkReply |
|
Ali Çehreli
Posted in reply to İbrahim
| On 10/10/21 1:07 PM, İbrahim wrote:
> Merhaba.
>
> Şöyle bir kod var diyelim:
>
> ```c++
> Dizi a[10] = ...;
> Dizi2 b[10] = ...;
>
> void foo()
> {
> for (int i = 0; i < len(a); i++)
> {
> a[i].x = b[i];
> a[i].y = b[i + 1]; // Bu taşacağı için hata verecek.
Peki sondaki a[i]'nin y'si ne olacak? 42 varsayacağım. :)
> }
> }
> ```
>
> Burada a da b de 10 elemanlı diziler. Her bir döngü aşamasında a[i].x'e
> b[i]'yi, a[i].y'ye ise b[i + 1]'i atamak istiyorum. Fazlaca değişken
> kullanmadan tek dögüyle bunu yapmanın yolu var mı? Veya siz nasıl bir
> yöntem kullanırdınız?
>
> Teşekkürler.
Ben olsam son elemanı döngüden sonra hallederdim:
foreach(i; 0 .. a.length - 1) {
a[i].x = b[i];
a[i].y = b[i+1];
}
a[$-1].x = b[$-1];
a[$-1].y = 42;
Bütün kod şöyle:
import std.stdio;
import std.range;
struct Dizi {
int x;
int y;
}
alias Dizi2 = int;
void main() {
Dizi[10] a;
Dizi2[10] b = 10.iota.array;
writeln("b: ", b);
foreach(i; 0 .. a.length - 1) {
a[i].x = b[i];
a[i].y = b[i+1];
}
a[$-1].x = b[$-1];
a[$-1].y = 42;
writeln("a: ", a);
}
Çıktısı şöyle oluyor:
b: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a: [Dizi(0, 1), Dizi(1, 2), Dizi(2, 3), Dizi(3, 4), Dizi(4, 5), Dizi(5, 6), Dizi(6, 7), Dizi(7, 8), Dizi(8, 9), Dizi(9, 42)]
Ali
|