Запуск первого экземпляра while - PullRequest
0 голосов
/ 29 декабря 2011

Назначение:

Напишите программу, которая работает бесконечно. На каждой итерации цикла читайте целое число N (объявленное как int), которое вводится пользователем, отображайте N / 5, если N неотрицательно и делится на 5, или -1 в противном случае. Используйте троичный оператор (? :) для этого. (Подсказка: оператор модуля может быть полезен.)

Мое решение:

#include<iostream>
using namespace std;
int main(){
     int x;
     cin>>x;
     while(1) {
         cin>>x;
         int result;
         cout<<"             "<<endl;
         result = (x>0 & (x%5==0)) ? int(x/5) : -1;
         cout<<result;
     }
}

Я могу сделать вопрос но первый запуск программы не выдает

Ответы [ 4 ]

1 голос
/ 29 декабря 2011
(x>0 && (x%5==0)) ? int(x/5) : -1; 
     ^^

Я думаю, вы намереваетесь использовать логический оператор &&, а не побитовый оператор &.

Кроме того, вы читаете в x дважды и перезаписываете первое прочитанное значение.

1 голос
/ 29 декабря 2011

Пройдите программу построчно. С cin>>x вы читаете число в х. Строка 6 - это while (1), 1 - истина, поэтому вы идете в цикл. Следующий cin>>x читает число в x, перезаписывая предыдущее содержимое.

0 голосов
/ 29 декабря 2011

Подсказка 1: вам действительно нужен синглтон cin чуть выше цикла while?

Подсказка 2: Вы хотите напечатать пустую строку с новой строкой над результатом?

Подсказка 3: Вам нужно напечатать результат без перевода строки?

Подсказка 4: Вы намеревались использовать побитовый & вместо логического &&.?

Дополнительно

Подсказка 1: нужно ли делить на 5 до int?

0 голосов
/ 29 декабря 2011

Хорошо.Первое первым.Вы должны знать, что логический оператор C ++ «&&», а не «&» (тот, который вы использовали).Посмотрите здесь: http://www.cplusplus.com/doc/tutorial/operators/.

...