在此程序中,我想从列表(记录)中找到年龄最大的人。我确实试图切换语法,但这无济于事。有人可以建议我一些吗?(免费Pascal)错误:';'预期,但找到了其他]
这是一个从文件中读取带有名称和出生日期的记录的程序。我试图排除开始和结束,但没有成功。
Procedure Virsta;
Var v1,v2,v3:integer;
Begin
v1:=LP[1].DataNasterii.Anul;
v2:=LP[1].DataNasterii.Luna;
v3:=LP[1].DataNasterii.Ziua;
for i:=1 to n do
Begin
if LP[i].DataNasterii.Anul=v1 then
if LP[i].DataNasterii.Luna=v2 then
if LP[i].DataNasterii.Ziua=v3 then
Begin
writeln('Atentie! Avem mai multe persoane cu aceeasi data');
break;
End;
else if LP[i].DataNasterii.Luna<v2 then
Begin
v1:=LP[i].DataNasterii.Anul;
v2:=LP[i].DataNasterii.Luna;
v3:=LP[i].DataNasterii.Ziua;
End
else if LP[i].DataNasterii.Anul<v1 then
Begin
v1:=LP[i].DataNasterii.Anul;
v2:=LP[i].DataNasterii.Luna;
v3:=LP[i].DataNasterii.Ziua;
End;
End;
我希望输出一个字符串(人的名字)。
很难跟您的代码相依,如果声明,这是程序正确格式的一种解释:
Procedure Virsta;
Var
v1,v2,v3:integer;
Begin
v1:=LP[1].DataNasterii.Anul;
v2:=LP[1].DataNasterii.Luna;
v3:=LP[1].DataNasterii.Ziua;
for i:=1 to n do
Begin
if LP[i].DataNasterii.Anul=v1 then
if LP[i].DataNasterii.Luna=v2 then
if LP[i].DataNasterii.Ziua=v3 then
Begin
writeln('Atentie! Avem mai multe persoane cu aceeasi data');
break;
End
else
if LP[i].DataNasterii.Luna<v2 then
Begin
v1:=LP[i].DataNasterii.Anul;
v2:=LP[i].DataNasterii.Luna;
v3:=LP[i].DataNasterii.Ziua;
End
else
if LP[i].DataNasterii.Anul<v1 then
Begin
v1:=LP[i].DataNasterii.Anul;
v2:=LP[i].DataNasterii.Luna;
v3:=LP[i].DataNasterii.Ziua;
End;
End;
您可以通过缩进来了解如何正确遵循程序的逻辑。
请注意,上面是您对其进行编程的方式,但与此完全不同:
Procedure Virsta;
Var
v1,v2,v3:integer;
Begin
v1:=LP[1].DataNasterii.Anul;
v2:=LP[1].DataNasterii.Luna;
v3:=LP[1].DataNasterii.Ziua;
for i:=1 to n do
Begin
if LP[i].DataNasterii.Anul=v1 then
Begin
if LP[i].DataNasterii.Luna=v2 then
Begin
if LP[i].DataNasterii.Ziua=v3 then
Begin
writeln('Atentie! Avem mai multe persoane cu aceeasi data');
break;
End;
End
else
Begin
if LP[i].DataNasterii.Luna<v2 then
Begin
v1:=LP[i].DataNasterii.Anul;
v2:=LP[i].DataNasterii.Luna;
v3:=LP[i].DataNasterii.Ziua;
End;
End;
End
else
Begin
if LP[i].DataNasterii.Anul<v1 then
Begin
v1:=LP[i].DataNasterii.Anul;
v2:=LP[i].DataNasterii.Luna;
v3:=LP[i].DataNasterii.Ziua;
End;
End;
End;
您可以通过这些示例看到正确格式化代码的重要性。您会看到else语句始终直接位于else语句的if语句之下。额外的开始和结尾可以很清楚地表明else属于哪个if语句。您真的不能将else与嵌套的if语句一起使用,除非您按照我所示的方式用begin和end定义它们。