替换旧数组中的字符

时间:2016-04-15 10:20:52

标签: c++

我正在解决一个问题,现在我正在做的事情就停留在最后一部分。从用户取5个字符并将其保存在字符数组上,然后输入3个字符进行检查,数组中是否有输入字符。
例如:
用户输入5个字符dagpl
比第二个数组subArray从主数组中搜索字符现在用户输入3字符dgl
结果说找到3个字符。你想用新角色替换这3个字符吗?因此,输入3个新替换字符,然后用户输入xyz 最终数组将被替换为xaypz

我的代码无法正常替换字符,我不知道我做错了什么。

#include<iostream>
#include<cstdlib>

using namespace std;

int main(int argc, char**argv) {

    bool check = false;

    char arr[6] = { '\0' };

    char subarr[4] = { '\0' };

    int count = 0;

    cout << "Enter Characters : ";

    for (int i = 0; i < 5; i++) {

        cin >> arr[i];
    }


    cout << "Enter 3 Characters and see how many times does array has your Search Characters : ";
    for (int i = 0; i < 3; i++) {

        cin >> subarr[i];
    }

    //Sub Array
    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 5; j++) {


            if (subarr[i] == arr[j]) {
                if (!check) {
                    cout << "Found characters are: ";
                }
                count++;
                cout << subarr[i] << ",";
                check = true;

            }
        }

    }

    if (check) {
        cout << '\b';
        cout << " ";
        cout << endl;

    }
    if (!check) {
        cout << "Sorry Nothing Found" << endl;
    }
    cout << "total Found : " << count << endl;

    //SECTION 3
    if (check) {
        int n = count + 1;
        char* replace = new char[n]();
        cout << "You can only replace " << count << " new characters because of find operation! so enter it will be replace old array with it: ";
        for (int i = 0; i < n - 1; i++) {
            cin >> replace[i];

        }

        //Replace characters
        for (int i = 0; i < n - 1; i++) {

            for (int j = 0; j < 5; j++) {
                if (subarr[i] == arr[j]) {

                    arr[j] = replace[j];


                }

            }
        }

        delete[]replace;
        replace = NULL;


        cout << "New Array would be: ";

        for (int i = 0; i < 5; i++) {

            cout << arr[i];


        }


        cout << endl;
    }

    system("pause");
    return EXIT_SUCCESS;
}

2 个答案:

答案 0 :(得分:0)

您想要求用户替换特定数量的字符,计算子句中出​​现的字符数。

arr是输入,subarr来自:

int replacecount[3] = { 0 };

for (int x=0; x<6; x++)
    for (int i=0; i<3; i++)
        if (input[x] == from[i]) {
            ++replacecount[i];
            break;
        }

int count = 0;
for (int i=0; i<3; i++)
    if (replacecount[i] > 0)
        ++count;

std::cout << " you can replace " << count << " characters..." << std::endl;
char to[3];
for (int i=0; i<3; i++)
    if (replacecount[i] > 0) {
        std::cout << "enter replace character for '" << from[i] << "'" << std::endl;
        std::cin >> to[i];
    }

for (int x=0; x<6; x++)
    for (int i=0; i<3; i++)
        if (input[x] == from[i]) {
            input[x] = to[i];
            break;
        }

 std::cout << "replaced string is: " << input << std::endl;

答案 1 :(得分:-1)

    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 5; j++) {


            if (subarr[i] == arr[j]) {
                if (!check) {
                    cout << "Found characters are: ";
                }
                count++;
                cout << subarr[i] << ",";

                check = true;

                arr[j]='\0';

            }
        }

    }

/********************************/

         int i=0;

            for (int j = 0; j < 5; j++) {
                if (arr[j]=='\0') {
                    arr[j] = replace[i++];
                }
        }

enter image description here