Anda di halaman 1dari 8

Tugas Personal ke-2 (Minggu 7 /

Sesi 11)

1. Buatlah ringkasan pemahaman anda mengenai perbedaan Struct dan Union serta berikan contoh
penerapannya.

Jawaban :

Struct
Struct adalah tipe data yang digunakan untuk menyimpan lebih dari satu nilai. Tidak seperti array
yang mengakses nilai di dalamnya berdasarkan indeks, struct mengakses nilai-nilai yang disimpan
dalam variabel berdasarkan nama yang dimiliki anggotanya.

struct nama_struct{
tipe_data anggota_ke_1;
tipe_data anggota_ke_2;
//.... tipe_data anggota_ke_n;
}nama_variabel;

Union
Selain menggunakan array dan struct, kalian bisa menggunakan union untuk mengelompokkan
sekumpulan variabel. Union adalah kumpulan data yang anggotanya disimpan di dalam memori yang
sama dan saling mempengaruhi satu sama lain.

union nama_union{
tipe_data anggota_ke_1;
tipe_data anggota_ke_2;
//....
tipe_data anggota_ke_n;
}nama_variabel;

2. Buatlah program untuk menghitung nilai akhir mahasiswa, adapun aturannya adalah
a. Buatlah tampilaan menu sebagai berikut:
Menu 1 untuk Input data mahasiswa.
Menu 2 untuk Input nilai.
Menu 3 untuk melihat nilai mahasiswa dan status
Menu 4 keluar dari program

b. Jika pengguna memilih Menu 1


Input data mahasiswa antara lain: nim, nama dan mata kuliah

Catatan: Validasikan jika mahasiswa yang dimasukkan sudah pernah diinput sebelumnya.

c. Jika pengguna memilih menu 2 Input data


nilai antara lain:
1) Nilai Hadir
2) Nilai Tugas
3) Nilai Quiz
4) Nilai Keaktifan Forum
5) Nilai UAS

d. Jika Pengguna memilih Menu 3.


Pengguna meng-input nim mahasiswa maka akan tampil hasil kalkulasi dari penjumlahan dan status

COMP6599 – Algorithm and Programming


grade yang didapat.

Catatan

Rumus perhitungan: Nilai Hadir 10% +Nilai Tugas 20% + Nilai Quiz 10% + Nilai keaktifan forum 10%
dan Nilai UAS 50%.

Status grade
Grade A = 100 – 90 (Lulus)
Grade B = 89 – 80 (Lulus)
Grade C = 79 – 70 (Lulus)
Grade D = 69 – 60 (Lulus)
Grade E = 59 – 50 (Tidak Lulus)

