不计算程序中的最低和最高等级。 (c ++)(fstream)

时间:2017-01-17 11:33:49

标签: c++ max average min ifstream

该计划的目的是打开并阅读一个文本文件,其中包含学生的学术代码 - > aem和他/她的整体成绩。然后,如果某个学生的成绩大于5,它会在成功的文本上写下他/她的学术代码,以及成绩等。 我的问题是,它正确计算了这5个学生成绩的平均值,但不计算最高和最低成绩。当我运行程序时,窗口出现,显示正确的课程平均值,但最高和最低成绩始终为0。 谁能帮我?可能我没有以正确的方式比较它们。

public class SpinnerAdapter extends ArrayAdapter<BatchModel> {

public SpinnerAdapter(Context context, int textViewResourceId) {
    super(context, textViewResourceId);
}

public ListAdapter(Context context, int resource, ,List<BatchModel> listItems) {
    super(context, resource, listItems);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v = convertView;

    if (v == null) {
        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
        v = vi.inflate(R.layout.itemlistrow, null);
    }

    BatchModel bm = getItem(position);

    if (v != null) {
        TextView tt1 = (TextView) v.findViewById(R.id.batch);
         tt1.setText(bm.batch);

    }

    return v;
}

}

1 个答案:

答案 0 :(得分:2)

int main(int argc, char** argv)

此处不需要argcargv。它可以只是int main()

int min, max;
double grades, average;
grades = average = 0;
min = max = 0;

声明后分配值是不必要且效率低下的。此外,0是整数,而不是浮点。您可以初始化它们:int min = 0, max = 0; double grades = .0, average = .0;

grades = grades + a[i];

可以缩短为grades += a[i];

average = grades / arraySize;

这句话在无意义的for循环中。你可以在循环后执行此操作。

for (int i = 1; i < arraySize; i++) {

你忘记了a的第0个元素。必须将int i = 1;替换为int i = 0;

if (i >= max)
    max = i; 
if (i <= min)
    min = i;

您错误a[i]代表i。如果a[i]max已经比较相等,则无需将a[i]分配给max。他们可以只是:

if (a[i] > max)
    max = a[i]; 
if (a[i] < min)
    min = a[i];

system("pause");

std::system依赖于系统环境,可能会出现意外行为。它应该替换为:

std::cout << "Press enter key." << std::endl;
std::cin.get();