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

cin получил char вместо double и while зациклился. Почему? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверить 4 задачи http://www.cyberforum.ru/cpp-beginners/thread650413.html
Пишу не себе, а девушке. Сам немного знаком с Делфи и MQL . Решения вроде бы правильные. Проверьте пожалуйста. Просто у меня не на чем. 1. Заданы числа a , b . Проверить, одного ли знака эти числа #include <iostream.h> #include <conio.h> void main() { int a,b; cout<<"a=";
C++ Не изменяет запись В общем... Не могу разобраться, почему 4-ая(find) функция не меняет данные...Помогите, пожалуйсто.) #include <stdio.h> #include <conio.h> #include <string.h> #include <Windows.h> struct tov {char name; float c; int kol;} t1; void input(FILE *); // создание нового файла void print(FILE *); // просмотр файла http://www.cyberforum.ru/cpp-beginners/thread650405.html
C++ <iostream> в каких случаях используется?
Что такое <iostream> расскажите о нем, для чего он используется.
начать отладку C++
Здравствуйте! Скажите пожалуйста, почему в этом коде system("pause") не работает??? #include "stdafx.h" #include <stdio.h> #include <math.h> int main(void) { double result; double x = 0.5; result = cos(x); printf("Косинус числа %lf – %lf\n", x, result);
C++ В составе программы описать функцию http://www.cyberforum.ru/cpp-beginners/thread650383.html
1.В составе программы описать функцию, которая формирует список М1 – копию списка М и список М2, представляющий собой ”перевернутый” список М. 2.Дана матрица 7х9 вещественного типа. Создать одномерный массив, содержащий элементы матрицы, меньшие среднего арифметического значения элементов матрицы (Fn1). Для созданного массива определить индекс минимального элемента и индекс максимального...
C++ Как реализовать таблицу? Всем Доброго времени суток. Как сделать таблицу в с++ ? Заранее спасибо!) подробнее

Показать сообщение отдельно
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
11.09.2012, 22:46     cin получил char вместо double и while зациклился. Почему?
После того как были введены данные не соответствующие заданному формату, в состоянии потока устанавливается failbit, который свидетельствует о том, что в потоке произошла ошибка форматирования, но символы при этом не теряются. Обычно такую ошибку можно исправить:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
int main()
{
    double jupiter_age = 0.0;
    char q = 'n';
 
    while(q != 'y')
    {
        cout << "Enter Jupiter age : ";
        cin >> jupiter_age;
        if(cin.fail())
        {
            cout<<"Bad value entered!\n";
            cin.clear();
            cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
            continue;
        }
        cout << jupiter_age << " Jupiter's ages is " << jupiter_age * 12.0 << " Earth ages\n";      
        cout << "Exit? y/n :";
        cin >> q;
        cout << endl;
    }
 
    return 0;
}
 
Текущее время: 20:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru