Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符串/数组情况c++;_C++_Arrays_String - Fatal编程技术网

C++ 字符串/数组情况c++;

C++ 字符串/数组情况c++;,c++,arrays,string,C++,Arrays,String,我不明白它到底出了什么问题。即使有一个while循环,最后的尝试次数也是9次。我想让它检查猜测是字符串中的一个坐标,但它永远不起作用/ 我将把if语句移到哪里 int main() { int guesses, destroy, numAttempts = 11; string guess, i; string coordinate[3] = {"B1", "C4", "D3"}; cout << "Enter in a coordinate between A-1 and D-4

我不明白它到底出了什么问题。即使有一个while循环,最后的尝试次数也是9次。我想让它检查猜测是字符串中的一个坐标,但它永远不起作用/

我将把if语句移到哪里

int main() {
int guesses, destroy, numAttempts = 11;
string guess, i;
string coordinate[3] = {"B1", "C4", "D3"};

cout << "Enter in a coordinate between A-1 and D-4 (i.e. C4): ";
cin >> guess;

guesses = 0;
destroy = 0;
while (guess != coodinate[i] && guesses < numAttempts - 1) {
    cout << "Target missed. Try again: ";
     cin >> guess;
     guesses++;;
}
if (guess != coordinate[i])
    cout << "Failed!";
else
    cout << "Congrats!";

  /*if (guess == coordinate) {
     cout << "Target hit! Next target: ";
     cin >> guess;
 destroy++;
 guesses++;

 }
 */

}
intmain(){
int猜测,销毁,numtempts=11;
猜猜看,我;
字符串坐标[3]={“B1”、“C4”、“D3”};
猜不透;
猜测=0;
破坏=0;
while(guess!=coodinate[i]&&guess你这里有一个打字错误:

while (guess != coodinate[i] && guesses < numAttempts - 1) 
              //coordinate[i]
while(guess!=coodinate[i]&&guess
尝试:

while((guess!=坐标[i])&&(guess<(numtempts-1)))
//括号不是强制性的

另外,正如其他人指出的,您并不是在所有数组
坐标
中寻找
guess
值,因为您没有增加
i

,您这里有一个输入错误:

while (guess != coodinate[i] && guesses < numAttempts - 1) 
              //coordinate[i]
while(guess!=coodinate[i]&&guess
尝试:

while((guess!=坐标[i])&&(guess<(numtempts-1)))
//括号不是强制性的

另外,正如其他人所指出的,你没有在所有数组
坐标
中寻找
guess
,因为你没有增加
i
,你忘记了增加
i
i++
(至少,我假设你是这样?)。 可能是错误的一部分。 如果你必须增加i,确保它不会超出范围

   guess = input ;
   guesses = 0;
   while (guesses < numAttempts  && guess != coodinate[i] ) { 
     cout << "Target missed. Try again: ";
     cin >> guess;
     guesses++;
     i = (i+1)%3;
   }
guess=输入;
猜测=0;
而(猜测
您忘记了递增
i
i++
(至少,我认为您是这样的?)。 可能是错误的一部分。 如果你必须增加i,确保它不会超出范围

   guess = input ;
   guesses = 0;
   while (guesses < numAttempts  && guess != coodinate[i] ) { 
     cout << "Target missed. Try again: ";
     cin >> guess;
     guesses++;
     i = (i+1)%3;
   }
guess=输入;
猜测=0;
而(猜测
您需要学习创建小型单用途函数并将它们组合在一起

#include <set> // because you have a set of targets...
#include <string> // used to represent a target

using Target = std::string;

static Target const MissedTarget = "";

static bool isGuessCorrect(Target const& guess,
                           std::set<Target> const& targets)
{
    return targets.count(guess);
}

// Returns the target hit (if any), or MissedTarget otherwise
static Target tryOnce(std::set<Target> const& targets) {
    std::cout << "Enter in a coordinate between A-1 and D-4 (i.e. C4): ";

    std::string guess;
    if (std::cin >> guess) {
        if (isGuessCorrect(guess, targets)) { return guess; }

        return MissedTarget;
    }

    // Something that could not (unfortunately) be parsed,
    // we need to clear std::cin
    std::cin.clear();
    std::cin.ignore(std::numeric_limit<size_t>::max(), '\n');

    return MissedTarget;
}

static bool tryFewTimes(size_t const tries, std::set<Target>& targets) {
    for (size_t n = 0; n != tries; ++n) {
        Target const target = tryOnce(targets);

        if (target == MissedTarget) {
            std::cout << "Missed! Try again!\n";
            continue;
        }

        targets.erase(target);

        std::cout << "Congratz! You got " << target
                  << "! Only " << targets.size() << " remaining\n";
        return true;
    }

    std::cout << "You flunked it, can't always win :(\n";
    return false;
}


int main() {
    std::set<Target> targets = { "A1", "B1", "C1" };

    while (not targets.empty() and tryFewTimes(3, targets)) {}
}
#包含//因为您有一组目标。。。
#include//用于表示目标
使用Target=std::string;
静态目标常数MissedTarget=“”;
静态布尔值为猜测正确(目标常数和猜测,
标准::设置常量和目标)
{
返回目标。计数(猜测);
}
//返回目标命中率(如果有),否则返回未命中目标
静态目标时间(标准::设置常数和目标){
标准::cout>猜测){
if(isGuessCorrect(guess,targets)){return guess;}
返回未命中的目标;
}
//一些无法(不幸地)解析的东西,
//我们需要清除std::cin
std::cin.clear();
std::cin.ignore(std::numeric_limit::max(),'\n');
返回未命中的目标;
}
静态bool tryFewTimes(大小常数、标准::设置和目标){
对于(大小n=0;n!=tries;++n){
目标常数目标=tryOnce(目标);
如果(目标==未命中目标){

std::cout您需要学习创建小型单用途函数并将它们组合在一起

#include <set> // because you have a set of targets...
#include <string> // used to represent a target

using Target = std::string;

static Target const MissedTarget = "";

static bool isGuessCorrect(Target const& guess,
                           std::set<Target> const& targets)
{
    return targets.count(guess);
}

// Returns the target hit (if any), or MissedTarget otherwise
static Target tryOnce(std::set<Target> const& targets) {
    std::cout << "Enter in a coordinate between A-1 and D-4 (i.e. C4): ";

    std::string guess;
    if (std::cin >> guess) {
        if (isGuessCorrect(guess, targets)) { return guess; }

        return MissedTarget;
    }

    // Something that could not (unfortunately) be parsed,
    // we need to clear std::cin
    std::cin.clear();
    std::cin.ignore(std::numeric_limit<size_t>::max(), '\n');

    return MissedTarget;
}

static bool tryFewTimes(size_t const tries, std::set<Target>& targets) {
    for (size_t n = 0; n != tries; ++n) {
        Target const target = tryOnce(targets);

        if (target == MissedTarget) {
            std::cout << "Missed! Try again!\n";
            continue;
        }

        targets.erase(target);

        std::cout << "Congratz! You got " << target
                  << "! Only " << targets.size() << " remaining\n";
        return true;
    }

    std::cout << "You flunked it, can't always win :(\n";
    return false;
}


int main() {
    std::set<Target> targets = { "A1", "B1", "C1" };

    while (not targets.empty() and tryFewTimes(3, targets)) {}
}
#包含//因为您有一组目标。。。
#include//用于表示目标
使用Target=std::string;
静态目标常数MissedTarget=“”;
静态布尔值为猜测正确(目标常数和猜测,
标准::设置常量和目标)
{
返回目标。计数(猜测);
}
//返回目标命中率(如果有),否则返回未命中目标
静态目标时间(标准::设置常数和目标){
标准::cout>猜测){
if(isGuessCorrect(guess,targets)){return guess;}
返回未命中的目标;
}
//一些无法(不幸地)解析的东西,
//我们需要清除std::cin
std::cin.clear();
std::cin.ignore(std::numeric_limit::max(),'\n');
返回未命中的目标;
}
静态bool tryFewTimes(大小常数、标准::设置和目标){
对于(大小n=0;n!=tries;++n){
目标常数目标=tryOnce(目标);
如果(目标==未命中目标){


std::cout考虑到截获的打字错误,这真的是代码吗?
i
应该声明为
int
,而不是
字符串
…考虑到截获的打字错误,这真的是代码吗?
i
应该声明为
int
,而不是
字符串
…我投了赞成票,但我认为额外的括号是真的“不需要。它们只是用来增加字符数。”StytTeLee我为清楚地添加了这些,我不再加入C++:我不确定它们是否有用。我将编辑我的答案来指出它。我赞成它,但我认为额外的括号确实是多余的。它们只用来增加字符计数。“为了清楚起见,我不再对C++了:我不确定它们是否有用。我将编辑我的答案来指出它。谢谢。这有点帮助,但我的主要问题是:“错误C2677:二进制”[ ]:没有找到全局类型的操作符,它需要类型“STD::String”(或者没有可接受的转换)。这是偶然发生的..while看起来很好..我不认为您发布的是实际代码:PLol。我只需要找到另一种方法使其进入循环。谢谢。这有点帮助,但我的主要问题是:“错误C2677:binary'[':找不到采用'std::string'类型的全局运算符”(或者没有可接受的转换)”这是一时兴起的。虽然看起来很好。我不认为你发布的是真正的代码:PLol。我只是需要找到另一种方法让它循环。