You are on page 1of 5

/*

Nama File: kuliah.c

Programmer: Antu

Mengelola nilai satu mata kuliah untuk sejumlah mahasiswa

*/

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

//konstanta

#define N 3

#define MID 0.25

#define UAS 0.30

#define TGS 0.45

//defini tipe struct

typedef struct mahasiswa{

char nama[30];

char nim[5];

double ipk;

} MHS;

typedef struct makul{

char namaMK[30];

char kodeMK[5];

int sks;

} MAKUL;

typedef struct nilai{

double mid;

double uas;
double tugas;

double akhir;

char huruf;

} NILAI;

typedef struct lhs{

MHS mhs;

MAKUL makul;

NILAI nilai;

} LHS;

main(){

//deklarasi varibel

LHS lhs[N];

int i;

char tempNamaMK[50], tempKodeMK[10];

int sksnya;

//tampilkan judul program

printf("PROGRAM PENGELOLAAN KULIAH\n");

printf("Programmer: Majid\n");

printf("================================\n");

//baca identitas mata kuliah

printf("Entri identitas mata kuliah\n");

printf("Ketikkan nama mata kuliah : ");

gets(tempNamaMK); fflush(stdin);

printf("Ketikkan kode mata kuliah : ");

gets(tempKodeMK); fflush(stdin);

printf("Ketikkan besar SKS mata kuliah: ");

scanf("%d", &sksnya); fflush(stdin);

for(i=0;i<N;++i){
strcpy(lhs[i].makul.namaMK, tempNamaMK);

strcpy(lhs[i].makul.kodeMK, tempKodeMK);

lhs[i].makul.sks = sksnya;

printf("-----------------------------------------\n");

//baca identitas N mahasiswa

printf("Entri Identitas Mahasiswa\n");

for(i=0;i<N;++i){

printf("Ketikkan nama mahasiswam ke-%d: ", i+1);

gets(lhs[i].mhs.nama); fflush(stdin);

printf("Ketikkan NIM mahasiswa : ");

gets(lhs[i].mhs.nim); fflush(stdin);

printf("-----------------------------------------\n");

//baca nilai2

printf("Entri Nilai-nilai\n");

for(i=0;i<N;++i){

printf("Nama: %s\tNIM %s\n",lhs[i].mhs.nama, lhs[i].mhs.nim);

printf("Ketikkan nilai MID, UAS dan TUGAS, pisahkan dgn spasi: ");

scanf("%lf%lf%lf", &lhs[i].nilai.mid, &lhs[i].nilai.uas, &lhs[i].nilai.tugas) ;

printf("-----------------------------------------\n");

//hitung nilai akhir

for(i=0;i<N;++i){

lhs[i].nilai.akhir = lhs[i].nilai.mid * MID + lhs[i].nilai.uas * UAS + lhs[i].nilai.tugas *


TGS;

//konversikan nilai akhir ke nilai huruf

for(i=0;i<N;++i){

if(lhs[i].nilai.akhir > 80.0 && lhs[i].nilai.akhir <= 100.0)

lhs[i].nilai.huruf = 'A';
else if(lhs[i].nilai.akhir > 70.0 && lhs[i].nilai.akhir <= 80.0)

lhs[i].nilai.huruf = 'B';

//dst

else lhs[i].nilai.huruf = 'E';

//menghitung ipk

for(i=0;i<N;++i){

switch(lhs[i].nilai.huruf){

case 'A': lhs[i].mhs.ipk = 4.0; break;

case 'B': lhs[i].mhs.ipk = 3.0; break;

//dst

case 'E': lhs[i].mhs.ipk = 0.0; break;

//tampilkan informasi

printf("INFORMASI NILAI MAHASISWA\n");

printf("=====================================================\n");

printf("Mata Kuliah: %s\t KODE: %s\t %d SKS\n");

printf("=================================================================\n");

printf("No. Nama NIM MID UAS TUGAS N AKHIR N HURUF IPK\n");

printf("=================================================================\n");

for(i=0;i<N;i++){

printf("%2d.", i+1);

printf("%-20s\t", lhs[i].mhs.nama);

printf("%4s\t", lhs[i].mhs.nim);

printf("%0.1lf\t", lhs[i].nilai.mid);

printf("%0.1lf\t", lhs[i].nilai.uas);

printf("%0.1lf\t", lhs[i].nilai.tugas);

printf("%0.1lf\t", lhs[i].nilai.akhir);

printf("%c\t", lhs[i].nilai.huruf);

printf("%0.1lf\n", lhs[i].mhs.ipk);
printf("--------------------------------------------------------------------\n");

You might also like