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

Обработка исключений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Лежит ли точка в круге и треугольнике http://www.cyberforum.ru/cpp-beginners/thread22972.html
Даны круг и треугольник на плоскости.Кординаты вводятся с клавиатуры.Даны кординаты точки. Узнать лежит ли точка в области пересечения 2ух фигур
C++ Чтобы звездочка бегала по краям экрана Доброго времени суток, уважаемые программисты! Нужна помощь. Написал программу на Borland C++, которая заполняет экран ASCII символом * (звездочка), вся проблема в том что она заполняет экран от начала до конца а я хочу улучшить программу чтобы звездочка бегала по краям экрана притом чтобы не было видно предыдущую. Не могу понять как это сделать. Вот нынешний код: #include<stdio.h>... http://www.cyberforum.ru/cpp-beginners/thread22971.html
C++ надо программу, в которой задача состоит в том, чтобы найти точку на двумерной сетке
Точка, безусловно, определяется координатами. Сетка должна иметь определенный размер, например, от 100 до 100 меш. Программа должна в начале своей деятельности выбирать точку на сетке(случайно), и задача пользователя будет,выбирать точку на сетке координат. В ответ, программа должна найти расстояние между точками и вывести на екран. Ето будет проиcходить до тех пор пока пользователь не угадает...
Классы в Turbo C/Borland C C++
Класс для объекта-вектора, что задается координатами концов. Создать операции сложения и отнимания. Можете написать как должен выглядеть этот класс?
C++ Сортировка массива структур http://www.cyberforum.ru/cpp-beginners/thread22944.html
Имеется массив структур, который необходимо отсортировать по числовому ключу. Я написал код, но он не работает, поэтому просьба указать на ошибку. #include <stdio.h> #include <stdlib.h> int i; typedef struct {
C++ По матрице и заданному числу построить вектор По матрице размерностью m*n и заданному числу построить вектор, элемент которого равен 1, если наибольший элемент соответствующей строки матрицы не меньше заданного числа, и 0 - в остальных случаях. Определить моду для элемента вектора. Считать m<=10, n<=20. Вот тут тоже спрашивали http://www.cyberforum.ru/cpp/thread18317.html , но так и не помогли) подробнее

Показать сообщение отдельно
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782

Обработка исключений - C++

11.02.2009, 01:33. Просмотров 2386. Ответов 3
Метки (Все метки)

Как сделать обработку исключения так, чтобы, если, например, вводим количество координат больше, чем можно, программа предлагала, или выйти, или попробовать ввести ещё раз.
Я пробовал с помощью switch, но там если ввести первый раз неправильно, то он запускается, если ещё раз неправильно, то уже обработка исключения не идёт, то есть, нужно под каждый неправильный ввод писать новый ввод объекта и обработку для него try { cin >> … } catch () {..}
Можно ли как-нибудь по-другому, не используя при этом, оператор goto?

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
using namespace std;
int const nmax = 100;
class Vector
{
public:
    Vector ();              
    Vector (int, int);
    ~Vector ();
    void SetItsAmount (int);
    void SetItsCoordinates (int , int); 
    int GetItsAmount () const;
    int GetItsCoordinates (int) const;
    
    class xTooBig {};
    class xErrorInput {};
    class xZero {};
    
private:
    int itsAmount;          
    int itsCoordinates [nmax];          
      friend istream &operator>> (istream &, Vector &);     
    friend ostream &operator<< (ostream &, const Vector &); 
};
 
Vector::Vector ()
{
}
Vector::Vector (int value, int amount)
{
    int i;
    for (i = 0; i < nmax; i++)
        itsCoordinates [i] = value;
    itsAmount = amount;
}
Vector::~Vector ()
{
}
void Vector::SetItsAmount (int amount)
{
    itsAmount = amount;
}
void Vector::SetItsCoordinates (int value, int i)
{
    itsCoordinates [i] = value;
}
int Vector::GetItsAmount () const
{
    return itsAmount;
}
int Vector::GetItsCoordinates (int i) const
{
    return itsCoordinates [i];
}
istream &operator>> (istream & input, Vector & rhs)
{
    int value;
    cout << "Введите количество координат\n";
    input >> rhs.itsAmount;
    if (rhs.itsAmount > nmax)
        throw Vector::xTooBig ();
    if (rhs.itsAmount == 0)
        throw Vector::xZero ();
    for (int i = 0; i < rhs.GetItsAmount (); i++)
    {
        cout << "Координата " << i + 1 << " = ";
        if (!(input >> value))
            throw Vector::xErrorInput ();
        rhs.SetItsCoordinates (value, i);
    }
    return input;
}
ostream &operator<< (ostream & output, const Vector & rhs)
{
    int i;
    for (i = 0; i < rhs.GetItsAmount (); i++)
        output << "Координата " << i + 1 
        << " = " << rhs.GetItsCoordinates (i) << endl;
    return output;
}
void PrintAboutError ()
{
    cout << "Произошла ошибка\n";
    exit (1);
}
int main ()
{
    set_terminate (PrintAboutError);
    setlocale (LC_ALL,".1251");
    Vector Vector1 (0, 0), Vector2 (0,0), Vector3 (0, 0);
 
    try
    {
        cout << "Первый вектор:\n";
        cin >> Vector1;
        cout << endl;
 
        cout << "Второй вектор:\n";
        cin >> Vector2;
        cout << endl;
    }
    catch (Vector::xTooBig)
    {
        cout << "Введено слишком большое количество координат\n";
        return 0;
    
    }
    catch (Vector::xErrorInput)
    {
        cout << "Ошибка ввода значения координаты\n";
        return 0;
    }
    catch (Vector::xZero)
    {
        cout << "Нет смысла работать с вектором без координат\n";
        return 0;
    }
    catch (...)
    {
        cout << "Произошла ошибка\n";
        return 0;
    }
 
    cout << Vector1 << endl << Vector2 << endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru