Pascal 变量不堆叠
Pascal Variable is not stacking
所以我需要在 pascal 中创建一个食品订购系统,我已经完成了这个程序,但是当我订购 2 种或更多类型的食物时,该程序只给我一行食物
program orderfood;
var
choice,ramen,sashimi,nigi,tei:integer;
nramen,nsashimi,nnigi,ntei:integer;
Money:Text;
count:integer;
NigiMoney,RamenMoney,TeiMoney,SashimiMoney,FinalMoney:integer;
TeiName,RamenName,SashimiName,NigiName,i:string;
a:array [1..4] of string;
b:integer;
procedure Menu;
begin
writeln('/===============\');
writeln('|Welcome to the |');
writeln('| Japan House! |');
writeln('| 1. Ramen |');
writeln('| 2. Sashimi |');
writeln('| 3. Nigirizushi|');
writeln('| 4. Teishoku |');
writeln('| 5. Receipt |');
writeln('| 9. Leave |');
writeln('\===============/');
writeln('Please Enter your choice!');
readln(choice);
end;
procedure OrderRamen;
begin
writeln('Choice For Ramen:');
writeln('1.Shoyu Ramen ');
writeln('2.Tonkotsu Ramen ');
writeln('3.Shio Ramen ');
writeln('4.Miso Ramen ');
writeln('5.Tsukemen ');
writeln('6.Instant Ramen Noddles ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(ramen);
case ramen of
1:RamenName:='Shoyu Ramen';
2:RamenName:='Tonkotsu Ramen';
3:RamenName:='Shio Ramen';
4:RamenName:='Miso Ramen';
5:RamenName:='Tsukemen';
6:RamenName:='Instant Ramen Noddles';
end;
if ramen=0
then Menu
else write('How many ramen do you want ? ');
readln(nramen);
if nramen>1 then
case ramen of
1:RamenMoney:=nramen*13;
2:RamenMoney:=nramen*20;
3:RamenMoney:=nramen*18;
4:RamenMoney:=nramen*15;
5:RamenMoney:=nramen*22;
6:RamenMoney:=nramen*22;
end;
if nramen=1 then
case ramen of
1:RamenMoney:=13;
2:RamenMoney:=20;
3:RamenMoney:=18;
4:RamenMoney:=15;
5:RamenMoney:=22;
6:RamenMoney:=22;
end;
end;
procedure OrderSashimi;
begin
writeln('Choice For Sashimi:');
writeln('1.Sake ');
writeln('2.Akami ');
writeln('3.Chutoro ');
writeln('4.Otoro ');
writeln('5.Hotate ');
writeln('6.Ikura ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(sashimi);
case sashimi of
1:SashimiName:='Sake';
2:SashimiName:='Akami';
3:SashimiName:='Chutoro';
4:SashimiName:='Otoro';
5:SashimiName:='Hotate';
6:SashimiName:='Ikura';
end;
if sashimi=0
then Menu
else write('How many sashimi do you want ? ');
readln(nsashimi);
if nsashimi>1 then
case sashimi of
1:SashimiMoney:=nsashimi*13;
2:SashimiMoney:=nsashimi*20;
3:SashimiMoney:=nsashimi*18;
4:SashimiMoney:=nsashimi*15;
5:SashimiMoney:=nsashimi*22;
6:SashimiMoney:=nsashimi*22;
end;
if nsashimi=1 then
case sashimi of
1:SashimiMoney:=13;
2:SashimiMoney:=20;
3:SashimiMoney:=18;
4:SashimiMoney:=15;
5:SashimiMoney:=22;
6:SashimiMoney:=22;
end;
end;
procedure OrderNigirizushi;
begin
nigi:=0;
writeln('Choice For Nigirizushi:');
writeln('1.Tamago ');
writeln('2.Sake ');
writeln('3.Maguro ');
writeln('4.Ebi ');
writeln('5.Ikuro ');
writeln('6.Kani ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(nigi);
case nigi of
1:NigiName:='Tamago';
2:NigiName:='Sake';
3:NigiName:='Maguro';
4:NigiName:='Ebi';
5:NigiName:='Ikuro';
6:NigiName:='Kani';
end;
if nigi=0
then Menu
else write('How many nigirizushi do you want ? ');
readln(nnigi);
if nnigi>1 then
case nigi of
1:NigiMoney:=nnigi*13;
2:NigiMoney:=nnigi*20;
3:NigiMoney:=nnigi*18;
4:NigiMoney:=nnigi*15;
5:NigiMoney:=nnigi*22;
6:NigiMoney:=nnigi*22;
end;
if nnigi=1 then
case nigi of
1:NigiMoney:=13;
2:NigiMoney:=20;
3:NigiMoney:=18;
4:NigiMoney:=15;
5:NigiMoney:=22;
6:NigiMoney:=22;
end;
end;
procedure OrderTeishoku;
begin
writeln('Choice For Teishoku:');
writeln('1.Kara-Age Teishoku ');
writeln('2.Tonkatsu Teishoku ');
writeln('3.Sashimi Teishoku ');
writeln('4.Mix Fry Teishoku ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(tei);
if tei=0
then Menu
else write('How many Teishoku do you want ? ');
readln(ntei);
case tei of
1:TeiName:='Kara-Age Teishoku';
2:TeiName:='Tonkatsu Teishoku';
3:TeiName:='Sashimi Teishoku';
4:TeiName:='Mix Fry Teishoku';
end;
if ntei>1 then
case ntei of
1:TeiMoney:=ntei*13;
2:TeiMoney:=ntei*20;
3:TeiMoney:=ntei*18;
4:TeiMoney:=ntei*15;
5:TeiMoney:=ntei*22;
6:TeiMoney:=ntei*22;
end;
if ntei=1 then
case tei of
1:TeiMoney:=13;
2:TeiMoney:=20;
3:TeiMoney:=18;
4:TeiMoney:=15;
5:TeiMoney:=22;
6:TeiMoney:=22;
end;
end;
procedure StoreMoney1;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,RamenName,' ','*',nramen,' ',RamenMoney);
close(Money);
end;
procedure StoreMoney2;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,NigiName,' ','*',nnigi,' ',NigiMoney);
close(Money);
end;
procedure StoreMoney3;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,TeiName,' ','*',ntei,' ',TeiMoney);
close(Money);
end;
procedure StoreMoney4;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,SashimiName,' ','*',nsashimi,' ',SashimiMoney);
close(Money);
end;
Procedure PrintOut;
begin
b:=1;
reset(Money);
while not EOF(Money) do
begin
readln(Money,i);
a[b]:=i;
writeln(a[b]);
b:=b+1;
end;
close(Money);
end;
begin
repeat
begin
Menu
end;
if choice=1 then
begin
OrderRamen;
StoreMoney1;
end
else if choice=2 then
begin
OrderNigirizushi;
StoreMoney2;
end
else if choice=3 then
begin
OrderTeishoku;
StoreMoney3;
end
else if choice=4 then
begin
OrderSashimi;
StoreMoney4;
end;
until choice=5;
if choice=5 then
begin
PrintOut
end;
if choice=9 then
exit;
end.
结果与输入:
输入 1 1 1 , 2 1 1
结果:2 的细节但没有 1
请帮助!
你的StoreMoney
程序都打开了文本文件进行写入,丢弃了之前写入的内容。您需要找到编译器的 procedure/function,它将打开文本文件以进行追加写入。我见过几种实现此目的的方法,例如 Append(f)
和 Open(f,'a')
,以及面向对象(或伪面向对象)的样式,例如 F.Open('a')
或 F.Append()
.
所以我需要在 pascal 中创建一个食品订购系统,我已经完成了这个程序,但是当我订购 2 种或更多类型的食物时,该程序只给我一行食物
program orderfood;
var
choice,ramen,sashimi,nigi,tei:integer;
nramen,nsashimi,nnigi,ntei:integer;
Money:Text;
count:integer;
NigiMoney,RamenMoney,TeiMoney,SashimiMoney,FinalMoney:integer;
TeiName,RamenName,SashimiName,NigiName,i:string;
a:array [1..4] of string;
b:integer;
procedure Menu;
begin
writeln('/===============\');
writeln('|Welcome to the |');
writeln('| Japan House! |');
writeln('| 1. Ramen |');
writeln('| 2. Sashimi |');
writeln('| 3. Nigirizushi|');
writeln('| 4. Teishoku |');
writeln('| 5. Receipt |');
writeln('| 9. Leave |');
writeln('\===============/');
writeln('Please Enter your choice!');
readln(choice);
end;
procedure OrderRamen;
begin
writeln('Choice For Ramen:');
writeln('1.Shoyu Ramen ');
writeln('2.Tonkotsu Ramen ');
writeln('3.Shio Ramen ');
writeln('4.Miso Ramen ');
writeln('5.Tsukemen ');
writeln('6.Instant Ramen Noddles ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(ramen);
case ramen of
1:RamenName:='Shoyu Ramen';
2:RamenName:='Tonkotsu Ramen';
3:RamenName:='Shio Ramen';
4:RamenName:='Miso Ramen';
5:RamenName:='Tsukemen';
6:RamenName:='Instant Ramen Noddles';
end;
if ramen=0
then Menu
else write('How many ramen do you want ? ');
readln(nramen);
if nramen>1 then
case ramen of
1:RamenMoney:=nramen*13;
2:RamenMoney:=nramen*20;
3:RamenMoney:=nramen*18;
4:RamenMoney:=nramen*15;
5:RamenMoney:=nramen*22;
6:RamenMoney:=nramen*22;
end;
if nramen=1 then
case ramen of
1:RamenMoney:=13;
2:RamenMoney:=20;
3:RamenMoney:=18;
4:RamenMoney:=15;
5:RamenMoney:=22;
6:RamenMoney:=22;
end;
end;
procedure OrderSashimi;
begin
writeln('Choice For Sashimi:');
writeln('1.Sake ');
writeln('2.Akami ');
writeln('3.Chutoro ');
writeln('4.Otoro ');
writeln('5.Hotate ');
writeln('6.Ikura ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(sashimi);
case sashimi of
1:SashimiName:='Sake';
2:SashimiName:='Akami';
3:SashimiName:='Chutoro';
4:SashimiName:='Otoro';
5:SashimiName:='Hotate';
6:SashimiName:='Ikura';
end;
if sashimi=0
then Menu
else write('How many sashimi do you want ? ');
readln(nsashimi);
if nsashimi>1 then
case sashimi of
1:SashimiMoney:=nsashimi*13;
2:SashimiMoney:=nsashimi*20;
3:SashimiMoney:=nsashimi*18;
4:SashimiMoney:=nsashimi*15;
5:SashimiMoney:=nsashimi*22;
6:SashimiMoney:=nsashimi*22;
end;
if nsashimi=1 then
case sashimi of
1:SashimiMoney:=13;
2:SashimiMoney:=20;
3:SashimiMoney:=18;
4:SashimiMoney:=15;
5:SashimiMoney:=22;
6:SashimiMoney:=22;
end;
end;
procedure OrderNigirizushi;
begin
nigi:=0;
writeln('Choice For Nigirizushi:');
writeln('1.Tamago ');
writeln('2.Sake ');
writeln('3.Maguro ');
writeln('4.Ebi ');
writeln('5.Ikuro ');
writeln('6.Kani ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(nigi);
case nigi of
1:NigiName:='Tamago';
2:NigiName:='Sake';
3:NigiName:='Maguro';
4:NigiName:='Ebi';
5:NigiName:='Ikuro';
6:NigiName:='Kani';
end;
if nigi=0
then Menu
else write('How many nigirizushi do you want ? ');
readln(nnigi);
if nnigi>1 then
case nigi of
1:NigiMoney:=nnigi*13;
2:NigiMoney:=nnigi*20;
3:NigiMoney:=nnigi*18;
4:NigiMoney:=nnigi*15;
5:NigiMoney:=nnigi*22;
6:NigiMoney:=nnigi*22;
end;
if nnigi=1 then
case nigi of
1:NigiMoney:=13;
2:NigiMoney:=20;
3:NigiMoney:=18;
4:NigiMoney:=15;
5:NigiMoney:=22;
6:NigiMoney:=22;
end;
end;
procedure OrderTeishoku;
begin
writeln('Choice For Teishoku:');
writeln('1.Kara-Age Teishoku ');
writeln('2.Tonkatsu Teishoku ');
writeln('3.Sashimi Teishoku ');
writeln('4.Mix Fry Teishoku ');
writeln('Previous =0');
writeln('Enter your choice: ');
readln(tei);
if tei=0
then Menu
else write('How many Teishoku do you want ? ');
readln(ntei);
case tei of
1:TeiName:='Kara-Age Teishoku';
2:TeiName:='Tonkatsu Teishoku';
3:TeiName:='Sashimi Teishoku';
4:TeiName:='Mix Fry Teishoku';
end;
if ntei>1 then
case ntei of
1:TeiMoney:=ntei*13;
2:TeiMoney:=ntei*20;
3:TeiMoney:=ntei*18;
4:TeiMoney:=ntei*15;
5:TeiMoney:=ntei*22;
6:TeiMoney:=ntei*22;
end;
if ntei=1 then
case tei of
1:TeiMoney:=13;
2:TeiMoney:=20;
3:TeiMoney:=18;
4:TeiMoney:=15;
5:TeiMoney:=22;
6:TeiMoney:=22;
end;
end;
procedure StoreMoney1;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,RamenName,' ','*',nramen,' ',RamenMoney);
close(Money);
end;
procedure StoreMoney2;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,NigiName,' ','*',nnigi,' ',NigiMoney);
close(Money);
end;
procedure StoreMoney3;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,TeiName,' ','*',ntei,' ',TeiMoney);
close(Money);
end;
procedure StoreMoney4;
begin
Assign(Money,'C:\Users\jason\Desktop\Ho Chung Hin Sba\real
pg\Money.txt');
rewrite(Money);
writeln(Money,SashimiName,' ','*',nsashimi,' ',SashimiMoney);
close(Money);
end;
Procedure PrintOut;
begin
b:=1;
reset(Money);
while not EOF(Money) do
begin
readln(Money,i);
a[b]:=i;
writeln(a[b]);
b:=b+1;
end;
close(Money);
end;
begin
repeat
begin
Menu
end;
if choice=1 then
begin
OrderRamen;
StoreMoney1;
end
else if choice=2 then
begin
OrderNigirizushi;
StoreMoney2;
end
else if choice=3 then
begin
OrderTeishoku;
StoreMoney3;
end
else if choice=4 then
begin
OrderSashimi;
StoreMoney4;
end;
until choice=5;
if choice=5 then
begin
PrintOut
end;
if choice=9 then
exit;
end.
结果与输入: 输入 1 1 1 , 2 1 1 结果:2 的细节但没有 1 请帮助!
你的StoreMoney
程序都打开了文本文件进行写入,丢弃了之前写入的内容。您需要找到编译器的 procedure/function,它将打开文本文件以进行追加写入。我见过几种实现此目的的方法,例如 Append(f)
和 Open(f,'a')
,以及面向对象(或伪面向对象)的样式,例如 F.Open('a')
或 F.Append()
.