Özet: Dinamik Dizi
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 37 / 63.
Görev
KolayKullanıcı girdisine göre dinamik bir dizi oluşturan, verileri işleyen ve doğru bellek yönetimini gösteren bir C programı yaz. Programın şunları yapması gerekir:
- Saklanacak eleman sayısını belirten bir tamsayı
ndeğerini kullanıcıdan oku ntamsayıdan oluşan bir dizi için belleği dinamik olarak ayırmak üzeresizeof()ile birliktemalloc()kullan- Bellek ayırmanın başarılı olup olmadığını kontrol et; başarısız olursa
Memory allocation failed!yazdır ve programı sonlandır - Ayırma başarılı olursa
Array of size [n] created successfully!yazdır - Kullanıcıdan
ntamsayı değer oku ve ayrılan dizide sakla - Tüm elemanların toplamını hesapla ve şu biçimde yazdır:
Sum: [value] - En küçük değeri bul ve şu biçimde yazdır:
Minimum: [value] - Ortalamanın üzerindeki eleman sayısını hesapla ve şu biçimde yazdır:
Elements above average: [count] - Kullanılan toplam belleği bayt cinsinden şu biçimde yazdır:
Memory used: [bytes] bytes - Belleği serbest bırakmak için
free()kullan - Doğru temizleme yapıldığını onaylamak için
Memory successfully freed!yazdır
malloc() ve free() kullanmak için <stdlib.h> başlık dosyasını eklemeyi unutma. Bu alıştırma, ayırmadan kullanıma ve doğru temizlemeye kadar dinamik bellek yönetimi konusundaki kapsamlı anlayışını sınar.
Örneğin, girdi şu şekildeyse:
5
12 8 15 3 20Çıktın şu şekilde olmalıdır:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 3
Memory used: 20 bytes
Memory successfully freed!Bu kapsamlı alıştırma, ayrılan dizi üzerinde anlamlı veri işleme işlemleri gerçekleştirirken dinamik bellek yönetiminin tüm yaşam döngüsünü gösterir.
Kendin dene
#include <stdio.h>
#include <stdlib.h>
int main() {
// Eleman sayısını oku
int n;
scanf("%d", &n);
// TODO: Kodunu aşağıya yaz
// 1. malloc() kullanarak n tam sayı için bellek ayır
// 2. Bellek ayırma işleminin başarılı olup olmadığını kontrol et
// 3. n tam sayıyı diziye oku
// 4. Toplamı hesapla, en küçük değeri bul, ortalamanın üzerindeki elemanları say
// 5. Sonuçları yazdır ve belleği serbest bırak
return 0;
}Mantık & Akış bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String FonksiyonlarıKendi başına pratik yap: Online C derleyicisi