软件工程导论 张海藩/牟永敏 编著 P166-167
PROCEDURE average;
/*这个过程计算不超过100个在规定值域内的有效数子的平均值,同时计算有效数字的总和及个数*/
INTERFACE RETURNS average,total.input,total.valid;
INTERFACE ACCEPTS value,minimum,maximum;
TYPE value[1...10] IS SCALAR ARRAY;
TYPR average,total,input,total,valid;
minimum,maximum,sum IS SCALAR;
TYPE i IS INTEGER;
1: i = 1;
total.input = total.valid = 0;
sum = 0;
2: DO WHILE value[i] <> -999
3: AND total.input < 100
4: increment total.input by 1;
5: IF value[i] >= minimum
6: AND value[i] <= maximum
7: THEN increment total.input by 1;
sum = sum + value[i];
8: ENDIF
increment i by 1;
9: ENDDO
10: IF total.valid > 0
11: THEN average = sum / total.valid;
12: ELSE average = -999;
13: ENDIF
END average
Java代码实现
//Total实体类
package entity;
public class Total {
private int input;
private int valid;
public int getInput() {
return input;
}
public void setInput(int input) {
this.input = input;
}
public int getValid() {
return valid;
}
public void setValid(int valid) {
this.valid = valid;
}
}
//average类
import java.util.Scanner;
import entity.Total;
public class average {
public static void main(String[] args) {
// TODO Auto-generated method stub
Total total = new Total();
total.setInput(0);
total.setValid(0);
int [] value = new int[100];
double sum = 0;
double average = 0;
int i = 1;
//获取输入流
Scanner scanner = new Scanner(System.in);
System.out.println("请输入值域最小值:\n ");
int minimum = scanner.nextInt();
System.out.println("请输入值域最大值: \n");
int maximum = scanner.nextInt();
do {
System.out.println("请输入有效值并以-999结束 \n");
value[i] = scanner.nextInt();
if (value[i] >= minimum && value[i] <= maximum) {
total.setValid(total.getValid()+1);
sum = sum + value[i];
}
i++;
} while (value[i-1] != -999 && total.getInput()<100);
if (total.getValid() > 0) {
average = sum / total.getValid();
System.out.println("平均值为: "+average);
System.out.println("有效数字总和: "+sum);
System.out.println("有效数字个数: "+total.getValid());
}else {
average = -999;
System.out.println("计算错误,数值超出范围或其他原因!");
}
}
}