C++ fonksiyona çift boyutlu dizi göndermek

Wolf_99

Hectopat
Katılım
10 Nisan 2021
Mesajlar
180
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Main fonksiyonundan başka bir fonksiyona çift boyutlu bir dizi gönderirken dizinin ikinci parantezinde boyutunu belirtmemiz gerektiğini biliyorum fakat bu boyutu Main'de kullanıcıdan aldığımızda diğer fonksiyona nasıl göndereceğimi bulamadım. Her yerde boyutu bir tam sayı ya da belli bir değer olarak girmişler. Anlatmak istediğim şeyi SS olarak eklere bırakıyorum. Ek olarak bu kodu Pointer'sız yazmam gerekiyor.
 

Dosya Ekleri

  • Ekran Alıntısı10.PNG
    Ekran Alıntısı10.PNG
    3,9 KB · Görüntüleme: 55
Son düzenleyen: Moderatör:
2. parantezin değerini (column) hem parantezin içine yazacaksınız, hem de fonksiyona parametre olarak ekleyeceksiniz. Gerekiyorsa row değeri de eklenmeli.

Func(int col, int arr[][col])

C'de böyle idi. C++ için de çalışacaktır diye düşünüyorum.
 
2. parantezin değerini (column) hem parantezin içine yazacaksınız, hem de fonksiyona parametre olarak ekleyeceksiniz. Gerekiyorsa row değeri de eklenmeli.

Func(int col, int arr[][col])

C'de böyle idi. C++ için de çalışacaktır diye düşünüyorum.
Hocam hata veriyor yine.
 
İbrahim'in dediği şekil eklere bıraktığım gibiyse hata şu: 'boyut2' was not declared in this scope.
 

Dosya Ekleri

  • Ekran Alıntısı11.PNG
    Ekran Alıntısı11.PNG
    4,3 KB · Görüntüleme: 42
Kusura bakmayın yanlış anlamışım. Array'in öncesine parametre olarak ekledim fakat bu sefer de 'use of parameter outside function body before ']' token' hatası veriyor.
 

Dosya Ekleri

  • Ekran Alıntısı12.PNG
    Ekran Alıntısı12.PNG
    4,2 KB · Görüntüleme: 31
Neyi bu kadar uzatılmış anlamıyorum.

Resim olarak kod paylaşmayın. C kullanıyorsanız C kullanın, C++ kullanıyorsanız C++ kullanın.
Kod:
#include <iostream>
#include <array>

#define ROW 2
#define COL 3

void printArray2D(const std::array<std::array<int, COL>, ROW>& arr) {
    for (auto& i : arr) {
        for (auto& j : i) {
            std::cout << j << ' ';
        }
        std::cout << '\n';
    }
}

int main() {
    std::array<std::array<int, COL>, ROW> arr{{
        {1, 2, 3},
        {4, 5, 6}
    }};
    
    printArray2D(arr);

    return 0;
}

Kusura bakmayın yanlış anlamışım. Array'in öncesine parametre olarak ekledim fakat bu sefer de 'use of parameter outside function body before ']' token' hatası veriyor.
int dizi[][boyut2] dediğinizde boyut2 değişkendir. Sabit olmalı. Paylaştığım örnekteki #define gibi.

Boyutu kullanıcıdan alacaksan bellek alıp düzenlersin. Böyle uğraşılmaz.
Ya da gerçekten C++ kullanıp standart kütüphanenin nimetlerinden yararlanırsın.
 

Yeni konular

Geri
Yukarı