-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathF8.pas
More file actions
104 lines (96 loc) · 3.26 KB
/
F8.pas
File metadata and controls
104 lines (96 loc) · 3.26 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
// Nama File: F8.pas
// Deskripsi File: Unit prosedur jual resep untuk program utama Engi's Kitchen
// Tanggal terakhir diubah: 22/04/2018
unit F8;
interface
uses uDef,F1,sysutils;//untuk ngambil data
{ Deklarasi Fungsi/Prosedur }
procedure jualresep (resep:Aresep; var c:Asimulasi;var mentah,olah:Ainventori; var NInvBM, NInvBO, NomorSim,aksi: Integer);
{Prosedur akan memvalidasi resep yang diterima,dan memroses data mengubah data simulasi dan inventori}
{I.S menerima masukan berupa string,yang merupakan resep yang akan dijual}
{F.S menambah penghasilan,membuat barang dengan mengurangi dari inventori bahannya}
implementation
{ Implementasi Fungsi/Prosedur }
procedure jualresep (resep:Aresep; var c:Asimulasi;var mentah,olah:Ainventori; var NInvBM, NInvBO, NomorSim,aksi: Integer);
{Prosedur akan memvalidasi resep yang diterima,dan memroses data mengubah data simulasi dan inventori}
{I.S menerima masukan berupa string,yang merupakan resep yang akan dijual}
{F.S menambah penghasilan,membuat barang dengan mengurangi dari inventori bahannya}
{KAMUS}
var
nama:string;
i,j,count,k:longint;
ketemu:boolean;
{ALGORITMA}
begin
repeat//validasi
i:=1;
write('Nama resep 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(resep[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);
i:=1;
while (LowerCase(resep[i].nama) <>LowerCase(nama)) do//mencari dimana bahan resepan yang ingin dibuat pada kamus
begin
i:=i+1;
end;
count:=0;//untuk bahan yang mencukupi
for j:=1 to resep[i].n do
begin
ketemu:=False;//var untuk nyari
k:=1;
while((ketemu=False)and((k<=NInvBM)or(k<=NInvBO))) do
begin
if((k<=NInvBM)and(resep[i].bahan[j]=mentah[k].nama) and (mentah[k].jumlah>0)) then
begin
ketemu:=True;
count:=count+1;
end;
if((k<=NInvBO)and(resep[i].bahan[j]=olah[k].nama) and (olah[k].jumlah>0)) then
begin
ketemu:=True;
count:=count+1;
end;
k:=k+1;
end;
end;
if((count=resep[i].n)and(c[NomorSim].tEnergi>0)) then
begin
for j:=1 to resep[i].n do
begin
ketemu:=False;//var untuk nyari
k:=1;
while((ketemu=False)and((k<=NInvBM)or(k<=NInvBO))) do
begin
if((k<=NInvBM)and (resep[i].bahan[j]=mentah[k].nama) and (mentah[k].jumlah>0)) then//hapus mentah
begin
ketemu:=True;
mentah[k].jumlah:=mentah[k].jumlah-1;//ngurangi jumlah bahan mentah di inventori
end;
if((k<=NInvBO) and(resep[i].bahan[j]=olah[k].nama) and (olah[k].jumlah>0)) then//hapus olah
begin
ketemu:=True;
olah[k].jumlah:=olah[k].jumlah-1;//ngurangi jumlah bahan mentah di inventori
end;
k:=k+1;
end;
c[NomorSim].tEnergi:=c[NomorSim].tEnergi-1;
c[NomorSim].tResepDijual:=c[NomorSim].tResepDijual+1;
c[NomorSim].tPemasukan:=c[NomorSim].tPemasukan+resep[i].harga;
c[NomorSim].tUang:=c[NomorSim].tUang+resep[i].harga;
aksi:=aksi+1;
end;
writeln('Dapat dibuat');
end else writeln('Tidak bisa dibuat');
end;
end.