C - C++
Çok Boyutlu Diziler (Multidimensional Arrays) C (Daha İyi Yolu Var Mı)
Çok Boyutlu Diziler (Multidimensional Arrays) C (Daha İyi Yolu Var Mı)
-
Programlama hocası evde biraz uğrasın diye bir ödev verdi. Baya bi uğraşmamın sonucunda yaptım ama daha iyi bi yöntemi var mı aklınıza gelen? zamanı olan baksın birkaç saat sonra hocaya mail olarak göndericem.
Soruyu açıklıyorum, şekilde görüldüğü gibi iki boyutlu dizeye değerleri şekilde ki sıra ile gönderilecek.
Ben şu şekilde yaptım... http://hotfile.com/dl/85150010/d906d8b/test.cpp.html
-
Hocam kodu yapıştırsana buraya :| Adamlar o kadar kod editörü eklediler siteye..
şimdi kim hf ile uğraşacak :D
-
tmm hocam ekliyorum :)
#include
#include
int main()
{
int a[5][5];
int sayi=1;
int n1=0,n2=1,n3=4,n4=0,n5=0;
for(int k = 0;k<9;k++){
if(k%4==0){//1. Olay
for(int i = n1;i<(5-n1);i++){
a[n1][i]=sayi;
sayi++;
}
n1++;
}
else if(k%4==1){//2.Olay
for(int i =n2;i<(6-n2);i++){
a[i][(5-n2)]=sayi;
sayi++;
}
n2++;
}
else if(k%4==2){//3.Olay
for(int i=(7-n3);i>(n3-5);i--){
a[(n3-n5)][i]=sayi;
sayi++;
}
n3++;
n5=n5+2;
}
else if(k%4==3){//4.Olay
for(int i =(3-n4);i>(0+n4);i--){
a[i][n4]=sayi;
sayi++;
}
n4++;
}
}
for(int i = 0;i<5;i++){
for(int j =0;j<5;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
getchar();
return 0;
} -
şöyle bişey yazdım.Matrisin sınırına gidince veya yazılmış bi elemanla karşılaşınca yön değiştiriyo.
#include int main() { int i,k,sayi,i_degisim,k_degisim; int matris[5][5]={0}; i=0; k=0; sayi=1; i_degisim=0; k_degisim=1; while(sayi<=25){ matris[i][k]=sayi; sayi++; if((matris[i+i_degisim][k+k_degisim]!=0)||(k+k_degisim>=5)||(i+i_degisim>=5)||(k+k_degisim<0)||(i+i_degisim<0)){ if(i_degisim==0){ i_degisim=k_degisim; k_degisim=0; } else{ k_degisim=i_degisim*-1; i_degisim=0; } } i+=i_degisim; k+=k_degisim; } for(i=0;i<5;i++){ for(k=0;k<5;k++){ printf("%2d ",matris[i][k]); } printf("\n"); } return 0; } -
// ULTIMATE POWER, ULTIMATE FREEDOM. THAT IS JAVA!
// Bu problemi soyle hayal edin
// Bir karincayi karenin icinde 0,0 lokasyonunda kafasi doguya bakacak sekilde koyuyorsunuz
// Karinca sadece duz yurumeyi biliyor ama duvara veya dolu olan bir kutucuga carpti mi saga donuyor
// n karenin kenar uzunlugu (kutucuk biriminden)
// d yon, 0:dogu, 1:guney, 2:bati, 3:kuzey, karinca baslangicta doguya bakiyor
// x, y bulunulan kutucugun lokasyonu, karinca baslangicta x=0, y=0 lokasyonunda
int n = 5, x = 0, y = 0, tmp_x = 0, tmp_y = 0, d = 0;
int a[][] = new int[n][n];
// Tum kutucuklari bosluk yapiyoruz
// Kutucuklarin bosluk oldugunu -1 degeriyle gosterelim
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = -1;
}
}
// Karinca yurumeye basliyor
for (int i = 0; i < n*n; i++) {
a[x][y] = i + 1;
tmp_y = y + (1 - (d % 2)) * (1 - 2 * (d / 2));
tmp_x = x + (d % 2) * (1 - 2 * (d / 2));
// Karincanin gideceği kutucuk kare icinde degilse veya gidecegi kutucuk bos degilse karinca saga donuyor
if (( tmp_x > -1 && tmp_y > -1 && tmp_x < n && tmp_y < n && a[tmp_x][tmp_y] == -1) == false) {
d = (d+1) % 4;
tmp_y = y + (1 - (d % 2)) * (1 - 2 * (d / 2));
tmp_x = x + (d % 2) * (1 - 2 * (d / 2));
}
x = tmp_x;
y = tmp_y;
}
// Kareyi konsola yazdiriyoruz
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(a[i][j]+"\t");
}
System.out.println("");
} -
@seretide,@Destroyer güzel çözümler gerçekten, ben yön değiştirmeyi düşünmüştüm ama sonradan x ve y sine nasıl göndericeğimi ayarlıyamamıştım. @seretide açık bir şekilde yapmış. Diğer örnek hiç aklımın ucundan geçmemişti.
-
Matematik ve mantığı bükebildikten sonra istediğini yazabilirsin.
Bu arada bir sonraki ödeviniz/projeniz oyun yazmak olabilir kanımca.
-
Destroyer bunu yazdı:
-----------------------------
Matematik ve mantığı bükebildikten sonra istediğini yazabilirsin.
Bu arada bir sonraki ödeviniz/projeniz oyun yazmak olabilir kanımca.
-----------------------------evet hocam doğru tahmin :) Tic Tac Toe oyununu verdi :) bu diğerine göre biraz daha basit geldi :)
http://www.bilgisayarkavramlari.com/2010/11/30/nesne-yonelimli-olarak-tic-tac-toe-oyunu/
edit: bu arada hocanın derste çözdüğü yöntem
http://www.bilgisayarkavramlari.com/2010/12/04/2-boyutlu-dizi-icerisine-sarmal-seri-girisi/