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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2016, 20:45   #1
nikit00011
Новичок
Джуниор
 
Регистрация: 04.10.2016
Сообщений: 1
По умолчанию C# Использование локальной переменной , которой не присвоено значениe

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

namespace ConsoleApplication1
{
    class Program
    {
        static double LL(double x, double a)
        {
            double l;
            if (x > a)
            {
                double min = a - x;
                if (min > Math.Pow(Math.Sin(x), 3))     min = Math.Pow(Math.Sin(x), 3);
                if (min > Math.Pow(Math.Cos(a * x), 2)) min = Math.Pow(Math.Cos(a * x), 2);
                l = min;
            }
            
            else 
            if (a==x)
            {
                     l=Math.Pow(Math.E,a+x);
            }
             else
                if (a < x)
             {
                    double max = 1;
                    if (max < Math.Sqrt(Math.Abs(x))) max = Math.Sqrt(Math.Abs(x));
                    if (max < Math.Log(Math.Abs(a + x))) max = Math.Log(Math.Abs(a + x));
                    l = max;
             }
             
                
            return l;
            
        }

        static void Main(string[] args)
        {
            double x,a,l;
            Console.WriteLine("Введите значение x    a");
            x = Convert.ToDouble(Console.ReadLine());
            a = Convert.ToDouble(Console.ReadLine());
            l = LL(x,a);
            Console.WriteLine("l=" + l);
            Console.ReadLine();



        }
    }
}
Помогите исправить ошибку. Ошибка выделена красным а название в заголовке. Уже второй день не могу найти ошибку

Последний раз редактировалось Alex11223; 04.10.2016 в 20:50.
nikit00011 вне форума Ответить с цитированием
Старый 04.10.2016, 20:53   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если ни один из if'ов не сработает, то в эту переменную ничего не присвоится.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2016, 20:55   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Код:
double l;
Код:
if (a < x)
             {
             }
В случае else будет неопределена.
p51x вне форума Ответить с цитированием
Старый 06.10.2016, 08:16   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Здесь по смыслу все условия как бы должны покрывать все варианты сравнения, но есть пару но: первое параноя надежность сишарпа, второе - особые случаи, вроде NaN и Infinity. В Вашем учебном случае, понятное дело, всё это ни к чему, поэтому достаточно объявить double l = 0.0; c инициализацией, то бишь.
Заметка: имён переменных l лучше избегать, ибо можно спутать с 1, I, | (а также их вариаций и производных имён переменных), да ещё и при разных шрифтах - вообще чёрт ногу сломит.
phomm вне форума Ответить с цитированием
Старый 06.10.2016, 11:42   #5
armory
Пользователь
 
Аватар для armory
 
Регистрация: 06.10.2016
Сообщений: 37
По умолчанию

а нельзя этот код реализовать через switch вместо if?
будет три кейса:
x > a
x == a
x < a

кстати, я не очень понял, у ТСа в коде прописано
if (x > a)
а потом ниже
else (if a < x)
разве эти два условия не идентичны? a в обоих случаях меньше x
Учусь кодить на C#/Java.
Не ищу готовых решений.
Всегда благодарен вам за помощь.
armory вне форума Ответить с цитированием
Старый 06.10.2016, 11:56   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от armory Посмотреть сообщение
а нельзя этот код реализовать через switch вместо if?
нет


Цитата:
Сообщение от phomm Посмотреть сообщение
поэтому достаточно объявить double l = 0.0; c инициализацией
или заменить последний if на else
или добавить else с выводом ошибки.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[cmake] позвать функцию с параметрами, имя которой содержится в переменной _Bers Общие вопросы C/C++ 0 20.01.2015 23:47
Вытащить месяц из переменной в которой записана дата Lokos PHP 5 27.06.2013 10:55
C#| Ошибка:Использование локальной переменной 'res', которой не присвоено значение (CS0165) Демик Помощь студентам 2 18.12.2011 12:57
Использование IdFTP и IdFTPserver в локальной сети VAM Работа с сетью в Delphi 9 31.10.2011 10:51