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

простая программа, проверяющая вводимое число - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как в файл записать несколько сточек? http://www.cyberforum.ru/cpp-beginners/thread703868.html
Нужно написать программу которая будет записывать в файл ФИО и возраст студента (на каждую новую строчку новый студен). Помогите пожалуйста с кодом.
C++ Определить, симметричен ли массив по многу раз и по-разному подходил к написанию проги(Задан массив из k символов. Определить, симметричен ли он, т. е. читается ли он одинаково слева направо и справа налево.) смотрел решения в интернете..но суть не в этом!!!..сегодня ехал в метро и мне там подсказали довольно интересный способ проверки проги на симметричность(название вроде бы на "ф" начиналось)..а именно сказали, что можно... http://www.cyberforum.ru/cpp-beginners/thread703865.html
решение систему C++
решить систему
Проверить правильность арифметического выражения C++
С++ Проверить правильность арифметического выражения, состоящего из числовых констант, знаков арифметических действий и скобок () и .
C++ разреженная матрица переменной размерности http://www.cyberforum.ru/cpp-beginners/thread703834.html
При компиляции ругается на void Matrix::print() const (100 строчка в matrix.cpp) passing `const Matrix' as `this' argument of `int Matrix::GetElemByXY(int, int)' discards qualifiers Само задание: нужно написать программу в которой реализуется разреженная матрица переменной размерности, ненулевые коэффициенты представлены двусвязным циклическим списком с элементами (x,y,v) – координаты,...
C++ Прога на использование покажчиков Написати програму, яка здійснює введення у вільному форматі одного цілого числа і його переведення з текстового представлення в значення типу int. Функція getint() повинна повертати значення отриманого числа через параметр або сигналізувати значенням , якщо вхідний потік вичерпаний. Значення EOF повертати через оператор return. Знаки - або +, за якими не йде цифра, функція розуміє як неправильне... подробнее

Показать сообщение отдельно
bychevoz
1 / 1 / 0
Регистрация: 16.11.2012
Сообщений: 27
22.11.2012, 05:57     простая программа, проверяющая вводимое число
Цитата Сообщение от time123 Посмотреть сообщение
bychevoz, не совсем понятно, так это значит в буфере остается только первый символ, или что? и объясните пожалуйста на примере как тут исключения сделать
вот код одной из моих лабораторок по с++. нужно считать два параметра, сделать проверку введенных значений и если все хорошо, вычислить значение функции

многие могут сказать что тут слишком все усложнено, но тут показан оень важный аспект обработки исключений, и, вообще ООП

если присмотреться, то можно увидеть что я генерирую исключения класса domain_error. но обработчик обрабатывает исключения класса exception. на самом деле я решил продемонстрировать самому себе работу виртуальных ункций. данном случае, тип исключения определяется на стадии выполнения, а не компилции. не могу точно все это обяснить, но это круто рассказано в книгах.
это мало относится к теме, но мне просто нравится именно такой код

многие предпочитают чтобы параметры скушала переменная string и далее они проанализировались, но мне приятнее делать так. на самом деле - исключения - тема очень глубокая и область ее применения гораздо больше чем просто проверка введенных значений.
просто такова была тема лабораторки и мне это понрвилось

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
#include <iostream>
#include <exception>
#include <math.h>
using namespace std;
 
int main()
{
    double a;
    double x;
    double y;
    while (true)
    {
        try 
        {
            cout<<"input a:";
            cin>>a;
            if (!cin) throw domain_error("Failed input operation"); 
/*когда перегруженный ">>" не может преобразовать поток в переменную, устанавливается соответствующий флаг. флаг можно считать оператором "!" или его вернет функция bool good()*/
            cout<<"input x:";
            cin.ignore(cin.rdbuf()->in_avail());
            cin>>x;
            if (!cin) throw domain_error("Failed input operation");
            if ((x==a)||((2*x+3*a)<0)) throw domain_error("Domain error");
//если а или х не входят в ОДЗ генерируем исключение с соответствующей строкой
            break; 
//если мы достигли конца (т.е. никаких исключений нет, надо выйти из бесконечного цикла)
        }
        catch(exception& ex)
        {
            cout<<ex.what(); //вывели строку переданную в исключение
            cin.clear(); //установили все флаги потока в состояние готовности
            cin.ignore(cin.rdbuf()->in_avail());
 //чистим буфер ввода чтобы можно было использовать cin.get()
        }
        cin.get();
        system("cls");
    }
    cout<<"OK\n";
    y=tan(1/(x-a))-sqrt(2*x+3*a);
    cout<<"y="<<y;
    cin.get();
    cin.get();
}
Добавлено через 10 минут
а насчет буфера, яркий пример: попробуйте
скомпилировать это:

cin>>x;
cin.get();
}//конец функции main()

программа законится сразу после того как вы нажмете энтер хотя, вы же вроде как написали cin.get()
все потому что в буфере остался знак переноса строки , который считается cin.get()'ом
выход который используют все одногруппники и рекомендуют нам наши учителя: писать два сингета
а если пользователь введет не просто число, а через пробел еще какой-то бред?
два сингета не спасут, так как в буфере, осталось еще неизвестное количество символов.
тут на помощь приходит син.игнор(син.рдбуф->ин_эвэйл).

хотя особо умные подключают <conio.h> и исользуют getch() прога весит на десяток килобайт больше изза подключенной библиотеки.
мне кажется, ели подключать библиотеку - так использовать ее.
если я подключи иострим и могу использовать только ее для решения задачи, то зачем мне библиотека "конио" (консоль инпут аутпут)??

я упрекал их в килобайтах, но они мыслят гигагерцами своеих 4хядерных процессоров.
если бы они так же расходовали свои толстые кошельки, как свои процессоры и гигабайты памяяти

я к тому что , а если писать большую программу?
привычка подключать ненужные библиотеки просто ужасная.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru