folder Tahribat.com Forumları
linefolder C - C++
linefolder Çok Boyutlu Diziler (Multidimensional Arrays) C (Daha İyi Yolu Var Mı)



Çok Boyutlu Diziler (Multidimensional Arrays) C (Daha İyi Yolu Var Mı)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    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.

    http://img207.imageshack.us/img207/1948/adszes.jpg

     

    Ben şu şekilde yaptım... http://hotfile.com/dl/85150010/d906d8b/test.cpp.html

     


    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek

    Hocam kodu yapıştırsana buraya :| Adamlar o kadar kod editörü eklediler siteye..

    şimdi kim hf ile uğraşacak :D


    There are 10 types of people in the world. Those who knows binary and those who dont...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    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;
    }


    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    seretide
    seretide's avatar
    Kayıt Tarihi: 14/Haziran/2010
    Erkek

    şö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; }

    Saçma
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Destroyer
    Destroyer's avatar
    Kayıt Tarihi: 27/Eylül/2003
    Erkek

            // 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("");
            }


    d.d.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    @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.


    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Destroyer
    Destroyer's avatar
    Kayıt Tarihi: 27/Eylül/2003
    Erkek

    Matematik ve mantığı bükebildikten sonra istediğini yazabilirsin.

    Bu arada bir sonraki ödeviniz/projeniz oyun yazmak olabilir kanımca.


    d.d.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    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/


    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
Toplam Hit: 1654 Toplam Mesaj: 8