c++功课,麻烦了

c++作业,麻烦了
使用VC作成Console应用,完成如下功能的程序:

猜数游戏1。
计算机拟定一个4位的随机数后,
由猜数人来输入4位数。
每次给出有多少位数字正确,有多少位位置正确。
形如:D2P1,表示:数字2位正确,位置1位正确。
请猜数人再次输入,直到全部正确为止。


猜数游戏2。
出题人拟定一个4位数后,
让计算机输出4位数。并接收出题人的回答,有多少位数字正确,有多少位位置正确。
然后计算机再次输出4位数,直到全部正确为止。

以上

------解决方案--------------------
试试看,不保证对:
    while (1) {
        cout << "输入数据(4位数字):";
        cin >> str2;
        //cout<<str2<<endl;
        if (strlen(str2)!=4) continue;
        if (!(isdigit(str2[0])
           && isdigit(str2[1])
           && isdigit(str2[2])
           && isdigit(str2[3]))) continue;
        int x[4],y;
        y=0;
        for (n = 0; n < 4; n++){
            x[n]=0;
            if (str1[n] == str2[n]){
                x[n]=n+1;
                y++;
            }
        }
        if (y == 4){
            cout << "恭喜你答对了!" << endl;
            getchar();
            return 0;
        };
        cout << "恭喜你答对了" << y << "位位置" << endl;
        y=0;
        for (n=0;n<4;n++) {
            for (m=0;m<4;m++) {
                if (str2[n]==str1[m]) {
                    y++;
                    break;
                }
            }
        }
        cout << "恭喜你答对了" << y << "位数字" << endl;
    }