Menu
CoddyTech

Ulasan: Memodifikasi Struct dengan Pointer

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 49 dari 63.

challenge icon

Tantangan

Mudah

Buat program C yang menunjukkan sistem manajemen karyawan lengkap menggunakan alokasi memori dinamis, pointer struct, dan fungsi. Programmu harus:

  1. Definisikan struct bernama Employee dengan anggota berikut:
    • Integer id untuk menyimpan ID karyawan
    • Array karakter name berukuran 50 untuk menyimpan nama karyawan
    • Array karakter department berukuran 30 untuk menyimpan nama departemen
    • Float salary untuk menyimpan gaji karyawan
    • Integer yearsOfService untuk menyimpan masa kerja
  2. Tulis fungsi bernama fillEmployeeData yang:
    • Menerima pointer ke struct Employee sebagai parameter
    • Membaca informasi karyawan dari input dengan urutan berikut: ID, nama, departemen, gaji, masa kerja
    • Menetapkan nilai ke anggota struct menggunakan operator panah
    • Menghitung bonus berdasarkan masa kerja: jika years >= 5, bonus sebesar 10% dari gaji, jika tidak, sebesar 5% dari gaji
    • Menambahkan bonus ke gaji: empPtr->salary += bonus;
  3. Tulis fungsi bernama displayEmployee yang:
    • Menerima pointer ke struct Employee sebagai parameter
    • Mencetak informasi karyawan dengan format persis berikut:
      • Employee Details:
      • ID: [id]
      • Name: [name]
      • Department: [department]
      • Salary: [salary]
      • Years of Service: [yearsOfService]
  4. Tulis fungsi bernama promoteEmployee yang:
    • Menerima pointer ke struct Employee sebagai parameter
    • Menaikkan gaji sebesar 15% menggunakan operator panah
    • Menambah masa kerja sebanyak 1
    • Mencetak Employee promoted successfully!
  5. Di fungsi main:
    • Deklarasikan pointer ke struct Employee bernama empPtr
    • Gunakan malloc() untuk mengalokasikan memori secara dinamis untuk satu struct Employee
    • Periksa apakah alokasi memori berhasil:
      • Jika empPtr adalah NULL, cetak Memory allocation failed lalu keluar dari program
      • Jika berhasil, cetak Memory allocated successfully
    • Panggil fillEmployeeData untuk mengisi data karyawan
    • Cetak Initial employee data:
    • Panggil displayEmployee untuk menampilkan informasi awal karyawan
    • Panggil promoteEmployee untuk mempromosikan karyawan
    • Cetak After promotion:
    • Panggil kembali displayEmployee untuk menampilkan informasi terbaru
    • Bebaskan memori yang dialokasikan secara dinamis menggunakan free(empPtr)
    • Cetak Memory freed successfully

Tantangan ini menggabungkan semua konsep utama dari bab ini: mendefinisikan struct, alokasi memori dinamis dengan malloc(), memeriksa kegagalan alokasi, meneruskan pointer struct ke fungsi, menggunakan operator panah untuk mengakses dan mengubah anggota struct, serta membersihkan memori dengan benar menggunakan free(). Fungsi-fungsi ini menunjukkan cara pointer memungkinkan perubahan langsung pada data struct asli.

Coba sendiri

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

// TODO: Definisikan struct Employee di sini

// TODO: Implementasikan fungsi fillEmployeeData di sini

// TODO: Implementasikan fungsi displayEmployee di sini

// TODO: Implementasikan fungsi promoteEmployee di sini

int main() {
    // TODO: Deklarasikan empPtr dan alokasikan memori
    
    // TODO: Periksa apakah alokasi memori berhasil
    
    // TODO: Isi data karyawan, tampilkan data awal, promosikan karyawan, lalu tampilkan data setelah promosi
    
    // TODO: Bebaskan memori dan cetak pesan keberhasilan
    
    return 0;
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online