2011-09-19 6 views
-2

у меня есть это:Как включить цикл while в цикл while?

#include <iostream> 

using namespace std; 

int main() 
{ 
    char ch, max = 0; 
    int n = 0; 
    cout << "Enter number of characters! :"; 
    cin >> n; 
    cout << "Enter the number"; 
    while (n>0) 
    { 
     cin >> ch; 
     if(max<ch) 
      max = ch; 
     n=n-1; 

    } 
    cout << "max is : " << max; 
} 

Я пытаюсь превратить его в то время как цикл дел - вот что у меня есть:

int main() 
{ 
char ch, max = 0; 
int n = 0; 
cout << "enter character"; 
cin >> n; 
cout << "enter two"; 
cin >> ch; 
do 
     (max<ch); 

while 
(max = ch); 
(n>0); 
n= n - 1; 

     cout << "max is : " << max; 
} 

Как это исправить?

+6

Это ваш фактический код или была ошибка при публикации. –

+2

Что вы пытаетесь сделать? – cpx

+2

Почему вы хотите превратить это в цикл 'do {...} while (condition)? Что делать, если пользователь вводит ноль для «числа символов»? –

ответ

2
while (test) block; 

эквивалентно

if (test) { 
    do block 
    while (test); 
} 

так что ваш цикл в то время как будет изменен в

if (n>0) { 
    do { 
    cin >> ch; 
    if(max<ch) 
     max = ch; 
    n=n-1; 
    } while (n>0); 
} 
4

Первая программа должна проверить EOF или других неисправностей после использования экстрактор:

#include <iostream> 
using namespace std; 

int main() 
{ 
    char ch, max = 0; 
    int n = 0; 
    cout << "Enter number of characters: "; 
    cin >> n; 
    cout << "Enter the number: "; 
    while (n > 0 && cin) 
    { 
     if (cin >> ch && max < ch) 
      max = ch; 
     n = n - 1; 
    } 
    cout << "max is : " << max << endl; 
    return 0; 
} 

Я отмечаю, что в коде нет ничего, что принуждает «это число» за подсказкой в ​​подсказке. Кроме того, большинство интерфейсов, которые заставляют пользователя подсчитывать то, что компьютер мог подсчитать, являются ошибочными.

Существует очень мало смысла в преобразовании кода, чтобы использовать do ... while цикл, но если надо, то он заканчивает тем, как:

#include <iostream> 
using namespace std; 

int main() 
{ 
    char ch, max = 0; 
    int n = 0; 
    cout << "Enter number of characters: "; 
    cin >> n; 
    cout << "Enter the number: "; 
    if (n > 0 && cin) 
    { 
     do 
     { 
      if (cin >> ch && max < ch) 
       max = ch; 
      n = n - 1; 
     } while (n > 0 && cin); 
    } 

    cout << "max is : " << max << endl; 
    return 0; 
} 

Примечание условие, которое появилось в верхней части петли while теперь является отдельным условием if и повторяется в состоянии do ... while (...). Это само по себе говорит вам, что do ... while здесь не подходит; вам нужно только пройти цикл, если есть работа, но цикл do ... while заставляет вас пройти цикл один раз независимо.

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