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

Не удаётся сбросить ios::failbit - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите, как исправить 1 ошибку в программе? http://www.cyberforum.ru/cpp-beginners/thread1105788.html
#include "stdafx.h" #include <stdio.h> #include <conio.h> double min = 0; /* зовнiшня змiнна */ int main() { FILE * file; char namef; /* ========= прототипи ========= */ void read_print_icx(FILE * ); /* читання i виведення вхiдного файлу */
C++ Найти и вывести на экран последние три числа, которые кратны четырем (4) и не кратны трем (3) Помогите пожалуйста!!:)Нужно доработать программу, чтобы она выводила 3 слагаемые суммы,т.е эти последние 3 числа:) условие ниже. Найти и вывести на экран последние три числа, которые кратны четырем (4) и не кратны трем (3). Числа ищутся в диапазоне от 1 до N (число N задается пользователем). Помимо этого вычислить сумму найденных трёх чисел. В С++ у меня получилось #include "iostream"... http://www.cyberforum.ru/cpp-beginners/thread1105786.html
Использование массивов в качестве аргумента функции C++
Расстояние l от начала координата до точки n-мерного пространства с координатами(x1,x2....xn)...
Добрый день. Подскажите, возможно ли в system задать условие? C++
Добрый день. Подскажите, возможно ли в system задать условие? Например чтобы если a=1 записывал одно, а если a=2 записывал другое. Заранее благодарю. #include <ios> int main(){ system("for /f %a in (input.txt) do set /a /*выполняется условие*/ >output.txt"); }
C++ Вычесть из элементов первого столбца матрицы значение максимального элемента матрицы http://www.cyberforum.ru/cpp-beginners/thread1105716.html
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычесть из элементов первого столбца матрицы значение максимального элемента матрицы; 3) переставить элементы первого столбца в обратном порядке; 4) организовать ввод и вывод матрицы в виде отдельных функций Помогите пожалуйста, а то совсем ничего не выходит Т.т
C++ Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. подробнее

Показать сообщение отдельно
Joe Rixans
0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 5
26.02.2014, 14:55     Не удаётся сбросить ios::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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
list<int> lval;
vector<int> ivec;
int val=0;
cout<<"Введите целочисленные значения: ";
while (true)
{
    cin>>val;
    if (cin.bad())
    {
        cerr<<"Ошибка ввода/вывода. Поток недоступен"<<endl;
        cin.clear(ios::badbit);
        break;
    }
    if (cin.eof())
    {
        cerr<<"Ошибка ввода/вывода. Достигнут конец файла"<<endl;
        cin.clear(ios::eofbit);
        break;
    }
    if (cin.fail())
    {
        cerr<<"Ошибка ввода/вывода. Операция ввода/вывода закончилась неудачей"<<endl;
        cin.clear(ios::failbit);
        break;
    }
    lval.push_back(val);
}
cin.clear();
cout<<"Введите целочисленные значения: ";
while (true)
{
    cin>>val;
    if (cin.bad())
    {
        cerr<<"Ошибка ввода/вывода. Поток недоступен"<<endl;
        cin.clear(ios::badbit);
        break;
    }
    if (cin.eof())
    {
        cerr<<"Ошибка ввода/вывода. Достигнут конец файла"<<endl;
        cin.clear(ios::eofbit);
        break;
    }
    if (cin.fail())
    {
        cerr<<"Ошибка ввода/вывода. Операция ввода/вывода закончилась неудачей"<<endl;
        cin.clear(ios::failbit | ios::eofbit);
        break;
    }
    ivec.push_back(val);
}
По сути дела, здесь никаких ошибок компиляции нет, но есть некая непонятная мне особенность. При вводе цифр, как в следующем, примере выдаёт вот что.

Введите целочисленные значения: 98 98 484 6 ^Z 5 1265 64 652
Ошибка ввода/вывода. Операция ввода/вывода закончилась неудачей
Введите целочисленные значения: Ошибка ввода/вывода. Операция ввода/вывода закончилась неудачей


Выходит так, что lval вполне сносно заполняется, а ivec остаётся пустым.
А теперь вопрос: почему так происходит? Обратите внимание на то что между циклами умышленно ставиться cin.clear(), дабы заострить внимание на проблеме.

Добавлено через 3 часа 37 минут
Я не понимаю, 20 человек посмотрело и ни у кого ни какой идеи не возникло? Или это настолько сложно, что не по адресу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru