Anda di halaman 1dari 29

Struct dan File

Viny Christanti M.
tanggalan
struct tanggalan
{
int tahun;
int bulan;
int tanggal;
};
pegawai
struct pegawai
{
int nip;
char nama [25];
tanggalan tanggal_lahir;
} rec_peg;
//* ----------------------------------------------------------- *
//* struk1.cpp *
//* Contoh deklarasi, definisi dan akses struct *
//* ----------------------------------------------------------- *

#include <iostream>
using namespace std;

void main( )
{
struct tanggalan // deklarasi struct tanggalan
{
int tahun;
int bulan;
int tanggal;
};
tanggalan tanggal_lahir; //definisi variabel tanggal_lahir

//Mengakses member dari struct


cout <<”Ketikkan tanggal: “;
cin>>tanggal_lahir.tanggal;
cout <<”Ketikkan bulan: “;
cin>>tanggal_lahir.bulan;
cout <<”Ketikkan tahun: “;
cin>>tanggal_lahir.tahun;
cout <<endl;
cout <<”Tanggal : “ << tanggal_lahir.tanggal << “ / “;
cout <<tanggal_lahir.bulan << “ / “ << tanggal_lahir.tahun <<endl;
}
//* ----------------------------------------------------------- *
//* struk2.cpp *
//* Contoh untuk melewatkan struct ke fungsi *
//* ----------------------------------------------------------- *
#include <iostream>
using namespace std;

struct persegipanjang; //deklarasi struct persegipanjang


{
int panjang;
int lebar;
int luas;
};

int kali(int, int); //deklarasi fungsi kali

void main( )
{
persegipanjang pp; //deklarasi variabel pp
cout <<”Ketikkan panjang : “;
cin >> pp.panjang;
cout <<”Ketikkan lebar : “;
cin >> pp.lebar;
pp.luas = kali(pp.panjang, pp.lebar) // panggil fungsi kali
cout << endl;
cout << “Panjang = “ <<pp.panjang;
cout << endl;
cout << “Lebar = “ <<pp.lebar;
cout << endl;
cout << “Maka luasnya = “ <<pp.luas;

int kali(int x, int y) //definisi fungsi kali


{
int Z = x * y;
return (Z);
}
//* ----------------------------------------------------------- *
//*struk2a.cpp *
//*Contoh untuk melewatkan struct ke fungsi *
//* ----------------------------------------------------------- *
#include <iostream>
using namespace std;

struct persegipanjang; //deklarasi struct persegipanjang


{
int panjang;
int lebar;
int luas;
};

int kali(int, int); //deklarasi fungsi kali


void cetak(persegipanjang) //deklarasi fungsi cetak
void main( )
{
persegipanjang pp; //deklarasi variabel pp
cout <<”Ketikkan panjang : “;
cin >> pp.panjang;
cout <<”Ketikkan lebar : “;
cin >> pp.lebar;
pp.luas = kali(pp.panjang, pp.lebar) // panggil fungsi kali
cout << endl;
cetak(pp); // panggil fungsi cetak
system (“pause”);
}

int kali(int x, int y) //definisi fungsi kali


{
int Z = x * y;
return (Z);
}
void cetak(persegipanjang p) //definisi fungsi cetak
{
cout << “Diketahui dimensi persegi panjang: “<<endl;
cout << “Panjang = “ <<p.panjang;
cout << endl;
cout << “Lebar = “ <<p.lebar;
cout << endl;
cout << “Maka luasnya = “ <<p.luas;
}
struct nilai
{
float uas,uts,tugas;
int bobot;
char huruf;
};

struct mahasiswa
{
char namamhs[20];
char nim[9];
nilai hasil;
};
mahasiswa data_mhs[10];
Nilai = 50% uas + 30% uts + 20% tugas
Dan huruf ditentukan oleh nilai sesuai tabel berikut:
Nilai Huruf
-------------------------------------------
>= 80 A
70 <= Nilai < 80 B
56 <= Nilai < 70 C
45 <= Nilai < 56 D
< 45 E

Data yang diinput adalah nama mahasiswa, nim, nilai uas, nilai uts dan nilai tugas.

No. NIM Nama mahasiswa Nilai Huruf


//Program laporan.cpp
#include<iostream>
#include<iomanip>
using namespace std;

struct nilai
{
float uas,uts,tugas;
int bobot;
char huruf;
};

struct mahasiswa
{
char namamhs[20];
char nim[9];
nilai hasil;
};

mahasiswa mhs[100];
void garis()
{
for(int i=0;i<72;i++)
{
cout<<'-';
}
cout<<'\n';
}
void main()
{
int n;
char matakuliah[20];
cout<<"Masukan nama matakuliah : "; cin >>matakuliah;
cout<<"Masukkan jumlah mahasiswa = "; cin>>n;

for (int i=0; i<n; i++)


{
cout<<"Nama Mahasiswa ke-"<<i+1<<" :";
cin>>mhs[i].namamhs;
cout<<"Nim Mahasiswa ke-"<<i+1<<" :";
cin>>mhs[i].nim;
cout<<"Nilai UAS Matakuliah Mahasiswa ke-"<<i+1<<" :";
cin>>mhs[i].hasil.uas;
cout<<"Nilai UTS Matakuliah Mahasiswa ke-"<<i+1<<" :";
cin>>mhs[i].hasil.uts;
cout<<"Nilai Tugas Matakuliah Mahasiswa ke-"<<i+1<<" :";
cin>>mhs[i].hasil.tugas;

mhs[i].hasil.bobot = 0.5*mhs[i].hasil.uas+0.3*mhs[i].hasil.uts+
0.2*mhs[i].hasil.tugas;

if (mhs[i].hasil.bobot >= 80) mhs[i].hasil.huruf = 'A';


else if (mhs[i].hasil.bobot >= 70) mhs[i].hasil.huruf = 'B';
else if (mhs[i].hasil.bobot >= 56) mhs[i].hasil.huruf = 'C';
else if (mhs[i].hasil.bobot >= 46) mhs[i].hasil.huruf = 'D';
else mhs[i].hasil.huruf = 'E';
}
cout <<"Daftar Nilai mata kuliah : "<<matakuliah<<endl;
garis();
cout<<setiosflags(ios::left);
cout<<setw(5)<<"No."<<setw(20)<<"Nim"<<setw(10)<<"Nama";
cout<<setiosflags(ios::right);
cout<<setw(10)<<"Nilai"<<setw(10)<<"Huruf"<<endl;
garis();
for (i=0;i<n;i++)
{
cout<<setiosflags(ios::left);
cout<<setw(5)<<i+1<<setw(20)<<mhs[i].nim<<setw(10)<<mhs[i].namamhs;
cout<<setiosflags(ios::right);
cout<<setw(10)<<mhs[i].hasil.bobot<<setw(10)<<mhs[i].hasil.huruf<<"\n";
}
garis();

}
NEXT WEEK
Latihan
• Modifikasikan program di atas sehingga dapat
digunakan untuk menampilkan data dalam
bentuk tabel berikut. Struct mahasiswa terdiri
dari member nama, npm dan struct nilai.
Struct nilai terdiri dari member tugas, uts, uas
dan akhir. Untuk mendapatkan nilai akhir
digunakan rumus berikut:
• Akhir = 20%*tugas + 35%*UTS + 45%*UAS
• Di akhir tabel, hitung nilai rata-rata dari
seluruh mahasiswa
Nama Matakuliah:

No. NIM Nama Nilai

Nilai rata-rata :
Latihan
• Sebuah perpustakaan menyimpan data buku
dalam bentuk struct yang terdiri dari member,
nomor buku, judul buku, nama pengarang,
dan status. Status hanya terdiri dari dua
kondisi yaitu “ada” dan “dipinjam”. Buatlah
program untuk membuat laporan dalam
bentuk tabel, semua buku yang ada dan
semua buku yang dipinjam
Latihan
• Sebuah toko bahan makanan menyimpan data
barangnya dalam bentuk struct yang terdiri
dari member nomor barang, nama barang,
harga barang, dan jumlah. Jika jumlah kurang
dari 50 maka pemilik toko harus segera
memesan barang tersebut. Buatlah program
untuk membuat laporan yang berisi daftar
barang yang harus dipesan dan daftar barang
yang tidak perlu dipesan (laporan dibuat
dalam bentuk tabel)
File
int main()
{
ofstream data(“tulis.txt”);
data<<“Namaku billy”<<endl;
data<<“Umurku 10 tahun”<<endl;
data<<“Hobiku makan”<<endl;
data.close();
}
write
int main()
{
char nama[10];
cout<<”Input nama”;
cin.get(nama,sizeof(nama));
ofstream data(“tulis2.txt”);
data.write((char *)&nama,sizeof(nama));
data.close();
}
ios::app
int main()
{
ofstream data(“tulis.txt”,ios::app);
data<<“Rumahku di bogor”<<endl;
data<<“Adikku suka bermain bola”<<endl;
data<<“Kucingku putih warnanya”<<endl;
data.close();
}
Baca file
int main()
{
char nama[10];
ifstream data;
data.open(“tulis.txt”);
while(data)
{
data.getline(nama,sizeof(nama));
cout<<nama<<endl;
}
data.close();
}
read
void main()
{
char nama[10];
ifstream data(“tulis1.txt”);
while(data)
{
data.read((char*)&nama,sizeof(nama));
cout<<nama<<endl;
}
data.close();
getch();
}
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;

void main()
{
struct
{
char nama[15];
long honor;
}gaji_honorer[] = {{"Daniel",200000},
{"Rina",900000},
{"Mahmud",120000},
{"Hamid",25000}
};

ofstream gaji("gaji.txt");
gaji<<setiosflags(ios::left)<<setw(12)
<<"Nama"<<"Gaji"<<endl;
for(int i=0;i<4;i++)
gaji<<setiosflags(ios::left)<<setw(12)
<<gaji_honorer[i].nama
<<resetiosflags(ios::left)
<<setiosflags(ios::right)<<setw(6)
<<gaji_honorer[i].honor<<endl;
gaji.close();
system("pause");
}
• Tambahkan perintah untuk menyimpan ke file
pada program laporan.cpp

Anda mungkin juga menyukai