folder Tahribat.com Forumları
linefolder C - C++
linefolder C De Küçük Bir Programcık Daha



C De Küçük Bir Programcık Daha

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    frt
    frt's avatar
    Kayıt Tarihi: 19/Nisan/2008
    Erkek

    zar 1000 kere atıldığında sonuçların toplamının 1000 olması gerekiyo ama sonuçların toplamı 1000 den eksik çıkıyor yardımcı olursanız sevinirim

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    int main(){

    int i,zar;

          int dizi[6]={0};

          srand(time(NULL));

          for(i=0;i<1000;i++) {//zar 1000 kere atılıyor

              zar=rand()%6+1;//zar için 1-6 arası rast gele değerler üretiliyor

              ++dizi[zar];}// zarın rastgele üretilen değeri bir arttırılıyor

          for (i=1;i<=6;i++){

              printf("%d\n",dizi[i]);//sonuçlar ekrana bastırılıyor

          }

     

    }

     

    son bitlisli
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    int dizi[6]={0};

    6. indisi kullanamıyorsun

    dizi boyutunu 7 yaptığında çözülecektir. Ayrıca dizinin tüm elemanları int dizi[6]={0} yaptığında 0 a atanmaz

    döngü ile tüm indisleri 0 a atamalısın

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    AsDayGoesBy bunu yazdı:
    -----------------------------

    Ayrıca dizinin tüm elemanları int dizi[6]={0} yaptığında 0 a atanmaz

    döngü ile tüm indisleri 0 a atamalısın


    -----------------------------

    Atanır hocam, çok kullanılan bir yöntemdir. Aslında direkt bir kural değil biraz dolaylı bir kullanım. Asıl kural şu, bir diziye int dizi[6] = {5, 6, 3} vb şeklinde atama yaparsan, atanmamış elemanların yerine 0 doldurulur. Doğal olarak int dizi[6] = {0} dersen de, ilk elemana 0, diğer 5 elemana da yine 0 atanır.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    Evet şu anda hepsi 0 a atanıyor ancak ={0} olduğundan değil. Sadece 0. indise 0 atıyor, diğer elemanlarada default olarak 0 atıyor. ={1} yapsa hepsi 1 olmayacağını söyledim.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    frt
    frt's avatar
    Kayıt Tarihi: 19/Nisan/2008
    Erkek

    AsDayGoesBy bunu yazdı:
    -----------------------------

    int dizi[6]={0};

    6. indisi kullanamıyorsun

    dizi boyutunu 7 yaptığında çözülecektir. Ayrıca dizinin tüm elemanları int dizi[6]={0} yaptığında 0 a atanmaz

    döngü ile tüm indisleri 0 a atamalısın


    -----------------------------

    anladım hocam çok teşekkürler .


    son bitlisli
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    frt
    frt's avatar
    Kayıt Tarihi: 19/Nisan/2008
    Erkek

    yeni konu açmıyım dedim aşagıdaki yazılmış olan kodda nerde hata yapıyorum aydınlatınız beni lütfen

    //dizide tanımlanmış olan 4*4 lük matrisi saat yönünde 90 derece çeviren kod

    #include<stdio.h>

    void derece (int *[4]);

    int main( void )

    {

    int tablo[4][4] = {

    {4, 3, 2, 1},

    {1, 2, 3, 4},

    {5, 6, 7, 8},

    {2, 5, 7, 9}};

    derece(tablo);

        return 0;

    }

    void derece (int *x[4]){

        int i,y;

        for(i=0;i<4;i++){

           for (y=3;y<=0;y--){

               printf("%d",x[y][i]);

           }

           printf("\n");

        }

    }

     edit:fonksiyonu tanımlarken pointer dizisi deilde normal 2 boyutlu bir dizi tanımlayarak sorunsuz bi şekilde çalıştırıyorum ama böle yazınca kodu ekrana hiç bişey basmıyo  hatada vermiyo ayrıca

    son bitlisli
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    "y<=0" değil >=0

    void derece (int *[4]); yerine void derece (int *[4][4]);

     olmalı.

     

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    frt
    frt's avatar
    Kayıt Tarihi: 19/Nisan/2008
    Erkek

    AsDayGoesBy bunu yazdı:
    -----------------------------

    "y=0

    void derece (int *[4]); yerine void derece (int *[4][4]);

     olmalı.

     


    -----------------------------

    hocam düzenledim tekrardan ama ekrana görüntü basmıyo gene hata da vermiyo ayrıca


    son bitlisli
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    AsDayGoesBy bunu yazdı:
    -----------------------------

    void derece (int *[4]); yerine void derece (int *[4][4]);

     olmalı.

    -----------------------------

    O iki boyutlu dizinin türü int (*)[4] dir. senin verdiğin örnekteki tür ise int* (*)[4].

    @frt , prototipi "void derece (int (*)[4]);" yap, fonksiyonu da "void derece (int (*x)[4])"

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    frt
    frt's avatar
    Kayıt Tarihi: 19/Nisan/2008
    Erkek

    Tugberk bunu yazdı:
    -----------------------------

    AsDayGoesBy bunu yazdı:
    -----------------------------

    void derece (int *[4]); yerine void derece (int *[4][4]);

     olmalı.

    -----------------------------

    O iki boyutlu dizinin türü int (*)[4] dir. senin verdiğin örnekteki tür ise int* (*)[4].

    @frt , prototipi "void derece (int (*)[4]);" yap, fonksiyonu da "void derece (int (*x)[4])"


    -----------------------------

    hocam benim derleyicidemi bi sıkıntı var acaba çıktı olarak sonucu ekrana basmıyo hata da vermiyo ama siyah ekran çıkıyo sonucun kaplıyacağı yer kadarda boş alan bırıkıllıyo ama bişey yazmıo bu arada derleyici olarak codeblocks kullanıyorum 


    son bitlisli
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    Derleyicide sorun olduğunu sanmam. söylenenlerden birini yapmamışsındır. bende sıkıntısız çalıştı.

    #include<stdio.h>
    
    void derece (int (*)[4]);
    
    int main( void )
    {
        int tablo[4][4] = { {4, 3, 2, 1},
                            {1, 2, 3, 4},
                            {5, 6, 7, 8},
                            {2, 5, 7, 9}};
    
        derece(tablo);
        return 0;
    }
    
    void derece (int (*x)[4])
    {
        int i,y;
    
        for(i=0;i<4;i++)
        {
            for (y=3;y>=0;y--)
            {
                printf("%d\t",x[y][i]);
            }
            printf("\n");
        }
    }
    
Toplam Hit: 1956 Toplam Mesaj: 17