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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2013, 20:35   #1
paul_8
 
Регистрация: 07.10.2013
Сообщений: 6
По умолчанию НЕ могу понять в чем проблема моего кода

Код написан для вычисления функции, при этом учел вводи только чисел и деление на 0
ПРикол в том, что результат постоянно возвращается с параметрами 1, 2, 3 которые заданы в начале
Цитата:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new System.DivideByZeroException();
return x / y;
}

static void SafeInput(double x)
{
int n = 0;
for (int i = 0; i == n; i++)
{
try
{
if (x == 1) Console.WriteLine("Введiть a");
if (x == 2) Console.WriteLine("Введiть b");
if (x == 3) Console.WriteLine("Введiть c");
x = Convert.ToDouble(Console.ReadLine() );
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine("Спробуйте ввести значення ще раз");
n++;
}
}
}

static void Main(string[] args)
{
try
{

double a=1, b=2, c=3, d=0;
SafeInput(a);
SafeInput(b);
SafeInput(c);


d = SafeDivision(Math.Sin(2 * a), (a - 3)) + SafeDivision(Math.Atan(b), c);
Console.WriteLine("Значення функцii: {0}", d);
Console.ReadLine();
}
catch (DivideByZeroException)
{
Console.WriteLine("Дiлення на 0 неможливе");
}
Console.ReadLine();
}
}
}
paul_8 вне форума Ответить с цитированием
Старый 13.10.2013, 20:43   #2
paul_8
 
Регистрация: 07.10.2013
Сообщений: 6
По умолчанию

кажется я сам понял в чем дело, неправильно написал процедуру, а именно код с оператором if
paul_8 вне форума Ответить с цитированием
Старый 13.10.2013, 20:44   #3
paul_8
 
Регистрация: 07.10.2013
Сообщений: 6
По умолчанию

а нет( все же не понимаю в чем дело
paul_8 вне форума Ответить с цитированием
Старый 13.10.2013, 21:04   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

во первых, надо выбросить SafeDivision
во вторых разобраться с передачей параметров, какие бывают и чем отличаются
в 3 правильно отредактировать пост
eval вне форума Ответить с цитированием
Старый 13.10.2013, 21:09   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

1) Переменные вещественного типа (в т.ч. double) нельзя просто так взять и сравнить с другим числом/переменной на равенство.
Например, 1.0/10.0 вряд ли будет равно 0.1, ибо погрешность
Код:
static void SafeInput(double x)
{
...
if (x == 1)
Сравнение корректно записать так:
Код:
if (Math.Abs(x) - 1 < EPS)
где EPS - достаточно малое число. 0.0001 например

2) результат постоянно возвращается с параметрами 1, 2, 3

static void SafeInput(double x)
заменить на
static void SafeInput(ref double x)

зачем? http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 13.10.2013 в 21:29.
Luuzuk вне форума Ответить с цитированием
Старый 13.10.2013, 23:06   #6
paul_8
 
Регистрация: 07.10.2013
Сообщений: 6
По умолчанию Большое спасибо

В первую очередь на счет "ref" реально помогло, все работает.. на счет условий с == с Вами согласен, но странным образом программа работает как
и при целых числах. Спасибо большое, Вы очень помогли
paul_8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу понять в чем ошибка моего кода FreeCat Общие вопросы C/C++ 11 09.06.2012 03:13
Не могу понять в чем проблема ZoomHz Общие вопросы C/C++ 3 07.03.2012 19:13
Не могу понять в чем проблема. Демик Помощь студентам 7 01.02.2011 19:16
Не могу понять в чем проблема BaUruk Общие вопросы C/C++ 3 12.10.2009 10:43
НЕ могу понять в чем проблема! KNatalia Microsoft Office Excel 2 18.08.2009 02:03