如何计算int中每个数字的总和?

时间:2019-04-27 23:48:33

标签: c++

我得到了任务:

  • 编写一个将邮政编码转换为邮政编码的程序
  • 您可以假定输入是数字或字符或单词,但绝不能是混合的 (例如,不允许使用1000a或aabc100)。
  • 如果用户输入的邮政编码小于0或大于100000,则退出 程序(请参见输入输出示例)。
  • 如果用户输入的邮政编码不是数字,则退出程序(请参见示例 输入输出)。要检查输入是否失败,请使用cin.fail()函数。

有关邮政编码的信息:

postal bar code information

我的代码如下:

#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <cmath>
#include <iomanip>
using namespace std;



void print_each_digit(int x)
{
    if (x >= 10) print_each_digit(x / 10);

    int digit = x % 10;

    if (digit == 0) { cout << "||:::"; };
    if (digit == 1) { cout << ":::||"; };
    if (digit == 2) { cout << "::|:|"; };
    if (digit == 3) { cout << "::||:"; };
    if (digit == 4) { cout << ":|::|"; };
    if (digit == 5) { cout << ":|:|:"; };
    if (digit == 6) { cout << ":||::"; };
    if (digit == 7) { cout << "|:::|"; };
    if (digit == 8) { cout << "|::|:"; };
    if (digit == 9) { cout << "|:|::"; };
}




int main()
{
    char counter;

    do {
        int zip;

        cout << "Please enter a zip code: "; cin >> zip; cout << endl;

        cout << "|"; print_each_digit(zip); cout << "|" << endl;

        if (cin.fail()) { cout << "The zip code you entered does not exist."; } {return 0;};

        if (zip < 0 || zip > 100000) { cout << "The zip code you entered does not exist."; } { return 0;};

        cout << "Would you like to continue? (y,n) "; cin >> counter;

    } while (counter == 'y');



    return 0;

}

我能够将邮政编码数字正确地输入到条形码中。但是,我的程序有两个问题。

  1. 如何修改我的代码,以便它可以计算校验位(邮政编码中每个数字的总和)?我不允许在char,string和int之间使用转换,因此无法使用get.substr()进行计算。

  2. 我注意到我没有正确应用条件cin.fail()。如何使它满足帖子开头列出的条件?

0 个答案:

没有答案