Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
PhoeniX_4
 Аватар для PhoeniX_4
6 / 6 / 3
Регистрация: 01.06.2011
Сообщений: 161
09.07.2013, 13:45     Оператор while #1
Доброго времени суток всем! Только-только начал изучать плюсы и возникла проблема при выполнении задания. Задание: написать программу перевода футов в дюймы, а при вводе 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 он не выходит из программы а тоже проводит вычисление. Подскажите начинающему пжалста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2013, 13:45     Оператор while
Посмотрите здесь:

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

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

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

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

Не по теме:

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

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

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

C++
1
while (i)
что

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

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

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

Не по теме:

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

SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
09.07.2013, 15:43     Оператор while #14
Thinker, я вас обожаю! Мастер казуистики.
C++
1
while(i>>1)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 15:54     Оператор while #15
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Мастер казуистики
спасибо, но
казуистика - изворотливость в аргументах при доказательстве сомнительных или ложных идей
как то не мое это
Цитата Сообщение от SatanaXIII Посмотреть сообщение
C++
1
while(i>>1)
не подойдет, при i=1 произойдет выход из цикла
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.07.2013, 15:55     Оператор while #16
Цитата Сообщение от SatanaXIII Посмотреть сообщение
while(i>>1)
при i==1 не выполнится.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
09.07.2013, 15:58     Оператор while #17
Цитата Сообщение от Thinker Посмотреть сообщение
при i=1 произойдет
Цитата Сообщение от Tulosba Посмотреть сообщение
при i==1 не выполнится
А и черт с ним.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 16:08     Оператор while
Еще ссылки по теме:

C++ Оператор break как оператор go to next
C++ Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
C++ В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор?

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

Или воспользуйтесь поиском по форуму:
Tulosba
09.07.2013, 16:08     Оператор while
  #18

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
А и черт с ним.
вспоминается подпись ForEveR

Yandex
Объявления
09.07.2013, 16:08     Оператор while
Ответ Создать тему
Опции темы

Текущее время: 15:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru