gpt4 book ai didi

c++ - 在 C++ 中处理数组的问题

转载 作者:行者123 更新时间:2023-11-28 06:00:36 26 4
gpt4 key购买 nike

我正在尝试创建一个数组,让用户输入最多 80 个字符,然后当程序停止时,程序返回每个元音在数组中出现的次数。上周我成功地让它工作了,但是编码丢失了,我不得不从头开始。

编辑:我遇到的问题是,根据当前结构,所有计数器最后仍然返回 0。

我记得我使用了以下编码,但我对实际工作的计数器有疑问。我想我有自己循环中的计数器段,​​但我不记得了。

我还希望程序在用户按下 ENTER 时停止,但我不知道它是如何工作的。

如有任何帮助,我们将不胜感激。

#include <iostream> 
#include <iostream>
using namespace std;

int main()
{
int x = 0;
char thisArray[80];
int aCounter = 0, eCounter = 0, iCounter = 0, oCounter = 0, uCounter = 0;
cout << "Please enter up to 80 characters and you will be told" << endl;
cout << "how many times each vowel is in the array." << endl;

do{
cout << "Please enter a character" << endl;
cin >> thisArray;
x++;
} while (x < 80);


for (x = 0; x <= thisArray[x]; x++) {
if (thisArray[x] == 'a')
aCounter = aCounter + 1;
else if (thisArray[x] == 'e')
eCounter = eCounter + 1;
else if (thisArray[x] == 'i')
iCounter = iCounter + 1;
else if (thisArray[x] == 'o')
oCounter = oCounter + 1;
else if (thisArray[x] == 'u')
uCounter = uCounter + 1;
}

cout << "Vowel count:" << endl;
cout << "Total number of A's." << aCounter << endl;
cout << "Total number of E's." << eCounter << endl;
cout << "Total number of I's." << iCounter << endl;
cout << "Total number of O's." << oCounter << endl;
cout << "Total number of U's." << uCounter << endl;

system("pause");
}

最佳答案

您使用的 do 循环不正确。它会尝试读取一个字符串 80 次,并且只会存储最后一个字符串。这些字符串中的每一个都将只包含非空白字符。

更改 do 循环,以便您一次读取一个字符,使用未格式化的输入,并将所有字符存储在数组中,包括空白字符。

当达到可以容纳的字符数限制或遇到换行符时停止循环。

cout << "Please enter a line of text" << endl;

// Read the characters one by one.
// Don't read more than 79 characters.
// Stop if a newline or EOF is encountered.
int c;
while ( x < 79 && (c = cin.get()) != '\n' && c != EOF )
{
thisArray[x] = c;
++x;
}

// null terminate the string.
thisArray[x] = '\0';

关于c++ - 在 C++ 中处理数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351828/

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