Şimdi Ara

C de dizi-fonksiyon kullanımı ile ilgili sorun

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
2.600
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • selamlar...

    arkadaşlar c yi yeni öğrenmeye başladım. Diziler ve fonkisyon kullanımı ile ilgili bi sorum olacak..

    Aşağıdaki kodlarla yapmak istediğim şey gayet basit. Ana fonksiyonda belirtilen 3 e 3 lük bir dizi bir başka fonksiyona gönderilecek burada dizinin her değeri 2 artırılarak ekrana yazdırılacak.

     
    #include <stdio.h>
    #include <stdlib.h>

    #define SIZE1 3
    #define SIZE2 3

    void function1(f1[][], f11, f22);

    int main(void)
    {
    int i=0;
    int j=0;
    int ahs[SIZE1] [SIZE2]= {{15, 13, 12},
    {15, 17, 18},
    {18, 17, 19}};


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

    for (j=0; j< SIZE2; j++){
    printf("%d " , ahs[ i ][ j ]);
    }
    printf("\n");
    }
    function1(ahs[][], SIZE1, SIZE2);

    system("PAUSE");
    return 0;
    }

    // Fonksiyon başlangıcı //

    void function1( f1[][], f11, f22)
    {
    int i=0;
    int j=0;

    for (i=0; i< f11; i++){
    for (j=0; j< f22; j++){
    f1[ i ][ j ] += 2;
    }
    }

    for (i=0; i< f11; i++){
    for (j=0; j< f22; j++){
    printf("%d " , f1[ i ][ j ]);
    }
    printf("\n");
    }

    }



    yalnız sanırım tanımlamalarla ilgili bi hata alıyorum.


     C de dizi-fonksiyon kullanımı ile ilgili sorun



    sorun nerede? yardımcı olursanız sevinirim







  • 1. Fonksiyon parametreleri tanımsız
    2. sanırım diziyi eleman sayısını belirterek tanıtmanı istiyor
    3. diziyi argüman olarak kullanırken (satır 25) [] karakterlerini kullanma,yalnızca ismini gir

    ayrıca yazdığın programların anlaşılır olmasına da dikkat et,gramer ve syntax kadar stil de önemlidir
    kolay gelsin
  • teşekkürler @ertrul

    1. ve 3. adımı anladım ve düzelttim bu sefer tek bir hata alıyorum.

    ilgili satırlar...
    ....
    f1[ i ][ j ] += 2;
    ...
    printf("%d " , f1[ i ][ j ]);
    ....

    bu 2 satır ile ilgli şöyle bir hata var..
    " invalid use of array with unspecified bounds"

    Sanırım 2. adım ile ilgili bir hata.dediğin gibi dizi boyutunu önceden tanımlamamı istiyor. bir iki bişi denedim olmadı :).

    Ayrıca şöyle bi durumda var. Bu örnekte f1 dizisinin boyutları önceden bilinebilir ve tanımlama yapılabilir. Ancak başka bi örnek de dizi boyutu yapılan işlemlere bağlı olarak değişim göstermesi gerekirse yani fonsiyon başlamadan önce dizinin boyutu bilinmiyorsa o zaman ne yapacam ve bu hatayı almayacam?

    Dediğin tavsiyelere uymaya çalışıyordum aslında ama sonradan baktım da bana da pek dağınık ve karışık gözüktü. uyarın için sağol...




  • Dizi tanımlarken ister eleman sayısını belirt ister belirtme farketmez. Dizilerin boyutları derlenirken belirlenir, çalışma sırasında büyüyüp küçülemez.

    Eğer önceden bilinemeyen uzunlukta verilerle çalışacaksan dinamik hafıza tahsisi konusunu araştırman gerekiyor.

    Bir öneri olarakta şunu söyliyim; dev-c++ kullanma. İçindeki eski sürüm derleyicinin c++ standartlarını karşıladığından bile şüpheliyim. Onun yerine şu adresten mingw nin son sürümünü indir:http://sourceforge.net/projects/mingw/files/
    Bu installer kendisi gerekenleri indirip kurar.
    Bunlar komut satırı araçları, birde ide lazım o da şu:http://download.berlios.de/codeblocks/codeblocks-10.05-setup.exe

    Bunları kurduktan sonra çok daha şık ve sorunsuz bir geliştirme ortamına sahip olursun.




  • quote:

    Orijinalden alıntı: elektro_gadget

    Dizi tanımlarken ister eleman sayısını belirt ister belirtme farketmez. Dizilerin boyutları derlenirken belirlenir, çalışma sırasında büyüyüp küçülemez.

    Eğer önceden bilinemeyen uzunlukta verilerle çalışacaksan dinamik hafıza tahsisi konusunu araştırman gerekiyor.

    Bir öneri olarakta şunu söyliyim; dev-c++ kullanma. İçindeki eski sürüm derleyicinin c++ standartlarını karşıladığından bile şüpheliyim. Onun yerine şu adresten mingw nin son sürümünü indir:http://sourceforge.net/projects/mingw/files/
    Bu installer kendisi gerekenleri indirip kurar.
    Bunlar komut satırı araçları, birde ide lazım o da şu:http://download.berlios.de/codeblocks/codeblocks-10.05-setup.exe

    Bunları kurduktan sonra çok daha şık ve sorunsuz bir geliştirme ortamına sahip olursun.


    önerini değerlendirdim ve codeblocks u kullanmaya başladım. Yalnız ilk izlenimim dev-C++ den çok farkı yok gibi geldi bana. ama şunlar güzel yanları; aynı anda birden fazla projede çalışabiliyorsun ve kodlar biraz daha renkli...

    dinamik hafıza konusu ile ilgili bir kaynak buldum ve çalışıyorum. yardımın için teşekkürler...

    ancak aşağıdaki kodlarda oluşan verilen hatayı bir türlü çözemedim.Dizi boyutu ile ilgili bir hata olduğunu tahmin ediyorum ancak çözüm için bir fikrim yok maalesef...

    codeblocks da yazılmış kodlar

     

    #include <stdio.h>
    #include <stdlib.h>

    #define SIZE1 3
    #define SIZE2 3

    void function1(int f1[][], int f11, int f22);

    int main(void)
    {
    int i=0;
    int j=0;
    int ahs[SIZE1] [SIZE2]= {{15, 13, 12},
    {15, 17, 18},
    {18, 17, 19}};


    for (i=0; i< SIZE1; i++){
    for (j=0; j< SIZE2; j++){
    printf("%d " , ahs[ i ][ j ]);
    }
    printf("\n");
    }

    function1(ahs, SIZE1, SIZE2);

    system("PAUSE");
    return 0;
    }

    /* Fonksiyon başlangıcı */

    void function1( int f1[][],int f11, int f22)
    {
    int i=0;
    int j=0;

    for (i=0; i< f11; i++){
    for (j=0; j< f22; j++){
    f1[ i ][ j ] += 2;
    }
    }

    for (i=0; i< f11; i++){
    for (j=0; j< f22; j++){
    printf("%d " , f1[ i ][ j ]);
    }
    printf("\n");
    }

    }



    ve alınan hata...
     C de dizi-fonksiyon kullanımı ile ilgili sorun




  • Fonksiyon tanımlamasında dizi boyutunu açıkça belirtmek gerekiyormuş.
    void function1( int f1[3][3], int f11, int f22) şeklinde.

    Ayrıca fonksiyon dizilerle çalışan genel bir fonksiyon değilse, programına özel birşeyse f11 ve f22 parametrelerini geçirmene gerek yok. Yani şu şeklide yazılabilir: void function1( int f1[3][3])
    Zaten dizinin uzunluğunu biliyorsun çünkü.
  • peki bu codeblocks da programı exe haline dönüştürmek nasıl oluyor?
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.