c++ - 如何重构具有大量 std::cin 和 std::cout 操作的程序?

标签 c++

<分区>

这是我的代码,我不太喜欢它,我知道它可以改进,但我不知道如何改进。我如何根据每行上的许多 std::cinstd::cout 操作重构这个程序?是否有任何 STL 库魔法可以改善这一点?谢谢。

#include <iostream>
#include <string>

int main() {

   int grade;

   std::cout << "Enter the grade you recieved: ";
   std::cin >> grade;
   std::cout << grade << "\n\n";

   if (grade == 100) {
      std::cout << "You got a perfect score!\n";
   } else if (grade > 90 && grade < 100) {
      std::cout << "You got an A\n";
   }

   if (grade == 100) {
      std::cout << "Grade: A+";
   } else if (grade > 90 && grade < 100) {
      std::cout << "Grade : A";
   } else if (grade > 80 && grade < 90) {
      std::cout << "Grade: B";
   } else if (grade > 70 && grade < 80) {
      std::cout << "Grade: C";
   } else if (grade > 60 && grade < 70) {
      std::cout << "Grade: D";
   } else if (grade < 60) {
      std::cout << "Grade: F";
   }

}

为了清楚起见,我想改进这段代码,因为使用所有这些 if 语句和打印函数似乎很不合时宜。我如何利用 STL 或模板函数/类来重构它?也欢迎使用 C++11。谢谢。

最佳答案

你已经得到了几个答案,但我想我还是会做一些不同的事情:

static char const *grades[] = { "F", "F", "F", "F", "F", "F", "D", "C", "B", "A", "A+"};

std::cout << grades[grade/10];

[我希望我正确计算了“F”的数量。]

关于c++ - 如何重构具有大量 std::cin 和 std::cout 操作的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554590/

相关文章:

c++ - C++ 标准中 7.1.6.1/1 中的这条语句有什么相关性?

c++ - 如何在源文件中定义模板函数

c++没有匹配函数来调用 vector push_back

c++ - 关于在 Qt 中使用未记录的类

c++ - 为什么传统的 GetProcAddress 到 std::function 不能直接工作

c++ - 类的堆分配对象是否在其范围之后但在 C++ 中调用其析构函数之前仍然存在

c++ - 对指针数组使用 begin()、end()

c++ - C++ 中包含固定大小数组的队列

c++ - 使用对 char 数组的隐式转换或编写显式转换方法是否明智?

c++ - 查询相似句子的有效方法