Jawaban :

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
struct penilaian
{
float hadir;
float tugas;
float quiz;
float keaktifan;
float uas;
};
int main(void)
{
struct penilaian nilai;
// float tugas,quiz,keaktifan,uas;
char ceknim[20];
char ceknama[40];
char cekmatkul[40];
char pil[5];
bool exit = false;
bool cek1 = false;
bool cek2 = false;
int pilihan;
do
{
printf("============================\n");
printf("SISTEM PENILAIAN MATA KULIAH\n");
printf("\n");
printf("Pilihan Menu: \n");
printf("1. Input Data Mahasiswa \n");
printf("2. Input Nilai \n");
printf("3. Lihat Nilai dan Status \n");
printf("4. Exit \n");
printf("Pilihan Anda: ");
scanf("%d", &pilihan);
if (pilihan == 1)
{
char nim[20];
char nama[40];
char matkul[40];

COMP6599 – Algorithm and Programming


char pill[5];
int cek_nama, cek_nim, cek_pil;
printf("== Menu Input Data==\n");
printf("Masukan Nim Anda: ");
scanf("%s", nim);
printf("Masukan Nama Anda: ");
gets(nama);
gets(nama);
printf("Masukan Mata Kuliah: ");
gets(matkul);
cek_nama = strcmp(ceknama, nama);
cek_nim = strcmp(ceknim, nim);
if (cek_nama == 0 || cek_nim == 0)
{
strcpy(pil, "Y");
printf("Nim atau Nama yang Anda masukan Sudah Dipakai\n");
printf("Apakah Anda ingin menggantinya? (Y/T) ");
gets(pill);
cek_pil = strcmp(pil, pill);
if (cek_pil == 0)
{
strcpy(ceknim, nim);
strcpy(ceknama, nama);
strcpy(cekmatkul, matkul);
printf("Data Sudah Terupdate\n");
}
else
{
printf("Data Tetap Pada Identitas Awal\n");
}
}
else
{
strcpy(ceknim, nim);
strcpy(ceknama, nama);
strcpy(cekmatkul, matkul);
}
cek2 = true;
printf(" \n");
printf(" \n");
}
else if (pilihan == 2)
{
if (cek2 != true)
{
printf("== Menu Input Nilai==\n");
printf( "Belum Ada Identitas Yang Dimasukan. Silahkan Inputkan data terlebih dahulu pada menu 1\n")
;
}
else
{
printf("== Menu Input Nilai==\n");
printf("Masukkan Nilai Hadir : ");
scanf("%f", &(nilai.hadir));
printf("Masukkan Nilai Tugas : ");
COMP6599 – Algorithm and Programming
scanf("%f", &(nilai.tugas));
printf("Masukkan Nilai Quiz : ");
scanf("%f", &(nilai.quiz));
printf("Masukkan Nilai Keaktifan Forum : ");
scanf("%f", &(nilai.keaktifan));
printf("Masukkan Nilai UAS : ");
scanf("%f", &(nilai.uas));
cek1 = true;
printf("Nilai Sudah Diinputkan\n");
};
printf(" \n");
printf(" \n");
}
else if (pilihan == 3)
{
float nilaiakhir;
char status1[5] = "Lulus";
char status2[12] = "Tidak Lulus";
if (cek1 != true)
{
printf("== Menu Info Nilai==\n");
printf("Belum Ada Nilai Yang Dimasukan. Silahkan Input nilai terlebih dahulu pada menu 2 \n");
}
else
{
printf("== Menu Info Nilai==\n");
printf("Nim : %s", ceknim);
printf("\nNama : %s", ceknama);
printf("\nMata Kuliah : %s", cekmatkul);
nilaiakhir = nilai.hadir * 0.10 + nilai.tugas * 0.20 + nilai.quiz * 0.10 + nilai.kea
ktifan * 0.10 + nilai.uas * 0.50;
if (nilaiakhir >= 90 && nilaiakhir <= 100)
{
char grade = 'A';
printf("\nNilai Akhir : %.2f", nilaiakhir);
printf("\nGrade : %c", grade);
printf("\nStatus : %s", status1);
}
else if (nilaiakhir >= 80 && nilaiakhir <= 89)
{
char grade = 'B';
printf("\nNilai Akhir : %.2f", nilaiakhir);
printf("\nGrade : %c", grade);
printf("\nStatus : %s", status1);
}
else if (nilaiakhir >= 70 && nilaiakhir <= 79)
{
char grade = 'C';
printf("\nNilai Akhir : %.2f", nilaiakhir);
printf("\nGrade : %c", grade);
printf("\nStatus : %s", status1);
}
else if (nilaiakhir >= 60 && nilaiakhir <= 69)
{
char grade = 'D';
COMP6599 – Algorithm and Programming
printf("\nNilai Akhir : %.2f", nilaiakhir);
printf("\nGrade : %c", grade);
printf("\nStatus : %s", status1);
}
else if (nilaiakhir >= 50 && nilaiakhir <= 59)
{
char grade = 'E';
printf("\nNilai Akhir : %.2f", nilaiakhir);
printf("\nGrade : %c", grade);
printf("\nStatus : %s", status2);
}
else
{
printf("\nTidak Ada Grade (Nilai Terlalu Rendah)");
}
}
printf(" \n");
printf(" \n");
}
else if (pilihan == 4)
{
exit = true;
}
else
{
printf("Key Yang Anda Masukan Salah, Silahkan Input Kembali\n");
}
} while (exit != true);
return 0;
}

COMP6599 – Algorithm and Programming


COMP6599 – Algorithm and Programming
COMP6599 – Algorithm and Programming
COMP6599 – Algorithm and Programming

Anda mungkin juga menyukai