Delphi控制台应用程序中的平均数
我重新编写了代码,其外观如下:Delphi控制台应用程序中的平均数,delphi,Delphi,我重新编写了代码,其外观如下: {$APPTYPE CONSOLE} type vector = array[1..100] of integer; var a:vector; var i,n:integer; var br:integer; var sum,average:real; begin write('Enter number elements of the array: '); readln(n); for i:=1 to n do begin
{$APPTYPE CONSOLE}
type vector = array[1..100] of integer;
var a:vector;
var i,n:integer;
var br:integer;
var sum,average:real;
begin
write('Enter number elements of the array: '); readln(n);
for i:=1 to n do
begin
write('Enter ' ,i, ' element: '); readln(a[i]);
end;
br:=0;
sum:=0;
for i:=1 to n do
if not(odd(a[i])) and (odd(i)) then
sum:=sum+a[i];
br:=br+1;
average:=sum/br;
writeln('average= ',average:5:3);
readln;
end.
但是当我启动我的程序时,它只找到和,计数器(br)不工作,只计算和。根据我的代码,你现在能帮我吗 需要放入
开始
和结束
,因此br
正确递增:
if not(odd(a[i])) and (odd(i)) then
Begin
sum:=sum+a[i];
br:=br+1;
End;
average:=sum/br;
试试这个:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TVector = array of integer;
var
a: TVector;
i, n: integer;
ElSum, Elements: integer;
begin
write('Enter number of elements: ');
readln(n);
SetLength(a, n);
for i := 1 to n do
begin
write('Enter ', i, ' element: ');
readln(a[i - 1]);
end;
ElSum := 0;
Elements := 0;
for i := 1 to n do
if not(odd(a[i - 1])) and (odd(i)) then
begin
inc(ElSum, a[i - 1]);
inc(Elements);
end;
if Elements <> 0 then
writeln('The average is: ' + floattostr(ElSum / Elements))
else
writeln('Can not divide by 0');
readln;
end.
使用内置例程:
您的程序中没有一个
+
。通过求和值并除以计数来计算平均值。你的问题到底是什么?我试过这样做,但它有一个问题:不兼容的类型:Integer和Extended,如何修复它?你在浪费我们的时间,向我们求助于你不会显示的代码。我重复一遍,您的代码中没有一个+
。请显示需要帮助的代码。我很容易猜到,但这不是重点。“我想教你们的一课是如何恰当地提问。”戴维德费尔曼离题:我们的时间是我们自己的时间,除了我们自己,没有人能浪费它。我们出生前做了很多事情。例如,这是您的[上一个问题]()的延续吗?它向我显示了错误:未声明的标识符:floattostr@LuXuS在类似情况下,将单位添加到“使用”列表中。请参见函数的声明位置:FloatToStr
在System.SysUtils
(Delphi XE5)[致命错误]Project1.dpr(7):未找到文件:“System.SysUtils.dcu”(Delphi 7第二版)。@LuXuS您可以在帮助系统中找到函数,并在声明函数的位置添加单元QQ。或键入函数名,将光标设置为该名称,然后按F1键。阅读文章并将单元名称添加到使用列表中。@LuXuS在Delphi 7中,单元名称很可能是SysUtils
使用它,而不是System。SysUtils
可能值得添加D7所需的修改-从注释中引用的错误消息判断,OP似乎正在使用它的胡克版本。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
//We skip uses System.SysUtils;
var
i, n, CurrentInteger,
ElSum, Elements: integer;
begin
ElSum := 0;
Elements := 0;
write('Enter number of elements: ');
readln(n);
for i := 1 to n do
begin
write('Enter ', i, ' element: ');
readln(CurrentInteger);
if not(odd(CurrentInteger)) and (odd(i)) then
begin
inc(ElSum, CurrentInteger);
inc(Elements);
end;
end;
if Elements <> 0 then
begin
write('The average is: ');
writeln(ElSum / Elements:5:3)//we write it instead of FloatToStr
end
else
writeln('Can not divide by 0');
readln;
end.
program Project1;
{$APPTYPE CONSOLE}
uses
System.SysUtils, System.Types, System.Math;
var
Count: Integer;
I: Integer;
Values: TSingleDynArray;
begin
try
Write('Enter number of elements of the array: ');
ReadLn(Count);
SetLength(Values, Count);
for I := 0 to Count - 1 do
begin
Write('Enter element ', I + 1, ': ');
ReadLn(Values[I]);
end;
WriteLn('Average = ', Mean(Values):5:3);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.