如何在循环外打印总和?我认为全局变量和局部变量的减速存在一些错误

How do I print the sum outside the loop ? I think there's some mistake in deceleration of global and local variable

本文关键字:局部变量 全局变量 错误 存在 循环 打印      更新时间:2023-10-16

当我把第六行(cout <<"排名:" <<Sum + 1 <<在循环外,它表示sum没有在此范围内声明。代码在下面:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace::std;
int main() {
string input;
cout << "Don't enter repetitive alphabet word n" << "Enter a word : ";
getline(cin, input);
vector<char> myVector(input.begin(), input.end());
vector<char> myVector2(input.begin(), input.end());
sort(myVector2.begin(), myVector2.end());
if(myVector2 == myVector){
    cout << "rank : 1";
}
else{
    for (int i = 0; i < myVector2.size(); i++){
        //cout << myVector2[i]; 
    }
    cout << endl;
    int q = 0, value = 1, w = 1;
    while(q < myVector.size()){
        int k = 0, temp = 0, sum, value = 1, w = 1;
        while(k < myVector2.size()){
            while(myVector2[k] != myVector[q] && k < myVector2.size()){
                while(w < myVector2.size()){
                    value = value * w ;
                    w++;
                }
                k++;
            }
            temp = value * (k);
            break;
        }
        sum = sum + temp;
        myVector2.erase(myVector2.begin()+k);
    /*  for(int j = 0; j < myVector2.size(); j++){
            cout << myVector2[j];
        }*/
        cout << "rank : " << sum + 1 << endl;
        q++;
    }
}
}

如何打印最后第6行:"排名:" <<Sum + 1 <<endl;跳出循环?并请说明原因

在c++中,每次花括号打开时,创建一个新的作用域,关闭时,销毁它。每个作用域都可以访问其他作用域,只要它们没有被销毁。

sum在第一个while循环的作用域中声明。因此,当while循环关闭时,作用域被销毁,从而导致sum声明无效/销毁。

必须在循环之前声明sum,并且可能需要初始化它。

int q = 0, value = 1, w = 1, sum = 0;
while( ... ) {
    ...
}