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.