Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2012, 23:47   #1
NeoX_2011
Пользователь
 
Регистрация: 20.11.2011
Сообщений: 25
По умолчанию C# обработка исключений

Проблема вобщем такая, задача возвести в 10 степень введенное с клавиатуры число, имеется вот этот код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            double A;
            Console.Write("Введите A:");
            A = double.Parse(Console.ReadLine());
            
            double B = Math.Pow(A,3)*Math.Pow(A,2)*Math.Pow(A,3)*Math.Pow(A,2);
            
            Console.WriteLine(" A в десятой = "+ B);
            Console.Write("\nДля выхода из программы нажмите [Enter]:");
            string anykey = Console.ReadLine();

        }
    }
}
Нужно сделать так, чтобы выводилось сообщение о том, что введено не корректное число, при попытке ввести вместо числа, какой либо другой символ. Делаю так:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            double A;
            Console.Write("Введите A:");
              try { Console.Write("Введите A:");}
                catch (FormatException) {Console.WriteLine("Не корректное число");}

            A = double.Parse(Console.ReadLine());
           
        double B = Math.Pow(A,3)*Math.Pow(A,2)*Math.Pow(A,3)*Math.Pow(A,2);
            Console.WriteLine(" A в десятой = "+ B);
            Console.Write("\nДля выхода из программы нажмите [Enter]:");
            string anykey = Console.ReadLine();

        }
    }
    }
Но ничего не выводит, что не так?
NeoX_2011 вне форума Ответить с цитированием
Старый 18.03.2012, 02:40   #2
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace consoleCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            double A = -999;

            try
            {
                Console.Write("Введите A: "); 
                A = double.Parse(Console.ReadLine());
            }
            catch (FormatException)
            {
                Console.WriteLine("Не корректное число");
                Console.ReadKey(true);
                return;
            }
            double B = Math.Pow(A, 3) * Math.Pow(A, 2) * Math.Pow(A, 3) * Math.Pow(A, 2);
            Console.WriteLine("A в десятой = " + B);
            Console.Write("\nДля выхода из программы нажмите [Enter]:");
            Console.ReadLine();
        }
    }
}
rUs_LAN вне форума Ответить с цитированием
Старый 18.03.2012, 19:50   #3
NeoX_2011
Пользователь
 
Регистрация: 20.11.2011
Сообщений: 25
По умолчанию

Почему-то, когда я хочу сделать чтобы выводилось сообщение что на ноль не делят, он мне выводит, что результат деления на ноль, это бесконечность
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication24
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Console.Write("Введите A: ");
                double A = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите B: ");
                double B = Convert.ToInt32(Console.ReadLine());
                double C = Math.Pow((A / B), 10);
                Console.WriteLine("(A/B) в десятой = " + C);
                Console.ReadLine();
                
            }
            catch (DivideByZeroException)
            {
                Console.WriteLine("Ошибка: деление на ноль");
                Console.ReadLine();
            }
            catch (FormatException)
            {
                Console.WriteLine("Ошибка: Введите цифры");
                Console.ReadLine();
            }
           
        }
    }
}
NeoX_2011 вне форума Ответить с цитированием
Старый 19.03.2012, 01:04   #4
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

msdn
Согласно правилам арифметики IEEE 754 результатом деление значения с плавающей запятой на нуль может быть плюс бесконечность, минус бесконечность или нечисловое значение (NaN). Операции с плавающей запятой не генерируют исключений.

я б делал так.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication24
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {

                double a, b, c;

                Console.Write("Input a: \t");
                a = double.Parse(Console.ReadLine());

                Console.Write("Input b: \t");
                b = double.Parse(Console.ReadLine());

                if (b == 0) throw new DivideByZeroException();

                c = a / b;
                c = Math.Pow(c, 10);

                Console.WriteLine("\n({0} / {1}) ^ 10 = {2}", a, b, c);

                Console.ReadKey();
            }
            catch (FormatException)
            {
                Console.WriteLine("FormatException");
                Console.ReadKey(true);
                return;
            }
            catch (DivideByZeroException)
            {

                Console.WriteLine("DivideByZeroException");
                Console.ReadKey(true);
                return;
            }            
        }
    }
}
rUs_LAN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка исключений Ckomoroh Общие вопросы Delphi 6 21.03.2011 08:52
обработка исключений user666 Помощь студентам 36 27.08.2010 18:00
Обработка исключений _-Re@l-_ Общие вопросы Delphi 3 17.06.2010 08:53
обработка исключений scray PHP 3 15.05.2010 15:02
Обработка исключений try... except Kati Помощь студентам 5 07.03.2010 10:18