#include <stdio.h>
#include <string.h>
#define MAX 50
typedef struct StructMahasiswa {
char nama[MAX];
char grade;
float nilaiTugas, nilaiUTS, nilaiUAS, nilaiAkhir;
} StructMahasiswa;
void input(StructMahasiswa *mahasiswa, int *jumlahMahasiswa);
void hitung(StructMahasiswa *mahasiswa, int *jumlahMahasiswa);
void tampil(StructMahasiswa *mahasiswa, int *jumlahMahasiswa);
int main() {
StructMahasiswa mahasiswa[MAX];
int jumlahMahasiswa;
input(&mahasiswa[0], &jumlahMahasiswa);
hitung(&mahasiswa[0], &jumlahMahasiswa);
tampil(&mahasiswa[0], &jumlahMahasiswa);
}
void input(StructMahasiswa *mahasiswa, int *jumlahMahasiswa) {
puts("MENGHITUNG NILAI AKHIR");
puts("MATA KULIAH KONSEP PEMROGAMAN");
printf("Berapa jumlah mahasiswa ? ");
scanf("%d", jumlahMahasiswa);
fflush(stdin);
for (int i = 0; i < *jumlahMahasiswa; i++) {
printf("Mahasiswa ke-%d\n", i+1);
printf("Nama\t: ");
gets((mahasiswa + i)->nama);
fflush(stdin);
printf("Nilai tugas\t: ");
scanf("%f", &(mahasiswa + i)->nilaiTugas);
fflush(stdin);
printf("Nilai uts\t: ");
scanf("%f", &(mahasiswa + i)->nilaiUTS);
fflush(stdin);
printf("Nilai uas\t: ");
scanf("%f", &(mahasiswa + i)->nilaiUAS);
fflush(stdin);
puts("");
}
}
void hitung(StructMahasiswa *mahasiswa, int *jumlahMahasiswa) {
for (int i = 0; i < *jumlahMahasiswa; i++){
(mahasiswa + i)->nilaiAkhir = 0.2 * (mahasiswa + i)->nilaiTugas + 0.4 * (mahasiswa + i)->nilaiUTS + 0.4 * (mahasiswa + i)->nilaiUAS;
if ((mahasiswa + i)->nilaiAkhir >= 80)
(mahasiswa + i)->grade = 'A';
else if ((mahasiswa + i)->nilaiAkhir >= 70 && (mahasiswa + i)->nilaiAkhir < 80)
(mahasiswa + i)->grade = 'B';
else if ((mahasiswa + i)->nilaiAkhir >= 60 && (mahasiswa + i)->nilaiAkhir < 70)
(mahasiswa + i)->grade = 'C';
else if ((mahasiswa + i)->nilaiAkhir >= 50 && (mahasiswa + i)->nilaiAkhir < 60)
(mahasiswa + i)->grade = 'D';
else
(mahasiswa + i)->grade = 'E';
}
}
void tampil(StructMahasiswa *mahasiswa, int *jumlahMahasiswa) {
StructMahasiswa mahasiswaTerbaik = { "", 'A', 0, 0, 0, 0 };
int i, jumlahSpasi = 0;
for (i = 0; i < *jumlahMahasiswa; i++) {
int spasi = 0;
for (int j = 0; j < strlen((mahasiswa + i)->nama); j++) {
if ((mahasiswa + i)->nama[j] == ' ')
spasi++;
}
if (spasi > jumlahSpasi)
jumlahSpasi = spasi;
}
puts("\t\t\t\tDAFTAR NILAI");
puts("\t\t\tMATAKULIAH KONSEP PEMROGAMAN");
puts("----------------------------------------------------------------------------------");
printf("NO\tNama\t");
for (i = 0; i < jumlahSpasi; i++)
printf("\t");
printf("Tugas\tUTS\tUAS\tAkhir\tGrade\n");
puts("----------------------------------------------------------------------------------");
for (i = 0; i < *jumlahMahasiswa; i++) {
printf("%d\t%s", i + 1, (mahasiswa + i)->nama);
int jumlahSpasiNamaMahasiswa = 0;
for (int j = 0; j < strlen((mahasiswa + i)->nama); j++) {
if ((mahasiswa + i)->nama[j] == ' ')
jumlahSpasiNamaMahasiswa++;
}
jumlahSpasiNamaMahasiswa = jumlahSpasi - jumlahSpasiNamaMahasiswa;
for (int j = 0; j <= jumlahSpasiNamaMahasiswa; j++) {
printf("\t");
}
printf("%g\t%g\t%g\t%g\t%c\n", (mahasiswa + i)->nilaiTugas, (mahasiswa + i)->nilaiUTS, (mahasiswa + i)->nilaiUAS, (mahasiswa + i)->nilaiAkhir, (mahasiswa + i)->grade);
if ((mahasiswa + i)->nilaiAkhir > mahasiswaTerbaik.nilaiAkhir)
mahasiswaTerbaik = *(mahasiswa + i);
}
puts("----------------------------------------------------------------------------------");
printf("\nTotal mahasiswa = %d\n", *jumlahMahasiswa);
puts("\nNilai tertinggi");
printf("Nama\t: %s\n", mahasiswaTerbaik.nama);
printf("Nilai\t: %.2f\n", mahasiswaTerbaik.nilaiAkhir);
}
To embed this project on your website, copy the following code and paste it into your website's HTML: