Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
PhoeniX_4
6 / 6 / 3
Регистрация: 01.06.2011
Сообщений: 163
#1

Оператор while - C++

09.07.2013, 13:45. Просмотров 467. Ответов 17
Метки нет (Все метки)

Доброго времени суток всем! Только-только начал изучать плюсы и возникла проблема при выполнении задания. Задание: написать программу перевода футов в дюймы, а при вводе 0 - выход из программы. Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main()
{
    double i, j, k;
    j=12.00000;
    setlocale (LC_ALL, "Russian");
    cout << "ГЂ Г¤Г*ГўГ*Г© ГЄГ* ïåðåâåäåì ГґГіГІГ» Гў äþéìû. Г‡Г*õî÷åøü âûéòè - ââåäè 0 ГЁ Г*Г*æìè Enter.\n";
    do {
        cout << "\nÂâîäè: ";
        cin >> i;
        cout << "Г‚ " << i << " ГґГіГІГ*Гµ áóäåò " << (k=i*j) << " äþéìГ*(îâ)";
    } while (i !='0');
    return 0;
}
Вроде все работает норм, но вот только при вводе 0 он не выходит из программы а тоже проводит вычисление. Подскажите начинающему пжалста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2013, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор while (C++):

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки - C++
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые трудности. Будьте добры, помогите решить. Буду...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 - C++
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 ...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости - C++
для чего нужен оператор двоеточие ( : ), если два двоеточия( :: ) - это оператор расширения области видимости.

Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? - C++
#include &lt;iostream&gt; using namespace std; class random { public: void Set(int b){a=b;} int Get(){return a;} private: ...

Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. - C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения...

17
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 13:47 #2
C++
1
while (i != 0)
C++
1
while (i)
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
09.07.2013, 13:50 #3
double i ты сравниваешь с '0' и вообще такая: запись do-begin-while будет по-мойму сначала выполнять действие, а потом сравнивать i !='0'
0
PhoeniX_4
6 / 6 / 3
Регистрация: 01.06.2011
Сообщений: 163
09.07.2013, 13:54  [ТС] #4
Ох спасибо! А почему здесь именно так? Читал книжку и был код когда нужно было вводить именно
C++
1
while (ch !='x')
Почему здесь не так?

Добавлено через 45 секунд
Почему именно i, а не i !='0' ?
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 13:56 #5
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
C++
1
while (ch !='x')
Почему здесь не так?
здесь 'x' это число, равное коду символа x

Добавлено через 1 минуту
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
Почему именно i, а не i !='0' ?
'0' это символ 0 со своим кодом из таблицы кодировок, заведомо не равный нулю.
1
PhoeniX_4
6 / 6 / 3
Регистрация: 01.06.2011
Сообщений: 163
09.07.2013, 13:56  [ТС] #6
Но ведь в случае

C++
1
while (i)
это же может быть любое число. Пока недопонял откуда он понимает что именно 0 является командой окончания выполнения программы
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
09.07.2013, 13:56 #7
while (i) означает, что i имеет любое ненулевое значение
0
Tulosba
09.07.2013, 13:56
  #8

Не по теме:

А еще переменная k совсем не нужна. Да и j надо сделать константой и целым. А ещё дать имена им нормальные.

0
SatanaXIII
Супер-модератор
Эксперт С++
5620 / 2655 / 247
Регистрация: 01.11.2011
Сообщений: 6,555
Завершенные тесты: 1
09.07.2013, 13:58 #9
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
Почему здесь не так?
Потому что здесь
C++
1
while (i !='0');
вы сравниваете переменную i не с нулем, а с числом 48. Так как код знака нуля ( символ 0 ) это сорок восемь.
Вот так попробуйте:
C++
1
while (i !=0);
1
PhoeniX_4
6 / 6 / 3
Регистрация: 01.06.2011
Сообщений: 163
09.07.2013, 14:01  [ТС] #10
Теперь понял! Спасибо!

Добавлено через 1 минуту
Вах! оба варианта что

C++
1
while (i)
что

C++
1
while (i !=0)
работают)

Добавлено через 1 минуту
Спасибо за помощь))

Добавлено через 17 секунд
И вам спасибо за помощь)
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 14:05 #11
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
оба варианта работают
еще можно
C++
1
while(!(i == 0))
C++
1
while(!!i == 1)
и т.д.
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
09.07.2013, 15:19 #12
Цитата Сообщение от Thinker Посмотреть сообщение
while(!!i == 1)
это для извращенных умов))
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 15:31 #13
Цитата Сообщение от soican Посмотреть сообщение
это для извращенных умов

Не по теме:

скажем так: пытливых умов)))

0
SatanaXIII
Супер-модератор
Эксперт С++
5620 / 2655 / 247
Регистрация: 01.11.2011
Сообщений: 6,555
Завершенные тесты: 1
09.07.2013, 15:43 #14
Thinker, я вас обожаю! Мастер казуистики.
C++
1
while(i>>1)
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 15:54 #15
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Мастер казуистики
спасибо, но
казуистика - изворотливость в аргументах при доказательстве сомнительных или ложных идей
как то не мое это
Цитата Сообщение от SatanaXIII Посмотреть сообщение
C++
1
while(i>>1)
не подойдет, при i=1 произойдет выход из цикла
0
09.07.2013, 15:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 15:54
Привет! Вот еще темы с ответами:

Оператор break как оператор go to next - C++
Подскажите, в этом примере break эквивалентна действию оператора go to next?

Как перегрузить оператор<< и оператор>> ? - C++
Доброго времени суток. Застрял на двух вопросах и не как не могу найти инфу которвя мне помогла бы их решить. вопрос первый. В общем...

В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор? - C++
(C++ Builder XE5)

Оператор if - C++
Почему у меня оператор Else выдает как ошибку(Е2054 Misplaced else)? и в операторе if не нравится как я записал if((s==a)&amp;&amp;(f==p)); ? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru