Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 175
1

Оператор while

09.07.2013, 13:45. Показов 660. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2013, 13:45
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 45 секунд
Почему именно i, а не i !='0' ?
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 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
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 175
09.07.2013, 13:56  [ТС] 6
Но ведь в случае

C++
1
while (i)
это же может быть любое число. Пока недопонял откуда он понимает что именно 0 является командой окончания выполнения программы
0
49 / 23 / 3
Регистрация: 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
Почетный модератор
Эксперт С++
5845 / 2855 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
09.07.2013, 13:58 9
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
Почему здесь не так?
Потому что здесь
C++
1
while (i !='0');
вы сравниваете переменную i не с нулем, а с числом 48. Так как код знака нуля ( символ 0 ) это сорок восемь.
Вот так попробуйте:
C++
1
while (i !=0);
1
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 175
09.07.2013, 14:01  [ТС] 10
Теперь понял! Спасибо!

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

C++
1
while (i)
что

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

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

Добавлено через 17 секунд
И вам спасибо за помощь)
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 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
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
09.07.2013, 15:19 12
Цитата Сообщение от Thinker Посмотреть сообщение
while(!!i == 1)
это для извращенных умов))
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 15:31 13
Цитата Сообщение от soican Посмотреть сообщение
это для извращенных умов

Не по теме:

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

0
Почетный модератор
Эксперт С++
5845 / 2855 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
09.07.2013, 15:43 14
Thinker, я вас обожаю! Мастер казуистики.
C++
1
while(i>>1)
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 15:54 15
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Мастер казуистики
спасибо, но
казуистика - изворотливость в аргументах при доказательстве сомнительных или ложных идей
как то не мое это
Цитата Сообщение от SatanaXIII Посмотреть сообщение
C++
1
while(i>>1)
не подойдет, при i=1 произойдет выход из цикла
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.07.2013, 15:55 16
Цитата Сообщение от SatanaXIII Посмотреть сообщение
while(i>>1)
при i==1 не выполнится.
0
Почетный модератор
Эксперт С++
5845 / 2855 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
09.07.2013, 15:58 17
Цитата Сообщение от Thinker Посмотреть сообщение
при i=1 произойдет
Цитата Сообщение от Tulosba Посмотреть сообщение
при i==1 не выполнится
А и черт с ним.
0
Tulosba
09.07.2013, 16:08     Оператор while
  #18

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2013, 16:08

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

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

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

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

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

При попытке добавить оператор else, появляется оператор "Ожидался оператор"
Здравствуйте, помогите пожалуйста. У меня есть программа, которая решает квадратные уравнения. Но...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru