[Çözüldü] Fonksiyona matris

Başlatan erdemakin09, 02 Kasım 2015 - 01:31:57

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

erdemakin09

Iyi gunler arkadaslar. Projemin son 6 7 gunu kaldi fakat cok kotu bir yerde tikandim. Projemden azda olsa bahsetmek istiyorum.

Kullanican 4x4 ile 16x16 arasi bir matris alicaz iki boyutlu dizi olarak daha sonra bunu bi txt dosyasina yazdircaz. Kullanici verilen 4 matris turunden birini secicek ve biz matrisi fonksiyona gondericez fonksiyin matrisin kontrolunu yapicak.

Bu programla ilgili iki onemli sorunum var birincisi kullanici buyuk boyutlu matrisi sectiginde ornek vereyim 16 ya 16 matirs secti 1 satir 9 sutuna kadar eleman aliyor fakat sonra program sonlaniyor yada 1 satir 7 sutuna geliyor sonra 7 satir 9 sutuna atliyor ve program kapaniyor. Onbellekte bi yigilma var ama cozemedim bir turlu.

Ikinci sorunum da sudur fonksiyina iki boyutlu dizi gonderirken sutun sayisini belirtmek gerek fakat ben sutun sayisini kullanicidan aliyorum o yuzden fonksiyona matris gonderemiyorum. Nasil yapabiliriz yardimci olursaniz cok sevirim.

Ufak bir not Arkadaslar amacim projemi size yaptirmak degil sadece takildigim bu iki yerden yardim almaktir ve telefondan actigim icin bazi yazim yanlislarim olabilir onlar icinde ozur dilerim.
Her Can Bir Gün Ölümü Tadacaktır!

MuhbirKedi

Lise ödevi felan mı acaba? Bilgisayar ortamında mı yapacaksınız? Bu konuda iyi olan arkadaşlar yardım edebilirler beklemede kalın.
Önemli olan para değil, para ile ne yaptığındır, en iyi zenginlik ise gönül zenginliğidir. ;)

erdemakin09

Lise degil universite. Pek birsey ogretmedikleri icin boyle kaldik bizde iki haftadir ugrasiyorum. Bilgisayar ortaminda yapilicak. Code blocks kullaniyorum. C++ dilinde yaziyorum bu bilgileri vermemisim.
Her Can Bir Gün Ölümü Tadacaktır!

MuhbirKedi

Alıntı yapılan: erdemakin09 - 02 Kasım 2015 - 01:54:25
Lise degil universite. Pek birsey ogretmedikleri icin boyle kaldik bizde iki haftadir ugrasiyorum. Bilgisayar ortaminda yapilicak. Code blocks kullaniyorum. C++ dilinde yaziyorum bu bilgileri vermemisim.
Yanlış anlamayın ama bende üniversiteye hazırlanıyorum bölümünüz nedir ve hangi üniversite?
Önemli olan para değil, para ile ne yaptığındır, en iyi zenginlik ise gönül zenginliğidir. ;)

erdemakin09

Kocaeli universitesi bilgisayar muhendisligi
Her Can Bir Gün Ölümü Tadacaktır!

MuhbirKedi

Alıntı yapılan: erdemakin09 - 02 Kasım 2015 - 02:01:04
Kocaeli universitesi bilgisayar muhendisligi
Önermiyorsunuz değil mi? Hocalar öğretmiyor felan da dediniz de.
Önemli olan para değil, para ile ne yaptığındır, en iyi zenginlik ise gönül zenginliğidir. ;)

plazma

Matrisin tersini mi alıyorsunuz, birde yazdığınız kodu paylaşırsanız yorum yapacaklar ona göre yorum yapacaktır nerede hata yada eksik var gibi

-DıLgEş-

16*16'lik bir matris sorun olur. Yarın yazabilirsem size bunun dosyaya yazdırılmış halini gösterebilirim. Aşağıdaki yazdığım koda benzetebilirsiniz: C++


#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ofstream dosyaya_yaz;
    dosyaya_yaz.open("dizi.txt");

    int n=0, k;
    int dizi[n];

    cout<<"Kaç adet sayı girilecek: ";
    cin>>n;

    for(int i=0; i<n; i++)
    {
        cout<<(i+1)<<". Sayıyı Giriniz: ";
        cin>>dizi[i];
    }

    for(int i=0; i<n-1; i++)
    {
        for(int j=(i+1); j<n; j++)
        {
            if(dizi[i]>=dizi[j])
            {
                k=dizi[i];
                dizi[i]=dizi[j];
                dizi[j]=k;
            }
        }
    }

    for(int i=0; i<n; i++)
    {
        dosyaya_yaz<<dizi[i]<<", ";
    }
}


