我对可变范围感到困惑,并希望更好地理解它。
将cout奇数和coutevenS移到外部进行循环。代码正确执行。如果将其移入for循环,则代码将以不正确的odds和evenS值执行。
#include <iostream>
#include <vector>
#include <cmath>
int main()
{
double evenS, oddS, pH = 0;
std::vector<double> v1 = {2, 4, 3, 6, 1, 9};
for(int i = 0; i < v1.size(); i++)
{
pH = v1[i];
if(fmod(pH, 2) == 0)
{
evenS = evenS + v1[i];
}
else if(fmod(pH, 2) == 1)
{
oddS = oddS + v1[i];
}
}
std::cout << evenS << "\n";
std::cout << oddS << "\n";
}
Run Code Online (Sandbox Code Playgroud)
我期望如果在for循环之外递增,odds和evenS不会保持适当的值。但是,事实恰恰相反,这引起了我的困惑。
std :: count返回一个值,在执行内部for循环后,对于变量'counter'中的所有字符,我需要将此值重置为0。目的是计算一个字符出现的次数。如果此字符在字符串中出现两次,则将其添加到变量d中。如果出现3次,则将其添加到变量“ e”。
不知道还有什么尝试,或者不确定是否有更好的功能可以达到我的目的。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstring>
int main() {
std::string data;
std::vector<std::string> myString;
std::vector<char> myChar;
int d = 0, e = 0;
std::ifstream inFile;
inFile.open("C:\\Users\\Administrator\\Desktop\\c++ files\\input2.txt");
if (!inFile) {
std::cout << "oops";
}
for (int i = 0; i < 1; i++) {
inFile >> data;
std::copy(data.begin(), data.end(), std::back_inserter(myChar)); //copy from string data to vector myChar via back inserter.
char counter = 'a';
for (int i = 0; i < 26; …Run Code Online (Sandbox Code Playgroud) c++ ×2