PROGRAM approvedapplicants(input,output);
uses crt;
var
applcntname,housingcomm,clarendon_court,providence_gardens,
sangre_grande_villas:string;
slry,spcslry:integer;
c_qual_sal,s_qual_sal,p_qual_sal,qualifying_salary:integer;
BEGIN
writeln('enter applicant name, salary, spouce salary');
readln(applcntname,slry,spcslry);
writeln('enter housing community');
readln(housingcomm);
BEGIN
qualifying_salary:=0;
IF(housingcomm=clarendon_court)
then
qualifying_salary:=$12500;
writeln('you have selected clarendon court!');
readln(c_qual_sal) ;
end if ;
else if(housingcomm=sangre_grande_villas)then
qualifying_salary:=$9500;
writeln('you have selected sangre grande villas!');
readln(s_qual_sal);
end if ;
else(housingcomm=providence_gardens)then;
qualifying_salary:=$7500;
writeln('you have selected providence gardens!');
readln(p_qual_sal);
end if;
END.
答案 0 :(得分:4)
通常,在SO上,我们不会发布家庭作业/课程作业的答案,但是你的代码是如此广泛,我认为在这种情况下可以做出例外。
尝试编译并运行这个程序,我认为这几乎与我认为你想要的一样,然后我会解释一些关于它的事情:
program approvedapplicants(input,output);
uses crt;
var
ApplicantName,
HousingCommunity,
ClarendonCourt,
ProvidenceGardens,
SangreGrandVillas :string;
Salary,
SpouseSalary,
QualifyingSalary : Integer;
CQualSal,
PQualSal,
SQualSal : Integer;
slry,spcslry:integer;
begin
ClarendonCourt := 'Clarendon Court';
ProvidenceGardens := 'Providence Gardens';
SangreGrandVillas := 'Sangre Grand Villas';
QualifyingSalary := 0;
writeln('enter applicant name');
readln(ApplicantName);
writeln('enter salary');
readln(Salary);
writeln('enter spouse salary');
readln(SpouseSalary);
writeln('enter housing community');
readln(HousingCommunity);
if (HousingCommunity = ClarendonCourt) then begin
QualifyingSalary := $12500;
writeln('you have selected clarendon court!');
readln(CQualSal);
end
else
if(HousingCommunity = SangreGrandVillas)then begin
QualifyingSalary := $9500;
writeln('you have selected sangre grande villas!');
readln(SQualSal);
end
else
if HousingCommunity = ProvidenceGardens then begin
QualifyingSalary :=$7500;
writeln('you have selected providence gardens!');
readln(CQualSal);
end;
end.
首先,请注意阅读和遵循其逻辑更容易。这主要是 因为
使用反映逻辑的布局(包括缩进块) 代码结构。
对program
,begin
,end
等关键字使用一致的小写字母。
关键字通常是源代码中最不感兴趣的内容,它会分散注意力
让他们向你展示。
避免从变量名中任意删除字符(例如" i" 第二个" a" "申请人"。在解释代码在慢速机器上运行的时代 可以说是一些理由,但不是更多的imo。同样,避免 变量名称中的下划线 - 不可否认,这更多是个人偏好,但是 除了申请人的名字之外,为什么你到处都使用它们?
其次,你还有很多工作要做。
为工资(?)编号提供3个不同的变量,您会提示用户
对于3个社区中的每个社区,除非你愿意,否则可能是一个坏主意
随后想要同时处理所有3个数字。此外,您还没有提供文本提示来告诉用户要为readln(c_qual_sal)
etc语句输入哪些信息。对我来说,你想要的是什么并不明显,所以我没有试过猜测。
您回应用户选择社区的方式只是为您创建维护 头疼(如果你想在以后添加更多社区怎么办?)。会更好 有一个变量,你设置为任何一个社区名称匹配 用户输入的内容。
您要为每个社区执行3个语句,这些语句是重复的 每个社区。你实际需要的唯一一个是QualifyingSalary - 无论输入的社区如何,其他人都可以执行。