23.06
Melek.it
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
Bagian ini merupakan bagian preprocessor program. Berisi perintah include, yang digunakan untuk menyisipkan file library atau program C++. Dalam program ini, yang digunakan adalah library iostream.h, stdlib.h, string.h.
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();
};
Pada bagian ini merupakan pendefinisian dari class mhs, yang berisi Private dan Public Variable.
Pada Private berisi :
- Array “nama” dengan panjang 24 dan bertipe char.
= untuk menyimpan nama dari mahasiswa.
- “jml_mk” dengan tipe data integer.
= untuk menyimpan jumlah mata kuliah yang diambil.
- Array “nilai” dengan panjang 24 dan bertipe integer.
= untuk menyimpan nilai.
- Array “sks” dengan panjang 24 dan bertipe integer.
= untuk menyimpan jumlah sks.
Sedangkan pada Public berisi method-method seperti mhs(),void input_data(),void nama_mhs(char *), int jum_matkul(), int jum_sks(), float ip().
mhs::mhs()
{
int i;
strcpy(nama,"NULL");
jml_mk=0;
for(i=0;i<24;i++)
{
nilai[i]=5;
sks[i]=0;
}
}
Bagian ini merupakan Constructor
void mhs::input_data()
{
int i;
char bf[30];
Array bf bertipe char dengan panjang 30 berfungsi sebagai buffer sementara, untuk selanjutnya diubah ke tipe data lain.
cout << "Nama Mahasiswa = ";
cin.getline(nama,24);
Bagian ini untuk meminta masukkan dari user berupa nama mahasiswa. Penggunaan getline, agar spasi tidak dianggap oleh C++ sebagai enter. Sehingga nama dengan 2 kata atau lebih bisa masuk.
while((jml_mk<1)||(jml_mk>24))
{
cout << "Jumlah mata kuliah = ";
cin.getline(bf,30);
Memasukkan jumlah mata kuliah, ke dalam buffer sementara(bf).
jml_mk=atoi(bf);
Memasukkan isi dari bf ke dalam jml_mk dengan perintah atoi(alphanumeric to integer). Sehingga jika memasukkan karakter akan dianggap sebagai angka 0.
if((jml_mk<1)||(jml_mk>24))
cout << "Masukkan angka 1-24\n\n";
}
Jika masukan salah(lebih dari 24 atau kurang dari 1), dengan asumsi maksimal mahasiswa dapat mengambil maksimal 24 sks dan tiap mata kuliah 1 sks. Maka akan muncul peringatan.
for(i=0;i<jml_mk;i++)
{
while((nilai[i]<0)||(nilai[i]>4)||(strlen(bf)>1))
{
cout << "\nNilai mata kuliah " << (i+1) << " = ";
cin.getline(bf,30);
Memasukkan nilai mata kuliah i+1, ke dalam buffer sementara(bf).
nilai[i]=(int)bf[0];
Memasukkan isi dari bf ke dalam nilai[i] dengan perintah int. Agar nilai yang diinputkan(berupa huruf) diubah ke dalam bentuk kode angka.
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";
}
Kode angka tersebut dikenali sebagai huruf dari A-E / a-e. Jika selain itu maka akan ada peringatan.
while((sks[i]<1)||(sks[i]>4))
{
cout << "Jumlah SKS mata kuliah " << (i+1) << " = ";
cin.getline(bf,30);
Memasukkan jumlah sks mata kuliah i+1, ke dalam buffer sementara(bf).
sks[i]=atoi(bf);
Memasukkan isi dari bf ke dalam jml_mk dengan perintah atoi(alphanumeric to integer). Sehingga jika memasukkan karakter akan dianggap sebagai angka 0.
if((sks[i]<1)||(sks[i]>4))
cout << "Masukkan angka 1-4\n\n";
}
}
}
Jika masukan salah(lebih dari 4 atau kurang dari 1), dengan asumsi sks maksimal tiap mata kuliah adalah 4.. Maka akan muncul peringatan.
void mhs::nama_mhs(char *s)
{
strcpy(s,nama);
}
Method untuk menampilkan nama mahasiswa
int mhs::jum_matkul()
{
return (jml_mk);
}
Method untuk menampilkan jumlah mata kuliah
int mhs::jum_sks()
{
int i,j;
j=0;
for(i=0;i<jml_mk;i++) j+=sks[i];
return(j);
}
Method untuk menghitung jumlah sks. J adalah variable untuk menyimpan jumlah sks. Program akan mengulang dari 0 sampai banyaknya jml_mk. Untuk menjumlah j dengan sks[i].
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);
}
Method untuk menghitung IP berdasarkan input yang telah diterima program.
- j_sks digunakan untuk menyimpan jumlah SKS.
- total digunakan untuk menyimpan jumlah bobot nilai yang sudah dikalikan sks.
Program akan mengulang dari 0 sampai banyaknya jml_mk.
Dan nilai yang ditampilkan (IP))adalah jumlah total di bagi jumlah j_sks.
int main()
{
int i,jum_mhs;
char bf[30],nama[24],user[24];
Pendeklarasian variable yang terdiri dari:
- “i” dengan tipe data integer
- “jum_mhs” dengan tipe data integer
= untuk menampung jumlah mahasiswa
- Array “bf” dengan panjang 30 dan bertipe char.
= untuk menyimpan data sementara dan selanjutnya diubah ke tipe data lain.
- Array “nama” dengan panjang 24 dan bertipe char.
= untuk menyimpan nama dari mahasiswa.
- Array “user” dengan panjang 24 dan tipe data char.
= untuk menyimpan nama dari user program.
mhs node[10];
Membuat objek node berdasarkan class yang sudah ada.
cout << "Masukkan nama user : ";
cin.getline(user,24);
cout << "\nSelamat datang, " << user;
cout << " di Program Menghitung IP mahasiswa\n\n";
Meminta masukkan nama dari user,dan menampilkannya di ucapan selamat datang.
jum_mhs=0;
while((jum_mhs<1)||(jum_mhs>10))
{
cout << "Masukkan Jumlah Mahasiswa yang akan dihitung = ";
cin.getline(bf,30);
Memasukkan jumlah mahasiswa, ke dalam buffer sementara(bf).
jum_mhs=atoi(bf);
Memasukkan isi dari bf ke dalam jml_mhs dengan perintah atoi(alphanumeric to integer). Sehingga jika memasukkan karakter akan dianggap sebagai angka 0.
if((jum_mhs<1)||(jum_mhs>10))
cout << "Masukkan angka 1-10\n\n";
}
Jika masukan salah(lebih dari 10 atau kurang dari 1),maka akan muncul peringatan.
for(i=0;i<jum_mhs;i++)
{
cout << "\nDATA MAHASISWA " << (i+1) << endl;
node[i].input_data();
}
Program akan mengulang dari 0 sampai banyaknya jum_mhs, yaitu memanggil method input_data.
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);
}
Menampilkan hasil-hasil perhitungan dan data-data dalam bentuk tabel
0 komentar:
Posting Komentar