计算数组中的不同元素

时间:2016-12-21 17:39:54

标签: c++

我得到了这个非常简单的项目,但是我遇到了一个简单的问题。

用户输入的数字不大于99且小于1 000 000。

我应该得到该数字中的位数以及每个数字出现的次数

例如:112233 = 6位数和3个不同的数字

我能够完成第一部分但是我的第二部分没有工作。

这部分不起作用:

int getDiff(int CLP, int Num)
{

    int counter = 0, i = 0, j = 0;

    for (int x = CLP, i = 0; x >= 1; x /= 10, i++) {
        PlateNumberArray[i] = x % 10;

        cout << endl
             << "Test===>" << PlateNumberArray[i] << endl;

    } // end of "x = CLP" for loop

    while (i < Num) {
        j = 0;
        while (j <= Num) {
            if (PlateNumberArray[i] == PlateNumberArray[j])
                NumberCounter[i]++;
            j++;
        } //end of while(j <= i)
        i++;
    } //end of while(i < Num)

    for (int i = 0; i < Num; i++)
        counter += NumberCounter[i];

    return counter;
}

例如,如果我的输入是112233,则返回值应为3,但是我得到12

如果输入为1122,则返回值应为2,但是我得到8

这是我到目前为止编写的整个程序:

/*====================================================================================
Headers and namespace
======================================================================================*/

#include <iostream>

using namespace std;

/*====================================================================================
Prototypes list
======================================================================================*/

int getNum(int); //This function checks how many digits there are in a plate number
int getDiff(int, int); //This function checks how many different numbers are there in the plate number

/*====================================================================================
Global variables list
======================================================================================*/

int PlateNumberArray[6];
int NumberCounter[6];

/*====================================================================================
main Function
======================================================================================*/
int main()
{

    //Declaring variables

    int CLP;

    //End of Vriables Declration

    cout << endl
         << "=============================" << endl;

    cout << "Enter your vehicle's plate number" << endl;

    do {
        cin >> CLP;

        if (CLP >= 1000000)
            cout << "Plate number can be no longer than 6 digits, please re-enter" << endl;
        else if (CLP < 100 && CLP >= 0)
            cout << "Plate number can not be less than 3 digits, please re-eneter" << endl;
        else if (CLP < 0)
            cout << "Plate number can not be a negative, please re-eneter" << endl;

    } while (CLP >= 1000000 || CLP < 100);

    int Num = getNum(CLP);
    cout << getDiff(CLP, Num);

    return 0;
}
/*====================================================================================
getNum Function
======================================================================================*/
int getNum(int CLP)
{

    //Declaring variables

    int Num;

    //End of Vriables Declration

    if (CLP > 99999)
        Num = 6;
    else if (CLP > 9999)
        Num = 5;
    else if (CLP > 999)
        Num = 4;
    else if (CLP > 99)
        Num = 3;

    return Num;
}
/*====================================================================================
getDiff Function
======================================================================================*/
int getDiff(int CLP, int Num)
{

    int counter = 0, i = 0, j = 0;

    for (int x = CLP, i = 0; x >= 1; x /= 10, i++) {
        PlateNumberArray[i] = x % 10;

        cout << endl
             << "Test===>" << PlateNumberArray[i] << endl;

    } // end of "x = CLP" for loop

    while (i < Num) {
        j = 0;
        while (j <= Num) {
            if (PlateNumberArray[i] == PlateNumberArray[j])
                NumberCounter[i]++;
            j++;
        } //end of while(j <= i)
        i++;
    } //end of while(i < Num)

    for (int i = 0; i < Num; i++)
        counter += NumberCounter[i];

    return counter;
}

1 个答案:

答案 0 :(得分:1)

每次增加j时,您需要重置i