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

Бесконечный цикл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ константа i в классе комплексных чисел http://www.cyberforum.ru/cpp-beginners/thread391636.html
подскажите пожалуйста как описать константу i в классе комплексных чисел
C++ error LNK2001 Здравствуйте. Visual Studio 2010 выдаёт ошибку error LNK2001. Спомощью MFC Application создаю Edit Control. В классе CDeviceDlg создаю переменную CEDIT Screen. Далее в CDevicesDlg::OnInitDialog() вызываю свою функцию FindDev(),которая не является методом класса, которую описываю в отдельном FIndDev.cpp. В FindDev вызываю CDevicesDlg::m_Screen.SetWindowText(s) для вывода текста. Из-за этой... http://www.cyberforum.ru/cpp-beginners/thread391631.html
помогите исправить ошибку в программе C++
Ошибка в работе программы когда в поиск забиваю человека и нажимаю кнопку поиск прога выдает ошибку и не выполняется в какой строчке ошибка написал красным а саму ошибку вывел картинкой как и внешний вид формы, помогите исправить ошибку пожалуйста #include <vcl.h> #pragma hdrstop #include <io.h> #include "Unit1.h" //---------------------------------------------------------------------------...
Функция с использованием массивов C++
Помогите написать функцию,которая вставляет элементы в монотонно возрастающую последовательность с сохранением сортировки!
C++ Двумерный массив (ЗАдача) http://www.cyberforum.ru/cpp-beginners/thread391578.html
Помогите! Дан двумерный массив (8,8). Найти максимальный элемент среди элементов строк Задачу нужно написать на языке Си
C++ Вычисление и вывод на экран таблицы функций. Кто чем сможет подсказать, и помочь? Вычислить и вывести на экран таблицу функции y=f(x) в интервале с шагом h. Использовать два метода (с применением for и while). Результаты представить в виде таблицы. Таблицу выровнять с помощью функций форматирования cout.width(), cout.precision(). подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
25.11.2011, 16:23     Бесконечный цикл
Цитата Сообщение от Peperovich Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
int main()
{
    int i=0;
    double ea;
    while(i!=-1)
    {
     cout<<"Enter sales result (-1 if enter is end):";
     cin>>i;
     if (i!=-1)
        {                      
                ea=200+i*0.09;
                cout<<"Total:"<<ea<<endl;
        }
    }
    return 0;
}
Суть такая вводим значение, программа вычисляет формулу 200+9% от введенного числа, если ввожу целое значение все норм, но если ввожу с точкой, то начинает бесконечно выводить оба cout.
Какие проблемы? Вводите с запятой!

На самом деле я объясню, что происходит. Целые числа, а вы объявили свою переменную как целочисленную

C++
1
    int i=0;
не могут в себе содержать десятичную точку. Поэтому ввод прекращается, как только в потоке ввода обнаружится недопустимый символ для представления объекта. То есть то, что вы набрали до точки, будет введено в переменной, а далее сканирование ввода остановится. Но тем не менее сам символ точка в потоке ввода остался! Поэтому когда следующий раз у вас выполняется ввод, то оператор ввода снова наталкивается на эту точку, "считывает" все то, что было до нее ( а на самом деле считывать нечего, поэтому он присвоит вашей переменной значение 0), и ввод прекращается. То есть пока какой-нибудь функцией ввода вы не удалите эту точку из входного потока или не пропустите ее, у вас программа зациклется. Либо вводите правильно только целые числа!
 
Текущее время: 01:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru