-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathF6.pas
More file actions
110 lines (97 loc) · 2.95 KB
/
F6.pas
File metadata and controls
110 lines (97 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// Nama File: F6.pas
// Deskripsi File: Unit prosedur olah bahan untuk program utama Engi's Kitchen
// Tanggal terakhir diubah: 22/04/2018
unit F6;
interface
uses uDef,sysutils,F1;//untuk ngambil data
{ Deklarasi Fungsi/Prosedur }
procedure olahbahan(olah:Abahanolahan;var olahb,mentah:Ainventori;var c : Asimulasi; var NInvBO, NInvBM, NomorSim,aksi,NBahanO: Integer);
{Prosedur akan mengolah bahan yang ingin dibuat jika sudah benar}
{I.S menerima masukan berupa string yang akan di cek kevalidannya}
{F.S mengambil bahan dan mengubah isi inventori serta mengubah data simulasi}
implementation
{ Implementasi Fungsi/Prosedur }
procedure olahbahan(olah:Abahanolahan;var olahb,mentah:Ainventori;var c : Asimulasi; var NInvBO, NInvBM, NomorSim,aksi,NBahanO: Integer);
{Prosedur akan mengolah bahan yang ingin dibuat jika sudah benar}
{I.S menerima masukan berupa string yang akan di cek kevalidannya}
{F.S mengambil bahan dan mengubah isi inventori serta mengubah data simulasi}
{KAMUS}
var
nama:string;
i,j,count,k:longint;
ketemu:boolean;
{ALGORITMA}
begin
repeat//validasi
i:=1;
write('Nama bahan yang ingin dibuat: ' );
readln(nama);{asumsi nama bahan terdapat dalam file}
ketemu:=False;
while((ketemu = False) and (i<=NBahanO)) do
begin
if (LowerCase(nama)=LowerCase(olah[i].nama)) then
begin
ketemu:=True;
end else
begin
i:=i+1;
end;
end;
if (ketemu=False) then writeln('Nama tidak terdaftar');
until (ketemu =True);
count:=0;//untuk bahan yang mencukupi
for j:=1 to olah[i].n do
begin
ketemu:=False;//var untuk nyari
k:=1;
while((ketemu=False)and(k<=NInvBM)) do
begin
if((olah[i].bahan[j]=mentah[k].nama) and (mentah[k].jumlah>0)) then
begin
ketemu:=True;
count:=count+1;
end;
k:=k+1;
end;
end;
if((count=olah[i].n)and(c[NomorSim].tEnergi>0)) then
begin
for j:=1 to olah[i].n do
begin
ketemu:=False;//var untuk nyari
k:=1;
while((ketemu=False)and(k<= NInvBM)) do
begin
if((olah[i].bahan[j]=mentah[k].nama) and (mentah[k].jumlah>0)) then
begin
ketemu:=True;
mentah[k].jumlah:=mentah[k].jumlah-1;//ngurangi jumlah bahan mentah di inventori
end;
k:=k+1;
end;
end;
c[NomorSim].tEnergi:=c[NomorSim].tEnergi-1;
c[NomorSim].tBOlahanDibuat:=c[NomorSim].tBOlahanDibuat+1;
aksi:=aksi+1;
ketemu:=False;
k:=1;
while((ketemu=False)and(k<= NInvBO)) do
begin
if((LowerCase(nama) = LowerCase(olahb[k].nama)) and (c[NomorSim].tanggal= olahb[k].tanggal)) then
begin
olahb[k].jumlah :=olahb[k].jumlah+1;
ketemu:=True;
end;
k:=k+1;
end;
if (ketemu = false) then
begin
olahb[k].nama:=nama;
olahb[k].tanggal:=c[NomorSim].tanggal;
olahb[k].jumlah:=1;
NInvBO:=NInvBO+1;
end;
writeln('Berhasil dibuat');
end else writeln('Gagal dibuat');
end;
end.