Когда я поставил 6-й последнюю строку (соиЬ < < «ранга:» < < сумма + 1 < < епсИ;) вне цикла он говорит, что сумма не была объявлена в этот объем. Код прямо ниже:Как распечатать сумму за пределами цикла? Я думаю, что есть какая-то ошибка в замедлении глобальной и локальной переменной
#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-ю последнюю строку: COUT < < "ранга": < < сумму + 1 < < ENDL; вне петли? И, пожалуйста, объясните причину.
Проблема в том, что ваша 'sum' объявлена в цикле. Переместите декларацию вверх. – alexeykuzmin0
Определить переменную 'sum' вне цикла, а? –
Кроме того, переменная 'sum' не инициализируется до ее использования, поэтому вы имеете * неопределенное поведение *, когда вы делаете' sum + temp'. –