Berkyt
1

Try-catch в проверке существования треугольника

20.05.2012, 23:33. Показов 9023. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю статический метод который проверяет существует ли треугольник с заданными сторонами, метод возвращает булевские значения в зависимости от того существует ли треугольник или нет.
Не получается сделать исключения когда хоть одна из заданных сторон <= 0.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static public bool Triangle(double a, double b, double c)
        {
            try
            {
                if (a > 0 && b > 0 && c > 0)
                {
                    if (a + b <= c || a + c <= b || b + c <= a)
                        return false;
                    else
                        return true;
                }
                else { throw Exception(string.Format("Ошибка!!!")); }
            }
            catch
            {
               Console.WriteLine("Ошибка");
            }
Помогите правильно настроить исключение.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2012, 23:33
Ответы с готовыми решениями:

Как работает try catch на примере условий существования треугольника
еще один банальный вопрос о том как работает try catch на примере условий существования...

Ошибка при проверке существования файла (VBS)
Здравствуйте, у меня проблема: есть файл, в который я пишу логи своего скрипта. У данного файла...

Проверка существования треугольника
program function trg(x,y,z:real):boolean; begin trg:=(x+y&gt;z)and(x+z&gt;y)and(y+z&gt;x) end;...

Возможность существования треугольника
Написать программу, которая для заданных координат трех точек определяет возможность существования...

6
14 / 14 / 0
Регистрация: 09.12.2009
Сообщений: 44
21.05.2012, 00:43 2
Если я вас правильно понял то это должно быть что-то типа этого.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static public bool Triangle(double a, double b, double c)
        {
            try
            {
                if (a > 0 && b > 0 && c > 0)
                {
                    if (a + b <= c || a + c <= b || b + c <= a)
                        throw new ArgumentException("bla-bla");
                    else
                        return true;
                }
                else {
                     throw new ArgumentException("Arguments must be greater then zero.");
                }
            }
            catch (ArgumentException e)
            {
               Console.WriteLine(e.Message);
            }
1
Berkyt
21.05.2012, 10:24 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
       static public bool Triangle(double a, double b, double c)
        {
            try
            {
                if (a > 0 && b > 0 && c > 0)
                {
                    if (a + b <= c || a + c <= b || b + c <= a)
                        return false;
                    else
                        return true;
                }
                else {throw new ArgumentException("Arguments must be greater then zero."); }
            }
            catch (ArgumentException e)
            {
               Console.WriteLine(e.Message);
            }
        }
Компилятор на этот код выдает ошибку и не компилируется, пишет "не все ветви кода возвращают значения", я так понимаю это относится к if (a > 0 && b > 0 && c > 0) который в случае лжи не возвращает значение.
192 / 147 / 27
Регистрация: 02.05.2011
Сообщений: 467
21.05.2012, 11:52 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static public bool Triangle(double a, double b, double c)
        {
            try
            {
                if (a > 0 && b > 0 && c > 0)
                {
                    if (a + b <= c || a + c <= b || b + c <= a)
                        return false;
                    else
                        return true;
                }
                else {throw new ArgumentException("Arguments must be greater then zero."); }
            }
            catch (ArgumentException e)
            {
               Console.WriteLine(e.Message);
            }
            return false;
        }
P.S. Лучше создайте свой метод в виде функции с одним входом и с одним выходом.
1
0 / 0 / 0
Регистрация: 22.11.2017
Сообщений: 9
24.11.2017, 13:23 5
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
{
    class Triangle
    {
        //public int a;
        //public int b;
        //public int c;
 
 
        public static void Storona()
        {
            Console.WriteLine("Введите сторону а:");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Введите сторону b:");
            int b = int.Parse(Console.ReadLine());
            Console.WriteLine("Введите сторону c:");
            int c = int.Parse(Console.ReadLine());
 
 
        }
        public static void Perimetr(int a, int b, int c)
        {
            double P = a + b + c;
            Console.WriteLine("Периметр равен: {0}", P);
        }
        public static void Square(int a, int b, int c)
        {
            double P = a + b + c;
            double p = P / 2;
            double S = Math.Sqrt(p * (p - a) * (p - b) * (p - c));
            Console.WriteLine("Площадь равна: {0}", S);
        }
        public static void Write(int a, int b, int c)
        {
            Console.WriteLine("Длина стороны а: {0}", a);
            Console.WriteLine("Длина стороны b: {0}", b);
            Console.WriteLine("Длина стороны c: {0}", c);
        }
        public static bool Proverka(int a, int b, int c)
        {
            {
                if (a > 0 && b > 0 && c > 0)
                {
                    if (a + b <= c || a + c <= b || b + c <= a)
                        return false;
                    else
                        return true;
                }
                else
                    return false;
            }
        }
    }
}
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
 class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int b = 0;
            int c = 0;
 
            Triangle.Storona();
            Triangle.Proverka (a, b, c);
            {
                if (true)
                {
                    Triangle.Perimetr(a, b, c);
                    Triangle.Square(a, b, c);
                    Triangle.Write(a, b, c);
                }
                else
                {
                    Console.WriteLine("Недопустимые значения сторон!");
                }
            }
            Console.ReadKey();
        }
    }
}
как передавать значения??
0
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
24.11.2017, 13:55 6
Вот как вариант

Main:
Кликните здесь для просмотра всего текста

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
class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int b = 0;
            int c = 0;
 
            Triangle.Storona(ref a, ref b, ref c);
            
            
                if (Triangle.Proverka (a, b, c))
                {
                    Triangle.Perimetr(a, b, c);
                    Triangle.Square(a, b, c);
                    Triangle.Write(a, b, c);
                }
                else
                {
                    Console.WriteLine("Недопустимые значения сторон!");
                }
            
            Console.ReadKey();
        }
    }
}

Triangle:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
//....
        public static void Storona(ref a, ref b, ref c)
        {
            Console.WriteLine("Введите сторону а:");
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("Введите сторону b:");
            b = int.Parse(Console.ReadLine());
            Console.WriteLine("Введите сторону c:");
            c = int.Parse(Console.ReadLine());
 
        }
//...
1
0 / 0 / 0
Регистрация: 22.11.2017
Сообщений: 9
24.11.2017, 13:58 7
вот не могу понять эту логику(связать классы, методы).
0
24.11.2017, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2017, 13:58
Помогаю со студенческими работами здесь

Функция проверки существования треугольника
Помогите пожалуйста написать функцию проверки существования треугольника

Проверка условия существования треугольника
нужно написать программу Даны 3 числа, определить могут ли эти числа являться сторонами...

Возможность существования треугольника по сторонам
Определить возможность существования треугольника по сторонам. Треугольник существует только...

Проверка условия существования треугольника
Напишите программу пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru