Menu
Coddy logo textTech

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

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 49 / 63.

challenge icon

Görev

Kolay

Dinamik bellek tahsisi, struct işaretçileri ve fonksiyonları kullanarak eksiksiz bir çalışan yönetim sistemini gösteren bir C programı oluşturun. Programınız şunları yapmalıdır:

  1. Aşağıdaki üyelere sahip Employee adında bir struct tanımlayın:
    • Çalışan kimliğini saklamak için bir tam sayı id
    • Çalışan adını saklamak için 50 boyutunda bir karakter dizisi name
    • Departman adını saklamak için 30 boyutunda bir karakter dizisi department
    • Çalışan maaşını saklamak için bir float salary
    • Hizmet yılını saklamak için bir tam sayı yearsOfService
  2. Şu işlevleri yerine getiren fillEmployeeData adında bir fonksiyon yazın:
    • Parametre olarak bir Employee struct işaretçisi alır
    • Girişten şu sırayla çalışan bilgilerini okur: ID, ad, departman, maaş, hizmet yılı
    • Ok ok operatörünü kullanarak değerleri struct üyelerine atar
    • Hizmet yılına göre bir bonus hesaplar: eğer years >= 5 ise bonus maaşın %10'u, aksi takdirde %5'idir
    • Bonusu maaşa ekler: empPtr->salary += bonus;
  3. Şu işlevleri yerine getiren displayEmployee adında bir fonksiyon yazın:
    • Parametre olarak bir Employee struct işaretçisi alır
    • Çalışan bilgilerini tam olarak şu formatta yazdırır:
      • Employee Details:
      • ID: [id]
      • Name: [name]
      • Department: [department]
      • Salary: [salary]
      • Years of Service: [yearsOfService]
  4. Şu işlevleri yerine getiren promoteEmployee adında bir fonksiyon yazın:
    • 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 fonksiyonu içinde:
    • empPtr adında bir Employee struct işaretçisi tanımlayın
    • Bir Employee struct'ı için dinamik olarak bellek ayırmak üzere malloc() kullanın
    • Bellek tahsisinin başarılı olup olmadığını kontrol edin:
      • Eğer empPtr değeri NULL ise, Memory allocation failed yazdırın ve programdan çıkın
      • Başarılıysa, Memory allocated successfully yazdırın
    • Çalışan verilerini doldurmak için fillEmployeeData fonksiyonunu çağırın
    • Initial employee data: yazdırın
    • Başlangıç çalışan bilgilerini göstermek için displayEmployee fonksiyonunu çağırın
    • Çalışanı terfi ettirmek için promoteEmployee fonksiyonunu çağırın
    • After promotion: yazdırın
    • Güncellenmiş bilgileri göstermek için displayEmployee fonksiyonunu tekrar çağırın
    • free(empPtr) kullanarak dinamik olarak ayrılan belleği serbest bırakın
    • Memory freed successfully yazdırın

Bu meydan okuma, bölümdeki tüm temel kavramları birleştirir: struct tanımlama, malloc() ile dinamik bellek tahsisi, tahsis hatasını kontrol etme, struct işaretçilerini fonksiyonlara geçirme, struct üyelerine erişmek ve bunları değiştirmek için ok operatörünü kullanma ve free() ile uygun bellek temizliği. Fonksiyonlar, işaretçilerin orijinal struct verilerinin doğrudan değiştirilmesine nasıl izin verdiğini 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;
}

Logic & Flow bölümündeki tüm dersler