#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) {
    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);
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: