Menu
Coddy logo textTech

Özet: Yapıyı Değiştirme - Ptr

Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 49 / 63.

challenge icon

Görev

Kolay

Dinamik bellek ayırma, struct işaretçileri ve fonksiyonları kullanarak eksiksiz bir çalışan yönetim sistemi gösteren bir C programı oluştur. Programın şunları yapması gerekir:

  1. Aşağıdaki üyelere sahip struct adlı bir Employee tanımla:
    • Çalışan kimliğini saklamak için bir tamsayı id
    • Çalışanın adını saklamak için boyutu 50 olan bir karakter dizisi name
    • Departman adını saklamak için boyutu 30 olan bir karakter dizisi department
    • Çalışanın maaşını saklamak için bir kayan noktalı sayı salary
    • Hizmet yılını saklamak için bir tamsayı yearsOfService
  2. Şunları yapan fillEmployeeData adlı bir fonksiyon yaz:
    • Parametre olarak bir Employee struct işaretçisi alır
    • Çalışan bilgilerini şu sırayla girdiden okur: kimlik, ad, departman, maaş, hizmet yılı
    • Değerleri ok operatörünü kullanarak struct üyelerine atar
    • Hizmet yılına göre prim hesaplar: yıl >= 5 ise prim maaşın %10'u, aksi takdirde maaşın %5'idir
    • Primi maaşa ekler: empPtr->salary += bonus;
  3. Şunları yapan displayEmployee adlı bir fonksiyon yaz:
    • Parametre olarak bir Employee struct işaretçisi alır
    • Çalışan bilgilerini tam olarak şu biçimde yazdırır:
      • Employee Details:
      • ID: [id]
      • Name: [name]
      • Department: [department]
      • Salary: [salary]
      • Years of Service: [yearsOfService]
  4. Şunları yapan promoteEmployee adlı bir fonksiyon yaz:
    • Parametre olarak bir Employee struct işaretçisi alır
    • Ok operatörünü kullanarak maaşı %15 artırır
    • Hizmet yılını 1 artırır
    • Employee promoted successfully! yazdırır
  5. main fonksiyonunda:
    • Employee adlı bir empPtr struct işaretçisi tanımla
    • Bir malloc() struct için dinamik olarak bellek ayırmak üzere Employee kullan
    • Bellek ayırma işleminin başarılı olup olmadığını kontrol et:
      • empPtr değeri NULL ise Memory allocation failed yazdır ve programdan çık
      • Başarılı olursa Memory allocated successfully yazdır
    • Çalışan verilerini doldurmak için fillEmployeeData fonksiyonunu çağır
    • Initial employee data: yazdır
    • Başlangıç çalışan bilgilerini göstermek için displayEmployee fonksiyonunu çağır
    • Çalışanı terfi ettirmek için promoteEmployee fonksiyonunu çağır
    • After promotion: yazdır
    • Güncellenmiş bilgileri göstermek için displayEmployee fonksiyonunu tekrar çağır
    • free(empPtr) kullanarak dinamik olarak ayrılmış belleği serbest bırak
    • Memory freed successfully yazdır

Bu alıştırma, bölümdeki tüm temel kavramları bir araya getirir: struct tanımlama, malloc() ile dinamik bellek ayırma, bellek ayırma hatasını kontrol etme, struct işaretçilerini fonksiyonlara aktarma, struct üyelerine erişmek ve bunları değiştirmek için ok operatörünü kullanma ve free() ile belleği doğru şekilde temizleme. Fonksiyonlar, işaretçilerin özgün struct verilerinin doğrudan değiştirilmesine nasıl olanak tanıdığını gösterir.

Kendin dene

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// TODO: Employee yapısını burada tanımlayın

// TODO: fillEmployeeData fonksiyonunu burada uygulayın

// TODO: displayEmployee fonksiyonunu burada uygulayın

// TODO: promoteEmployee fonksiyonunu burada uygulayın

int main() {
    // TODO: empPtr'yi bildirin ve bellek ayırın
    
    // TODO: Bellek ayırma işleminin başarılı olup olmadığını kontrol edin
    
    // TODO: Çalışan verilerini doldurun, ilk verileri görüntüleyin, terfi ettirin ve terfi sonrası verileri görüntüleyin
    
    // TODO: Belleği serbest bırakın ve başarı mesajını yazdırın
    
    return 0;
}

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi