当前位置: 首页 > 知识库问答 >
问题:

计算平均值时,我应该将输入的符号归一化吗?

益光亮
2023-03-14

我试图找到这个数组的AVG:1742,1065,-67,-2988,-796,-1000,31,-67,-100,1180我相信我的方法把数字从POS改成NEG是正确的。我的程序需要计算上述数组,然后打印消息,如果AVG是负数或正数,它总是打印AVG是正数,即使它不是。以下是我目前为止的代码:

; lab56.asm
;
    .MODEL SMALL
    .STACK 100h
    .DATA
AVG_NEG  DB  'THE AVG IS NEG',13,10,'$'
AVG_POS  DB  'THE AVG IS POS',13,10,'$'
INDEX    DB  'Numbers that are larger than the average are in indexes:',13,10,'$'
RES      DB  '                     ','$'
ARR      DW  1742,1065,-67,-2988,-796,-1000,31,-67,-100,1180
Ten      DW  10
AVG      DW  0
temprint DB  '      ','$'
;Program start here:
    .CODE
    MOV AX,@DATA    ; DS can be written to only through a register
    MOV DS,AX       ; Set DS to point to data segment
    LEA SI, ARR
;
;   SUMUP
    MOV CX,10       ;10 variables in array
Sum:
    MOV AX,[SI]
    CMP AX,0
    JG Pos_label
    XOR AX,0000000000000000b
    ADD AX,0000000000000001b
Pos_label:
    ADD AVG,AX
    ADD SI,2        ;move to the next number
LOOP Sum
;   Divided by 10 to get the AVG
    CWD             ; AX -> DX:AX
    IDIV Ten
    MOV AVG,AX
;   print

;   Check if NEG or POS
    CMP AVG,0
    JG Avg_label
    MOV AH,9       ; Set print option for int 21h
    MOV DX,OFFSET AVG_NEG       ;  Set  DS:DX to point to AVG_NEG
    INT 21h
    JMP continue
Avg_label:
    MOV AH,9       ; Set print option for int 21h
    MOV DX,OFFSET AVG_POS       ;  Set  DS:DX to point to AVG_POS
    INT 21h
continue:
;

;Program end's here:

     MOV AH,4Ch       ; Set terminate option for int 21h
     INT 21h       ; Return to DOS (terminate program)
     END 

共有1个答案

蓝飞
2023-03-14

如果在将所有输入相加之前更改所有输入的符号,那么显然总和(除非溢出),因此平均值也是如此。此外,计算出的平均值将是错误的,因为您将平均幅度而不是实际值。

你改变符号的方法确实是错误的,所以不要这样做。用你在小学学到的方法计算平均值:加数字除以计数。

 类似资料:
  • 问题内容: 任何人都知道如何计算这些列之一的平均值(在Linux上)? 例如:mean(第2栏) 问题答案: Awk: 读为: 对于每一行,将第2列添加到变量“总计”中。 在文件末尾,打印“总计”除以记录数。

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 我想知道我是否正确理解了图像的平均归一化。 据我所知,您计算所有像素的平均值(假设它是灰度)。然后,对于每个像素,减去该平均值。 但是,人们应该如何处理可能出现的负值呢?例如,整个图像的平均值为100,但一个特定像素的强度为90。在这个标准化之后,像素的值将是-10。

  • 问题内容: 编辑:我已经写了平均的代码,但我不知道如何使它也使用从我的args.length而不是数组的整数 我需要编写一个Java程序,该程序可以计算:1.读入的整数数2.平均值-不必是整数! 注意!我不想从数组中计算平均值,但是要在args中计算整数。 目前我已经写了这个: 谁能指导我正确的方向?还是举个例子,以书面形式指导我塑造这段代码? 提前致谢 问题答案: 只需对您的代码进行一些小的修改

  • 该程序每秒接收大约50000个数字。 在任何给定时刻,我都需要计算最后一秒到达的值(数字)的最小值、最大值和平均值(关于给定时刻)。 有没有办法不用数组或列表(缓冲区)来存储到达的数字和计算结果? 如果我需要使用缓冲区,那么实现这一点的有效方法是什么? (请注意,缓冲区中的数字也必须不时有效地删除)

  • 问题内容: 我得到了一个带有2列值的.txt文件。它们是2D坐标,因此第一列代表x值,第二列代表z值。不幸的是,有些行具有相同的x值但具有不同的z值。我想计算z值的平均值,以便将单个z与单个x关联。我所拥有的一个样本是: 如您所见,x值435.212与4个不同的z值相关联。我想拥有的是: 其中108.8985是(108.894 + 108.897 + 108.9 + 108.903)/ 4的结果。