【问题标题】:Check instances of 3 paired letters检查 3 个配对字母的实例
【发布时间】:2012-12-28 10:27:40
【问题描述】:

假设我有一个数组 char myArrray[5] = {'T','T','T','T','T'} 我想检查我有多少 3 对 T 的实例。

我在下面有一个 forloop 来检查 T 的所有 3 个实例。应该有 3 个实例,但由于某种原因,它甚至没有输入检查它的 if 语句。

也许我只是迷路了,我真的很困。

整个阵列中有 3 个 TTT 实例。这就是我们必须在柜台上获得数字 3 的东西,但我们没有得到它。 (T{T[T)T}T]

完整代码:http://ideone.com/AWyOkH

有什么想法吗?

     for(int k = 0; k < lineInputs; k++)
{
    int counter=0;
    cout << (k+1) << " ";

    for(int u=0; u<arrayElements; u++)
    {
        //cout << myArray[u];
        if(myArray[u] == 'T' && myArray[u+1] == 'T' && myArray[u+2] == 'T')
        {
            counter++;
            cout << counter << " ";
        }
    }
}

问题出在if(myArray[u] == 'T' &amp;&amp; myArray[u+1] == 'T' &amp;&amp; myArray[u+2] == 'T') 上吗?

【问题讨论】:

  • arrayElements 设置为什么?你能发布整个代码吗?
  • arrayElements 设置为 5。
  • lineInputs 设置为什么?你的函数甚至进入外循环吗?为什么这个外循环还存在?
  • 你需要发布代码 - 给出你对它应该输出什么的期望

标签: c++ arrays if-statement for-loop


【解决方案1】:

似乎工作正常。

   char myArray[5] = {'T','T','T','T','T'};
    int lineInputs=1;
    for(int k = 0; k < lineInputs; k++)
    {
      int counter=0;
      cout << (k+1) << " ";
      int arrayElements=5;
      for(int u=0; u<(arrayElements-2); u++)
      {
         //cout << myArray[u];
         if(myArray[u] == 'T' && myArray[u+1] == 'T' && myArray[u+2] == 'T')
         {
             counter++;
             cout << counter << " ";
         }
      }
    }

我得到的输出是:

1 1 2 3 

【讨论】:

  • 输出应该更像 1 3
  • 3 表示 3 个实例。但它对我不起作用,我不知道为什么。
  • @soniccool,为什么是1 3?每次递增时它都会输出计数器。它会如何从 1 跳到 3?或者你的意思是不打印计数器,只打印结果?
  • 没关系我自己弄糊涂了,但是是的,我会发布我的整个代码,它对我不起作用。
  • 希望对您有所帮助
【解决方案2】:

它工作正常,虽然你发布的代码应该有:

for(int u=0; u<arrayElements-2; u++)

代替:

for(int u=0; u<arrayElements; u++)

输出将是 1 1 2 3,因为您首先打印 k+1,然后每次找到三个连续的“T”时的计数器。你的程序是正确的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2020-04-08
    • 2011-04-15
    • 2020-02-06
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多