Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27

Работа с переменными

22.12.2017, 09:57. Показов 1052. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Скажите, пожалуйста, нужно выполнить следующее задание. Даны три переменных x, y, z. Нужно вывести минимальное, среднее и максимальное значение. Вот мой код, но он не работает((
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
public static void Main()
    {
        int max;
        int min;
        int mid;
        int x = 15;
        int y = 16;
        int z = 17;
        if(x>y)
        {
            if(x>z)
            {
                max = z;
            }
            else
            {
                mid = x;
                min = y;
            }
        }
        else
        {
            if(y>z)
            {
                max= y;
            }
            else
            {
                mid = y;
                min = x;
                max = z;
            }
        }
        
        Console.WriteLine(min);
                 Console.WriteLine(mid);
                Console.WriteLine(max);
    }
Вы водится ошибка Use of unassigned local variable 'min'
Use of unassigned local variable 'mid'
Use of unassigned local variable 'max'
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2017, 09:57
Ответы с готовыми решениями:

Работа с переменными
Здравствуйте, помогите пожалуйста решить задачку, дано: Сделать программу,которая просит ввести цифру и потом: 1)вычисляет результат из...

Работа с глобальными переменными
Всем привет. Подскажите, пожалуйста, допустим у меня есть много классов в программе, в каких то глобальных переменных должны храниться...

Работа с переменными при многопоточности
Всем привет. Недавно начал работать с много поточностью и при работе с большими ресурсами (такие как List) я использую конструкцию...

10
12 / 12 / 5
Регистрация: 31.10.2015
Сообщений: 39
22.12.2017, 10:05
присвойте данным переменным значения

C#
1
2
3
  int max=0;
            int min=0;
            int mid=0;
1
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27
22.12.2017, 10:09  [ТС]
Спасибо большое. А почему нельзя была как я написал?
0
12 / 12 / 5
Регистрация: 31.10.2015
Сообщений: 39
22.12.2017, 10:15
я сам начинающий, возможно поправят гуру, но как я это вижу:
компилятор не может быть уверен, что вы где-то в цикле присвоите значения этим переменным. Он видит - объявили, но не присвоили значение переменным, а потом просите вывести их значение.
1
16 / 16 / 9
Регистрация: 13.12.2011
Сообщений: 64
22.12.2017, 10:20
Скорее всего это была не ошибка, а предупреждение. При определении переменной ей присваивается адрес, в котором уже может содержаться какое-либо значение и компилятор предупреждает об этом, чтобы в дальнейшем не возникло непредвиденных ошибок. Например, если написать
C#
1
2
3
int sum;
sum+=20;
Console.Write(sum);
то при выводе на консоль Вы вполне можете получить не то, что ожидали.
1
12 / 12 / 5
Регистрация: 31.10.2015
Сообщений: 39
22.12.2017, 10:27
Вот как тут объяснено:

Local variables aren't initialized. You have to manually initialize them.

Members are initialized, for example:
C#
1
2
3
4
5
public class X
{
    private int _tmpCnt; // This WILL initialize to zero
    ...
}
But local variables are not:
C#
1
2
3
4
5
6
public static void SomeMethod()
{
    int tmpCnt;  // This is not initialized and must be assigned before used.
 
    ...
}
So your code must be:
Code
1
2
3
int tmpCnt = 0;  
if (name == "Dude")  
   tmpCnt++;
So the long and the short of it is, members are initialized, locals are not. That is why you get the compiler error.
Т.е. локальные переменные не инициализируются значениями по-умолчанию. Т.к. здесь мы объявляем переменную внутри метода класса, то и получаем ошибку.

Вот так будет работать:
Кликните здесь для просмотра всего текста
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
class Program
    {
       static int max;
       static int min;
       static int mid;
 
        static void Main(string[] args)
        {
          
            int x = 15;
            int y = 16;
            int z = 17;
            if (x > y)
            {
                if (x > z)
                {
                    max = z;
                }
                else
                {
                    mid = x;
                    min = y;
                }
            }
            else
            {
                if (y > z)
                {
                    max = y;
                }
                else
                {
                    mid = y;
                    min = x;
                    max = z;
                }
            }
 
            
            Console.WriteLine(min);
            Console.WriteLine(mid);
            Console.WriteLine(max);
            Console.ReadLine();
        }
    }
0
16 / 16 / 9
Регистрация: 13.12.2011
Сообщений: 64
22.12.2017, 10:38
Работать будет, но так лучше не делать)
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
22.12.2017, 10:43
Компилятор считает это ошибкой, по той причине, что инициализация ваших переменных происходит внутри блоков if-else. Нет никакой уверенности, что данные переменные будут инициализированы, поэтому компилятор требует явной инициализации. Как выше указал Pawka35 - присвойте переменным начальные значения.
0
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
22.12.2017, 11:45
Еще можно реализовать через тернарный оператор.

Не по теме:

Мне он очень нравится. Но, как сказал один человек, если вы будете им злоупотреблять, то не удивляйтесь, если в один прекрасный день ваш коллега даст вам вислом по спине.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        static void Main()
        {
            int max = 0, min = 0, mid = 0;
            int x = 15, y = 16, z = 17;
 
            max = (x > y & x > z) ? x : (y > x & y > z) ? y : z;
            min = (x < y & x < z) ? x : (y < x & y < z) ? y : z;
            mid = (x != max & x != min) ? x : (y != max & y != min) ? y : z;
 
            Console.WriteLine($"max: {max}");
            Console.WriteLine($"mid: {mid}");
            Console.WriteLine($"min: {min}");
 
            Console.ReadKey();
        }
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
22.12.2017, 11:56
willow300, так вы плавно подвели к теме области видимости переменных. В этом случае можно было обойтись без начальной инициализации: int max, min, mid;

Не по теме:

А по поводу тернарных операторов вам правду сказали :) Все что длиннее ? () : () тяжело воспринимать, хотя в данном случае все прозрачно

0
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
22.12.2017, 13:01
Цитата Сообщение от Bespridelschic Посмотреть сообщение
В этом случае можно было обойтись без начальной инициализации: int max, min, mid;
Согласен, погорячился) Наверно, даже лучше было бы объявить эти переменные сразу в выражении.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2017, 13:01
Помогаю со студенческими работами здесь

Работа с переменными
Добрый день! Пишу программу и в ней мне необходимо работать с переменными и хранить в них данные до отправки на сервер. Но программа...

Работа с переменными UserControl
Здравствуйте, я имею 2 UserControl-а (rollate_tables.cs и game_panel.cs), на game_panel.cs есть метка Label1. Как я могу с формы...

Работа с текстовыми переменными
Доброго времени суток, столкнулся с такой проблемой: Есть у меня такой скрипт: 'LANGUAGE=RUS 'SERVERNAME=ms-cms001 Public...

Работа с переменными DateTime
есть две переменные типа DateTime в которых методом DateTime.Now заносится в разные промежутки времени значения, как мне найти разницу...

Работа с переменными
Доброе время суток. Есть Texbox (в который пользователь пишит название папки которую нужно открыть) потом нажимает на Button. После...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru