Şimdi Ara

C'de dizinin içine karakter ekleme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
4 Misafir - 4 Masaüstü
5 sn
8
Cevap
0
Favori
1.491
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C'de proje geliştirmeye çalışıyorum. Bir dizim var ve dizinin belirli bir elemanından sonra başka bir eleman eklemek istiyorum. Sonraki eleman silinmeyecek, sadece araya yeni bir eleman eklenecek. Dizi uzunluğu 100'den 101 olacak gibi. Bunu nasıl yapabilirim? Yardımlarınızı bekliyorum...



  • Nereye ekleyceksen sonraki elemanlari shift etmen gerek. Ornek 30 a ekleyeceksen 30-100 arasini 31-101 e tek tek kopyalayacaksin. Sonra 30 a yeni geleni yazacaksin.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • serser12 S kullanıcısına yanıt
    Mantığı anlıyorum fakat koda dökülmüyor bu mantık. Yine de teşekkürler...
  • seyfi84 S kullanıcısına yanıt
    Anladım, malloc/free vs. gördük ama nasıl kullanılacak burda fikrim dahi yok.
  • seyfi84 S kullanıcısına yanıt
    Yalnız üniversitede bir şeyleri görürsün. Ülkemizdeki üniversiteler -ne yazık ki- bilgiyi sadece gösterirler ama içine girmezler seninle beraber. Öğrenmen için araştırma yaparsın, bulamıyorsan sorarsın. Tıpkı şuanda yaptığım gibi sorarak öğreniyorum. Neyse konuyu saptırmayalım.
  • YACHIRU kullanıcısına yanıt
    Koda niye dökülmüyor anlamadim. Ornek:
    http://www.c4learn.com/c-programs/program-insert-element-in-array.html

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Önce mantığını anlaman lazım. Bir diziyinin eleman sayısını büyültmek ve küçültmek için yeni bir dizi oluşturmak zorundasın.

    C# ile basit bir swap fonksiyonu oluşturdum. Amacı, diziyi baştan sonra yeni diziye atmak. Küçük olursa, yeni boyuta kadar, büyük olursa orjinal boyuta kadar baştan sona atama yapıyor. Basit bir aktarma kodu yazdım ;

     
    public static int[] ScaleUp(int[] arr, int upscale) {
    if(upscale < 0) upscale = 1;
    int[] temp = new int[upscale];
    for (int i = 0; (upscale > arr.Length) ? i < arr.Length : i < upscale; i++) temp[i] = arr[i];
    return temp;
    }


    C'e çevirmek için pointer ile dynamic array 'ı kullanabilirsin ;

    m-alloc yani memory allocation ile bellek boyutu ayarlayabilirsin.
    c-alloc yani contiguous allocation ile calloc(data, newsize) şeklinde yeniden boyutlayabilirsin. sizeof(...) gibi.
    re-alloc yani buda calloc gibi davranır fakat önemli bir farkı var. malloc ile ayırdığın bellek yetmezse bunu kullanarak değiştirebilirsin.
    free yani mutlu son (: Dinamik olarak ayırdığın bellek GC olmadığı için serbest bırakılmıyor. Bu işlemi manuel yapmalısın.
     

    int *data = (int*) malloc(100 * sizeof(int));
    data = (int*) calloc(100, sizeof(int));
    data = realloc(data, 100);
    free(data);




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • seyfi84 S kullanıcısına yanıt
    Sadece bir şeyler saçmalamak için yazmışsın. Aklınca muhalefet olmaya çalışıyorsun. Söylediklerinin de mantığa dayanır bir yanı yok.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.