2015-03-08 4 views
-2
number = 100010001111111 

for (int i=0; number.length(); i++) { 
    while number[i] == 1 { 
    k++; 
    } 
} 

Я хотел бы реализовать цикл while в качестве замены для цикла for, как показано выше.Как перебирать строку, используя цикл while в C++?

Как я мог преобразовать это в цикл while?

+0

в то время как число [я] == 1 { к ++; } никогда не выйдет из цикла, если число в i равно 1 –

ответ

1

Вот решение проблемы вы упомянули в своем комментарии (Problem - 96A)

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "Please enter your players situation" << endl; 
    std::string str; 
    cin >> str; 

std::string::size_type i = 0; 
int NumbersofAppearances = 0; 
int ConsectiveNumberSequence = 7; //You can change that to whatever sequence you like 
bool IsDangerous=false; 
while (i < str.size()) 
{ 

    if(str[i]=='1' ) 
    { 
     ++NumbersofAppearances; 
     //We need to check if we reached the consecutive number or not and save it on a different bool variable 
     if(NumbersofAppearances>=ConsectiveNumberSequence) 
     IsDangerous=true; 
    } 
    else 
    { 
     NumbersofAppearances=0; 
    } 
    ++i; 
} 

//print out the end result 
if (IsDangerous) 
cout <<"YES , this is dangerous"<< endl; 
else 
cout <<"No, this is not dangerous"<< endl; 

    return 0; 
} 

А вот ссылка на Coding ground

+0

Я хочу знать, имеет ли номер непрерывные 'n' 1 или 0. Решение, возможно, не даст мне этого. – user2528

+0

Вы попробовали? решение будет проходить через каждый символ и k ++, если число равно 1 –

+0

. Решение даст мне общее количество. 1, но мне нужно только «непрерывное» 1. – user2528

Смежные вопросы