Uzunluk içinden kullanıcıdan isteyeceksiniz. C++'ta vector kullanılarak kullanışlı bir şeyler yapılabiliyor. Eğer isterseniz yarın için bir vectör örneği paylaşabilirim. Bir vektörün begin ve end fonksiyonları yardımıyla dizi içinde dolaşabiliyoruz.

Birinci sorunuzu daha detaylı anlata bilir misiniz?
Bu proje üzerinde ben de uğraşacağım. Bu projeyi D ile yazmak 2 günümü almaz ancak C++ ile yazmak biraz zaman alacak... Vector yapısında biraz acemiyim de...
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

-DıLgEş-

Soruyu anlamadım, matris boyutunu kullanıcı mı seçecek? Mesela 13 gibi... Yada aşağıdaki gibi mi olacak?

1) 4*4 Matris
2) 8*8 Matris
3) 12*12 Matris
4) 16*16 Matris

Kullanıcı 1 girdiğinde 4*4 matrisi dolduracak, bu şekilde mi?
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

erdemakin09

Cok ozur dilerim arkadaslar ya ttnet yuzunden internetim yoktu.

Soruna gelicek olursak kullanici direk boyut giricek
Cout>>matrisin boyutunu giriniz
Cin>>sayi1
Gibi
Her Can Bir Gün Ölümü Tadacaktır!

Amenofis

Bellek tahsisi 2 aşamada yapılır. Önce 1d dizi tahsis ederiz, sonra kaç tane 1d dizi olacağını belirtip matrisi oluştururuz. Çünkü 2d dizi, dizilerin dizisi anlamına gelir. Tabi bu dizileri işaret etmek için de bir işaretçi dizisi ve bunların  başlangıç adreslerini tutan "işaretçiyi gösteren işaretçi" lazım.:-X

Belleği iade ederken de önce 1d dizileri boşaltıp ardından işaretçilerin kendilerini sileriz. Bu işler her zaman bu kadar karmaşık mıdır dersen hayır değildir. Adamlar sağolsun bunun gibi birçok işlemi otomatikleştirecek araçlar yazmışlar. İstersen onlara da gireriz.

#include <iostream>
using namespace std;

void matrisYazdir(int **matris, int satir, int sutun)
{
    for(int i = 0; i < satir; ++i) {
        for(int j = 0; j < sutun; ++j)
            cout << matris[i][j] << '\t';
        cout << endl;
    }
}

int main()
{
    // Uzunluğu kullanıcıdan al
    int x, y, a = 0;
    cin >> x >> y;
    
    // Matrisi bellekten tahsis et
    int **matris = new int*[x];
    for(int i = 0; i < x; ++i)
        matris[i] = new int[y];
    
    // İçini doldur
    for(int i = 0; i < x; ++i) {
        for(int j = 0; j < y; ++j)
            matris[i][j] = ++a;
    }
    
    // Uzunluğu belirterek yazdır
    matrisYazdir(matris, x, y);
    
    // İşi bitince iade et
    for(int i = 0; i < x; ++i)
        delete[] matris[i];
    delete[] matris;
    
    return 0;
}


erdemakin09

Cok tesekkur ettim ya hallettim sayende o sorunu. Tekrar tekrar tesekkurler
Her Can Bir Gün Ölümü Tadacaktır!

betseg

Çözülmüş konular için böyle bir uygulamamız var: cozuldukonusu

erdemakin09

Alıntı yapılan: betseg - 08 Kasım 2015 - 13:28:44
Çözülmüş konular için böyle bir uygulamamız var: http://kb.ubuntu-tr.net/cozulen-basliklarin-etiketlenmesi
Telde tapatalk kullaniyorum. Basligi duzenle diyip cozuldu etiketini koyuyorum onayliyorum basariyla degistirildi diyor fakat degistirmiyor.
Her Can Bir Gün Ölümü Tadacaktır!

heartsmagic

Biz yapalım o halde, teşekkürler geri bildirim için.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.