Değişken boyutlu 2d dizi oluşturma hakkında sorun yaşıyorum.

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Onaylı Üye
Katılım
28 Mar 2019
Mesajlar
111
Çözümler
1
Tepki puanı
17
Ödüller
5
Yaş
29
7 HİZMET YILI
Arkadaşlar boş cevaplar yazanları reportluyorum öncelikle bunu belirteyim!!!

Şimdi arkadaşlar 2d bir dizi oluşturmak istiyorum. Nasıl tanımlayacağımı biliyorum.
C++:
//x ve y const olmak üzere
int arr[x][y];

tamam bu şekilde bir sıkıntı yaşamıyorum ancak istediğim 2d dizinin boyutunu kullanıcıdan almak, 1d dizinin boyutunu pointer ve dinamik bellek yönetimiyle kullanıcıdan alarak rahat rahat istediğimi yaptırıyorum
C++:
int main() {
    int x;
    cin >> x;
    int* dizi = new int[x];
   
 
    for (int i = 0; i < x; i++)
        *(dizi + i) = i+1;

    for (int i = 0; i < x; i++)
        cout << *(dizi + i) << endl;


    cout << *(dizi+1);
    delete[] dizi;
    cout << "------------------------------------------------" << endl;

    return 0;
}

visual studio 2019 kullanıyorum bu arada aynı tanımlamayı(pointer ve dinamik bellek yönetimiyle) 2d dizi için yaptığımda gene izin vermiyor

C++:
int n;
int * dizi= new int[n][n];


Kısaca soru şu aslında kare matris(2d [n][n] dizi) oluşturmak istiyorum ama boyutunu kullanıcıdan alıcam bunu nasıl yapabilirim ?
 
Son düzenleme:
Onaylı Üye
Katılım
28 Mar 2019
Mesajlar
111
Çözümler
1
Tepki puanı
17
Ödüller
5
Yaş
29
7 HİZMET YILI
Vector kullanman yasak mı ?
ya aslında değil vectore push fonksiyonlarıyla sonradan ekleme yapabildiğim için daha bile rahat olur aslındada hackerrankta bir problem gördümde array istiyor buna uğraşıyorum bende 1 boyutlu arrayı 2 gibi bile kullanabilirim aslında


C++:
   int x;
    cin >> x;
    int* dizi = new int[x*x];

şu şekilde ama 2d yapmak istemiştim sadece :D
 
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,725
Ödüller
25
10 HİZMET YILI
Normalde arrayların sizeleri derlenirken veriliyor. Mobilim tam bakamadım ama işaretçi yani ptr kullanmışsın sanırsam. Eğer delete yapmazsan memoryleak oluşacaktır. Pc geçince bakıcam
 
Onaylı Üye
Katılım
28 Mar 2019
Mesajlar
111
Çözümler
1
Tepki puanı
17
Ödüller
5
Yaş
29
7 HİZMET YILI
Normalde arrayların sizeleri derlenirken veriliyor. Mobilim tam bakamadım ama işaretçi yani ptr kullanmışsın sanırsam. Eğer delete yapmazsan memoryleak oluşacaktır. Pc geçince bakıcam
delete yapıyorum zatende tam kodda var hatta örnek verdiğim için delete yazmadım, tamamdır reis
 
Banlı Üye
Katılım
6 Tem 2019
Mesajlar
24
Tepki puanı
2
6 HİZMET YILI
Bu vardı simetrik mi kontrol etmek için, ama elle girilebiliyordu boyutu. İstersen kontrol et, işine yarayanları al

int i,j,n;
int yedek,kontrol;
int mat[10][10];

printf("Kare Matrisin Boyutunu Giriniz :");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf("%d.satir, %d.sutun elemani : ",i,j);
scanf("%d",&mat[j]);
}

kontrol=1;
for(i=2;i<=n;i++)
for(j=1;j<=i-1;j++)
{
if(mat[j]!=mat[j])
kontrol=0;
}

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%5d",mat[j]);
printf("\n");
}

if(kontrol==1) printf("Matris Simetriktir");
else printf("Matris Simetrik Degildir");
getch();
 
Onaylı Üye
Katılım
28 Mar 2019
Mesajlar
111
Çözümler
1
Tepki puanı
17
Ödüller
5
Yaş
29
7 HİZMET YILI
Bu vardı simetrik mi kontrol etmek için, ama elle girilebiliyordu boyutu. İstersen kontrol et, işine yarayanları al

int i,j,n;
int yedek,kontrol;
int mat[10][10];

printf("Kare Matrisin Boyutunu Giriniz :");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf("%d.satir, %d.sutun elemani : ",i,j);
scanf("%d",&mat[j]);
}

kontrol=1;
for(i=2;i<=n;i++)
for(j=1;j<=i-1;j++)
{
if(mat[j]!=mat[j])
kontrol=0;
}

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%5d",mat[j]);
printf("\n");
}

if(kontrol==1) printf("Matris Simetriktir");
else printf("Matris Simetrik Degildir");
getch();

teşekkür ederim öncelikle kankam iyi güzel hoş bunu bende yapıyom zaten ama burda matrisi başta [10][10] tanımlıyoruz zaten yani sen hepsini doldurmazsan zaten küçük olacaktır doldurulmayan diğer elemanlara 0 atarak kendini hertürlü tamamlar. Ama 10x10 dan büyük yapamayız bunu compile dan sonra
 
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,725
Ödüller
25
10 HİZMET YILI
@kantura67 buyur.
C++:
#include <iostream>
using namespace std;

int main() {
    int N, M; // N satır, M sütun.
    cin >> N;
    cin >> M;
//dynamic allocation sex start xd
    int** ary = new int* [N];
    for (int i = 0; i < N; i++)
        ary[i] = new int[M];
//dynamic allocation sex end

//fill me up baby start
    for (int i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
            ary[i][j] = i;
//fill me up baby end xd

//print me baby start
    for (int i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
            std::cout << ary[i][j] << "\n";
//print me baby end

//free me baby start
    for (int i = 0; i < N; i++)
        delete[] ary[i];
    delete[] ary;
//free me baby end
    return 0;
}
 
Son düzenleme:
Onaylı Üye
Katılım
28 Mar 2019
Mesajlar
111
Çözümler
1
Tepki puanı
17
Ödüller
5
Yaş
29
7 HİZMET YILI
@kantura67 buyur.
C++:
#include <iostream>
using namespace std;

int main() {
    int N, M; // N satır, M sütun.
    cin >> N;
    cin >> M;
//dynamic allocation sex start xd
    int** ary = new int* [N];
    for (int i = 0; i < N; i++)
        ary[i] = new int[M];
//dynamic allocation sex end

//fill me up baby start
    for (int i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
            ary[i][j] = i;
//fill me up baby end xd

//print me baby start
    for (int i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
            std::cout << ary[i][j] << "\n";
//print me baby end

//free me baby start
    for (int i = 0; i < N; i++)
        delete[] ary[i];
    delete[] ary;
//free me baby end
    return 0;
}
demekki neymiş... dinamik bellek yönetimine iyi çalışmak gerekiyormuş teşekkürler :D
edit: güzel yorum satırları :D
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst