gpt4 book ai didi

c++ - 比较类成员数组元素和主要元素

转载 作者:行者123 更新时间:2023-11-28 03:14:31 25 4
gpt4 key购买 nike

我正在尝试比较我的数组元素,但是当我编译它时,类成员数组没有显示我从主“键”中的原始数组复制到数组中的值, 但是来自main的数组,“answer”保留了我输入的值,我在程序运行后写了一个测试循环,只是为了看看类成员数组“canswers”里面有什么,它是我复制到来自主“键”的数组。我正在尝试比较类函数“grade”中的两个数组(“cananswers”和“answer”),但我不知道我做错了什么。每次我通过 for 循环比较它们时, if 语句,它不起作用,并出现随机字符。我在数组的最后写了一个测试循环来显示类成员数组“cananswers”的内容,它具有我从 main 复制的所有正确值,但是当我比较二。我尽量保持代码简洁,以便大家可以轻松阅读。

#include<iostream>
#include<string>

using namespace std;

class TestGrade
{
public:
void setKey(char []);
void grade(char []);
char canswers[];
void display();
};


void TestGrade::setKey(char answers[]) //setting values from "key" array in main
{
for(int index = 0; index < 19; index++)
{
canswers[index] = answers[index];
}
}

void TestGrade::grade(char answer[]) //comparing elements in array, here's where the
{ //trouble begins
for(int index = 0; index < 19; index++)
{
cout << canswers[index] << " " << answer[index] << endl;
if(canswers[index] == answer[index])
{ cout << "The values are equal" << endl;}
}
}

void TestGrade::display() //testing the values after the loop i had trouble with
{
for(int index = 0; index < 19;index++)
{
cout << canswers[index] << endl;
}
}


int main()
{
const char SIZE = 20;
char answer[SIZE];
char key[20] = {'B', 'D', 'A', 'A',
'C', 'A', 'B', 'A',
'C', 'D', 'B', 'C',
'D', 'A', 'D', 'C',
'C', 'B', 'D', 'A'};

TestGrade test1,test2;

test1.setKey(key);

cout << "Welcome to the written portion of the DMV exam. \n";
cout << "You may only enter capital A, B, C, or D for your answers.\n\n" << endl;

for (int index = 0; index < SIZE; index++)
{
cout << "Enter your answer for question " << index+1 << endl;
cin >> answer[index];

while (answer[index] != 'A'
&& answer[index] != 'B'
&& answer[index] != 'C'
&& answer[index] != 'D')
{
cout << "ERROR: you must input capital A,B,C, or D" << endl;
cin >> answer[index];
}
}

test2.grade(answer); // comparing the values of canswer[] and answer[]

test1.display(); //test loop testing contents of canswers[] class member array

system("pause");
return 0;
}

最佳答案

您永远不会为 test2 设置 key 。这意味着 test2 中的 canswers 数组没有初始化,你只在 test1 中做了。正如您所发现的,当 c++ 中的变量未在 c++ 中初始化时,它包含随机值。您想要将 test2.grade(answer) 更改为 test1.grade(answer),它应该可以正常工作。

如果您希望答案键在所有测试中都相同,那么请将答案设为静态:

static char canswers[]

关于c++ - 比较类成员数组元素和主要元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17354968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com