Celoteh Ania

Setitik Ilmu yang Aku Peroleh

Archive for the ‘C/C++’


UAP PBO saya

Setelah kemaren Belajar UAP, neh sekarang saya kasih code UAP saya..
Seperti biasa C++ based. Harus di atas 95 nih..


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

constream o;

class kendaraan{
protected:
int jarak, kecepatan;
float waktu;
public:
kendaraan(){
jarak = kecepatan = 0;
waktu = 0;
}
void set_jarak(int a){ jarak = a; }
int get_jarak(){ return jarak; }
void set_kecepatan(int a){ kecepatan = a; }
int get_kecepatan(){ return kecepatan; }
float get_waktu();
~kendaraan(){}
};

float kendaraan::get_waktu(){
waktu =(float) jarak/kecepatan + jarak/100*0.1;
return waktu;
}

class mobil : public kendaraan{
int jenis;
long total;
public:
mobil(){
jenis = random(3);
total = 0;
}
long get_total();
char *get_jenis();
~mobil(){}
};

char *mobil::get_jenis(){
char *str = "                     ";
switch(jenis){
case 0:
strcpy(str, "Premium");
break;
case 1:
strcpy(str, "Pertamax");
break;
case 2:
strcpy(str, "Pertamax Plus");
break;
}
return str;
}

long mobil::get_total(){
switch(jenis){
case 0:
total = jarak/10 * 5000;
break;
case 1:
total = jarak/10 * 6000;
break;
case 2:
total = jarak/10 * 7000;
break;
}
return total;
}

char menu(){
o << "Menu Pilihan\n";
o << "1. Kendaraan\n";
o << "2. Mobil\n";
o << "3. Keluar";
return (char) getch();
}

void kend(){
kendaraan obj;
int jrk=0, kec=0;
o << "Kendaraan : \n";
do{
o << "Masukkan jarak tempuh [10..1000] : ";
cin >> jrk;
cin.sync(); cin.clear();
}while(jrk&lt;10 || jrk>1000);
obj.set_jarak(jrk);
do{
o << "Masukkan kecepatan [1..100] : ";
cin >> kec;
cin.sync(); cin.clear();
}while(kec<1 || kec>100);
obj.set_kecepatan(kec);
o < < "Waktu : " << obj.get_waktu() << " jam";
getch();
}

void mobi(){
mobil anak[3];
int jrk=0, kec=0;
for(int i=0; i&lt;3; ++i){
o << "Mobil ke-" << (i+1) << endl;
do{
o << "Masukkan jarak tempuh [10..1000] : ";
cin >> jrk;
cin.sync(); cin.clear();
}while(jrk<10 || jrk>1000);
anak[i].set_jarak(jrk);
do{
o < < "Masukkan kecepatan [1..100] : ";
cin >> kec;
cin.sync(); cin.clear();
}while(kec<1 || kec>100);
anak[i].set_kecepatan(kec);
o << "Waktu : " << anak[i].get_waktu() << " jam\n";
o << "Jenis : " << anak[i].get_jenis() << " menghabiskan Rp. " << anak[i].get_total() << "\n\n";
}
getch();
}

void main(){
randomize();

char tekan = '0';
tekan;

do{
o.clrscr();
tekan =(char) menu();
switch(tekan){
case '1':
o.clrscr();
kend();
break;
case '2':
o.clrscr();
mobi();
break;
}
}while(tekan != '3');
}

Belajar UAP PBO

Nih buat yang males belajar buat UAP PBO, saya kasih cara bikin inheritance + array of class.
Klo mau dihapal silahkan, tapi sesuain dengan soal ya. Intinya InsyaAllah udah memenuhi kriteria untuk soal09D dari LAB.

Ga tau nih di Binus masih pake C++ aja buat pembelajaran PBO (OOP). Padahal bahasa yang lebih Object-Oriented kan ada beberapa. Sebut aja python, smalltalk, dan yang menurut gw paling keren… Ruby!!!
Loh kok jadi curhat gini, dah ah langsung aja, nih:


#include <constrea .h>
constream o;

//bikin class induk, inget data member jadiin protected
class induk{
protected:
char kata[16];
public:
void set_isi(char *isi){
strcpy(kata, isi);
}
char *get_isi(){
return kata;
}
int jum_vokal();
};

//ngitung jumlah vokal
int induk::jum_vokal(){
char vokal[] = "aiueoAIUEO";
int count=0;
for(int i=0; i<strlen(kata); i++){
if(strchr(vokal, kata[i]))
count++;
}
return count;
}

//bikin class anak turunan induk dgn atribut public
class anak : public induk {
public:
//rotate a char to left
void movel();
//rotate a char to right
void mover();
};

void anak::movel(){
char temp[17];
int i;
for(i=1; i<strlen(kata); i++){
temp[i-1] = kata[i];
}
temp[i-1] = kata[0];
temp[i] = 0;
strcpy(kata, temp);
}

void anak::mover(){
char temp[17];
int i;
for(i=1; i<strlen(kata); i++){
temp[i] = kata[i-1];
}
temp[0] = kata[i-1];
temp[i] = 0;
strcpy(kata, temp);
}

void main(){
//array of object dgn static allocation
induk mak;
anak k[2];
o.clrscr();

o << "Ini induk : ";
mak.set_isi("kiye mbok objek k[]");
o << "Jumlah vokal : " << mak.jum_vokal() << "\n\n";

o << "Ini anak pertama : " << endl;
k[0].set_isi("mbuh bae lah");
o << "Jumlah vokal : " << k[0].jum_vokal() << endl;
k[0].movel();
o << "Geser kanan : " << k[0].get_isi() << "\n\n";

o << "Ini anak kedua : ";
k[1].set_isi("mbuh maning bae");
o << "Jumlah vokal : " << k[1].jum_vokal() << endl;
k[1].mover();
o << "Geser ke kanan : " << k[1].get_isi();

getch();
}