C ++ if ...其他函数中的语句

时间:2018-10-18 02:44:47

标签: c++

使用最大值功能可打印出成绩数组中的最大值。

使用最小值功能可打印出成绩数组中的最小值

使用字母等级功能为阵列中的每个分数打印出等级编号和相关的字母等级。这将需要嵌套的if-then else语句来解决。

以上就是我应该做的。但是我似乎无法弄清楚它的第三部分。任何帮助都很棒

头文件:

#ifndef UTILITIES_H
#define UTILITIES_H

void show_grades(int data[], int num_values);
void show_max(int data[], int num_values);
void show_min(int data[], int num_values);

#endif

utilities.cpp:

#include <iostream>
#include "utilities.h"
using namespace std;

void show_grades(int data[], int num_values) {
     for(int i = 0 i < num_values; i++)
          cout << data[i] << endl;
}

void show_max (int data[], int num_values) {
     for (int i = 0; i < num_values; i++){
          if(data[0] < data[i])
             data[0] = data[i];
          cout << "Largest Element = " << data[0];

          return 0;
     }
 }

void show_min (int data[], int num_values) {
     for (int i = 0; i < num_values; i++){
          if(data[0] > data[i])
             data[0] = data[i];
          cout << "Smallest Element = " << data[0];

          return 0;
     }
 }


void letter_grade (int data[], int num_values) {
     for (int i = 0; i < num_values; i++){
          //// STUCK PLEASE HELP
      }
}

grader.cpp:

#include "utilities.h"
#include <iostream>

void show_grades(int data[], int num_values);

int main(int argc, char * argv[]){
    int grades[15] = {
          55, 87, 93, 77, 92, 88, 67, 81, 84, 73, 81, 92, 89, 100, 62 
    };

    show_grades(grades, 15);
 }

1 个答案:

答案 0 :(得分:2)

问:你能告诉我为什么我的功能坏了吗?

A:因为他们不执行您想要的事情(告诉您数组中的最小值或最大值)。

// BAD:
void show_max (int data[], int num_values) {
     for (int i = 0; i < num_values; i++){
          if(data[0] < data[i])
             data[0] = data[i];
          cout << "Largest Element = " << data[0];

          return 0;
     }
 }

问题:

  • 您想做什么? “显示”最大值,还是“查找”最大值?还是两者都有?
  • 为什么不简单地找到最大值并返回呢?函数的 OUTSIDE 是不是单独进行“显示”更好?
  • 您为什么要覆盖data[0]?您不想保存吗?
  • 为什么循环中存在return ... INSIDE ?您是否知道无需完成循环即可退出整个功能?
  • 如果您要比较线对...您是否真的需要循环0..num_values
  • 等等等等

这是一个可能的选择:

// BETTER:
int get_max (int data[], int num_values) {
    int max = data[0];
    for (int i = 1; i < num_values; i++){
        if(data[i] > max)
            max = data[i];
        cout << "Current max = " << max << endl;
    }
    return max;
}

强烈建议:

  • 熟悉调试器(例如MSVS>调试,gdb:任何可用的调试器)。

  • 使用调试器始终单步执行您编写的 ANY 新代码...,以确保它确实在执行您的 INTENDED < / em>。