lemonade
where dream meets reality
Program Hitung Jumlah IP di Binus (dengan C)
Categories: C

kalo pengen hitung nilai IPS elo di binus berdasarkan nilai akhir dan jumlah sks masing2 mata kuliah.
silahkan dipake aja nih program yg gue bikin.

hitung-ip.c

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

void awal(int *mt);
void masukin_mt(struct data **ini, int *mt);
void print_mt(struct data **ini, int *mt);
char cekgrade(float *grade);
int cekbobot(char *grade);
float getips(struct data **ini, int *mt);

struct data {
char matkul[100];
int id;
struct teori {
int sks;
float nilai;
} t;
struct praktikum {
int sks;
float nilai;
} p;
float nilaiakhir;
char grade;
} buffer;

int main(void) {
int mt=0;
struct data **ini;

awal(&mt);
ini = (struct data **) malloc(mt+1);
masukin_mt(ini, &mt);
print_mt(ini, &mt);
free(ini);
getch();
return 0;
}

void awal(int *mt) {
do {
clrscr();
printf(“Jumlah Mata Kuliah = “);
fflush(stdin);
scanf(“%d”, mt);
} while(mt < 0);
}

void masukin_mt(struct data **ini, int *mt) {
int x;
for(x=0;x<*mt;x++) {
clrscr();
printf(“nntotal matkul = %dnn”, *mt);
if( (ini[x] = (struct data*) malloc(sizeof(buffer))) == NULL){
printf(“n malloc failed n “);
exit(0);
}

printf(“Mata Kuliah ke %dn”, x+1);
ini[x]->id = x+1;
fflush(stdin);
printf(“Nama Mata Kuliah: “);
fgets(ini[x]->matkul,100,stdin);
ini[x]->matkul[strlen(ini[x]->matkul)-1] = ‘’;

printf(“Teori: n”);
printf(” – Jumlah SKS: “);
fflush(stdin);
scanf(“%d”, &ini[x]->t.sks);
printf(” – Jumlah Nilai: “);
fflush(stdin);
scanf(“%f”, &ini[x]->t.nilai);

printf(“Praktikum: n”);
printf(” – Jumlah SKS: “);
fflush(stdin);
scanf(“%d”, &ini[x]->p.sks);
printf(” – Jumlah Nilai: “);
fflush(stdin);
scanf(“%f”, &ini[x]->p.nilai);

}
}

void print_mt(struct data **ini, int *mt) {
int x;
clrscr();
//printf(“printout”);
printf(“nntotal matkul = %dnn”, *mt);

for(x=0;x<*mt;x++) {
printf(“Mata Kuliah ke %dn”, ini[x]->id);
printf(“Nama Mata Kuliah: %sn”, ini[x]->matkul);
printf(“Teori: n”);
printf(” – Jumlah SKS: %dn”, ini[x]->t.sks);
printf(” – Jumlah Nilai: %0.2fn”, ini[x]->t.nilai);
printf(“Praktikum: n”);
printf(” – Jumlah SKS: %dn”, ini[x]->p.sks);
printf(” – Jumlah Nilai: %0.2fn”, ini[x]->p.nilai);
//NilaiAkhir = NilaiT*SksT/(SksT+SksP) + NilaiP*SksP/((SksT+SksP)
ini[x]->nilaiakhir = (float) (ini[x]->t.nilai*ini[x]->t.sks/
(ini[x]->t.sks+ini[x]->p.sks) + ini[x]->p.nilai*
ini[x]->p.sks/(ini[x]->t.sks+ini[x]->p.sks));
printf(“Nilai Akhir: %0.2fn”, ini[x]->nilaiakhir);
ini[x]->grade = cekgrade(&ini[x]->nilaiakhir);
printf(“Grade: %cn”, ini[x]->grade);
printf(“——————————n”);

}
printf(“nnIPS = %0.2fn”, getips(ini,mt));
//IPS = N/(TotalsksT+TotalsksP)
//N = jumatlah dari total [bobotgrade*(sksT+SksP)] masing2 mata kuliah
}

char cekgrade(float *grade) {
if(*grade >=0) {
if(*grade < 50) return ‘E’;
else if(*grade >=50 && *grade < 65)
return  ‘D’;
else if(*grade >=65 && *grade < 75)
return ‘C’;
else if(*grade >=75 && *grade < 85)
return ‘B’;
else if(*grade >=85 && *grade <=100)
return ‘A’;
}
return ‘F’;
}

int cekbobot(char *grade) {
if(*grade == ‘D’) return 1;
else if(*grade == ‘C’) return 2;
else if(*grade == ‘B’) return 3;
else if(*grade == ‘A’) return 4;
else return 0;
}

float getips(struct data **ini, int *mt) {
//printf(” nmt = %dn “, *mt);
int x,TsksT,TsksP;
float tmp;
TsksT=TsksP=tmp=0;
for(x=0;x<*mt;x++) {
tmp = tmp + (cekbobot(&ini[x]->grade))*(ini[x]->t.sks+ini[x]->p.sks);
TsksT = TsksT + ini[x]->t.sks;
TsksP = TsksP + ini[x]->p.sks;
}
//printf(“n %f / %d n”, tmp, TsksT+TsksP);
return (float) (tmp/(TsksT+TsksP));
}

Leave a Reply