Şimdi Ara

C++ & data structures ödev yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
4
Cevap
0
Favori
380
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 5 dakikalık bir yardım lazım, olur mu eden? Dinamik bellek atamayla alakalı,




    Fonksiyon:
    void Filtre (int * X, int N, int ** A, int ** B,int * M, int * L);




    İşlevi:
    N sayısını ve X dizisini girdi olarak alır.X’deki sayıların ortalamasını hesaplayıp ekrana yazdıktan sonra, ortalamadan küçük olan X elemanlarını A dizisine, büyük veya eşit olanları B dizisine yerleştirir. A dizisinde M adet, B dizisinde L adet eleman olacaktır.(M ve L sayıları fonksiyon tarafından hesaplanır.Sonuçlar için M elemanlı A dizisi ve L elemanlı B dizisi dinamik bellek atama ile oluşturulur.)Sonuçlar A B dizileri, M L değişkenleri üzerinden döner.




    Nasıl olacağına dair hiçbir fikrim yok :\



    < Bu mesaj bu kişi tarafından değiştirildi syLvestr -- 12 Mart 2014; 17:31:10 >



  • syLvestr kullanıcısına yanıt
    N girilen dizi uzunluğu galiba? Bir de A be B nin double-pointer olduğuna emin misin?
  • kazmanot K kullanıcısına yanıt
    void Filtre (int * X, int N, int ** A, int ** B,int * M, int * L) { 

    int mean = 0;
    for (int i = 0 ; i < N ; i++) {
    mean += X[i];
    }

    mean = mean / N;
    cout << "ortalama: " << mean << endl;

    (*M) = 0;
    (*L) = 0;

    for (int i = 0 ; i < N ; i++) {
    if (X[i] < mean) {
    *M += 1;
    } else {
    *L += 1;
    }
    }

    *A = (int*) calloc(*M,sizeof(int));
    *B = (int*) calloc(*L,sizeof(int));

    int indexOnA = 0;
    int indexOnB = 0;

    for (int i = 0 ; i < N ; i++) {
    if (X[i] < mean) {
    A[0][indexOnA] = X[i];
    indexOnA += 1;
    } else {
    B[0][indexOnB] = X[i];
    indexOnB += 1;
    }
    }
    }
  • Şimdi yazılan kodu al ve çalışıp çalışmadığını bile kontrol etmeden doğruca hocana götür. Kasılmayı da ihmal etme ama.

    Ayrıca konu bellek yönetimi ama nedense alınan belleğin iadesi istenmemiş. Baştan ofsayt.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.