Senin, 13 Juni 2011

syntak UAS daskomprog

#include<iostream.h>
#include<stdlib.h>
#include<string.h>


//--------- Awal dari Class mhs ---------//

//Declarasi class mhs
class mhs
{
    private:
    char nama[24];
    int jml_mk,nilai[24],sks[24];

    public:
    mhs();
    void input_data();
    void nama_mhs(char *);
    int jum_matkul();
    int jum_sks();
    float ip();
};

//Constructor
mhs::mhs()
{
    int i;
    strcpy(nama,"NULL");
    jml_mk=0;
    for(i=0;i<24;i++)
    {
        nilai[i]=5;
        sks[i]=0;
    }
}

//Method untuk memasukkan data ke dalam class
void mhs::input_data()
{
    int i;
    char bf[30];

    //Masukkan nama mahasiswa
    cout << "Nama Mahasiswa = ";
    cin.getline(nama,24);

    //Masukkan jumlah mata kuliah
    while((jml_mk<1)||(jml_mk>24))
    {
        cout << "Jumlah mata kuliah = ";
        cin.getline(bf,30);
        jml_mk=atoi(bf);
        if((jml_mk<1)||(jml_mk>24))
            cout << "Masukkan angka 1-24\n\n";
    }

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

    //Masukkan nilai untuk masing-masing mata kuliah
        while((nilai[i]<0)||(nilai[i]>4)||(strlen(bf)>1))
        {
            cout << "\nNilai mata kuliah " << (i+1) << " = ";
            cin.getline(bf,30);
            nilai[i]=(int)bf[0];
            if(nilai[i]<70) nilai[i]=69-nilai[i];
                else nilai[i]=101-nilai[i];
            if((nilai[i]<0)||(nilai[i]>4)||(strlen(bf)>1))
            cout << "Masukkan huruf A-E atau a-e\n";
        }

        //Masukkan jumlah sks untuk masing-masing mata kuliah
        while((sks[i]<1)||(sks[i]>4))
        {
            cout << "Jumlah SKS mata kuliah " << (i+1) << " = ";
            cin.getline(bf,30);
            sks[i]=atoi(bf);
            if((sks[i]<1)||(sks[i]>4))
                cout << "Masukkan angka 1-4\n\n";
        }

    }
}

//Method untuk menampilkan nama
void mhs::nama_mhs(char *s)
{
    strcpy(s,nama);
}

//Method untuk menampilkan jumlah mata kuliah
int mhs::jum_matkul()
{
    return (jml_mk);
}

//Method untuk menghitung jumlah sks
int mhs::jum_sks()
{
    int i,j;
    j=0;
    for(i=0;i<jml_mk;i++) j+=sks[i];
    return(j);
}

//Method untuk menghitung ip
float mhs::ip()
{
    int i,j_sks,total;
    j_sks=0;
    total=0;
    for(i=0;i<jml_mk;i++)
    {
        j_sks+=sks[i];
        total+=(nilai[i]*sks[i]);
    }
    return ((float)total/j_sks);
}

//--------- Akhir dari Class mhs ---------//


//Program utama

int main()
{

    //Local Variable
    int i,jum_mhs;
    char bf[30],nama[24],user[24];
    mhs node[10];

    //Meminta user untuk memasukkan namanya
    cout << "Masukkan nama user : ";
    cin.getline(user,24);
    cout << "\nSelamat datang, " << user;
    cout << " di Program Menghitung IP mahasiswa\n\n";

    //Meminta user untuk memasukkan jumlah mahasiswa
    jum_mhs=0;
    while((jum_mhs<1)||(jum_mhs>10))
    {
        cout << "Masukkan Jumlah Mahasiswa yang akan dihitung = ";
        cin.getline(bf,30);
        jum_mhs=atoi(bf);
        if((jum_mhs<1)||(jum_mhs>10))
            cout << "Masukkan angka 1-10\n\n";
    }

    //Meminta user untuk memasukkan data masing-masing mahasiswa
    for(i=0;i<jum_mhs;i++)
    {
        cout << "\nDATA MAHASISWA " << (i+1) << endl;
        node[i].input_data();
    }

    //Menampilkan Hasil
    cout << endl << endl;
    cout << "|--------------------------|-------------|---------|----------|" << endl;
    cout << "|     Nama Mahasiswa       |   Jumlah    | Jumlah  |    IP    |" << endl;
    cout << "|                          | Mata Kuliah |   SKS   |          |" << endl;
    cout << "|--------------------------|-------------|---------|----------|" << endl;

    for(i=0;i<jum_mhs;i++)
    {
        cout.setf(ios::left|ios::showpoint);
        node[i].nama_mhs(nama);
        cout << "| ";
        cout.width(25);
        cout << nama;
        cout << "|      ";
        cout.width(7);
        cout << node[i].jum_matkul();
        cout << "|    ";
        cout.width(5);
        cout << node[i].jum_sks();
        cout << "|   ";
        cout.width(6);
        cout.precision(3);
        cout << node[i].ip();
        cout << " |\n";
     }

     cout << "|--------------------------|-------------|---------|----------|" << endl;

     cout << endl;
     return (0);
}