float a1 = Convert.ToByte(TextBox4.Text);//зарплата 1-го сотрудника
float b1 = Convert.ToByte(TextBox5.Text);//количество детей 1-го сотрудника
float a2 = Convert.ToByte(TextBox7.Text);//зарплата 2-го сотрудника
float b2 = Convert.ToByte(TextBox8.Text);//количество детей 2-го сотрудника
float a3 = Convert.ToByte(TextBox10.Text);//зарплата 3-го сотрудника
float b3 = Convert.ToByte(TextBox11.Text);//количество детей 3-го сотрудника
float a4 = Convert.ToByte(TextBox13.Text);//зарплата 4-го сотрудника
float b4 = Convert.ToByte(TextBox14.Text);//количество детей 4-го сотрудника
float a5 = Convert.ToByte(TextBox16.Text);//зарплата 5-го сотрудника
float b5 = Convert.ToByte(TextBox17.Text);//количество детей 5-го сотрудника
//рассчитываю доход на человека
float d1 = a1 / (b1 + 1);
float d2 = a2 / (b2 + 1);
float d3 = a3 / (b3 + 1);
float d4 = a4 / (b4 + 1);
float d5 = a5 / (b5 + 1);
float tmp;
//пытаюсь отсортировать список сотрудников методом пузырька
float[] Array = new float[d1, d2, d3, d4, d5];
for (int i = 0; i < Array.Length; ++i)
{
for (int j = 0; j < Array.Length - 1; ++j)
{
if (Array[j] > Array[j + 1])
{
tmp = Array[j];
Array[j] = Array[j + 1];
Array[j + 1] = tmp;
}
}
}
//вывожу отсортированный список
Label27.Text = "У сотрудника №" + Array[0] + "доход в семье на человека состовляет:" + d1;
Label28.Text = "У сотрудника №" + Array[1] + "доход в семье на человека состовляет:" + d2;
Label29.Text = "У сотрудника №" + Array[2] + "доход в семье на человека состовляет:" + d3;
Label30.Text = "У сотрудника №" + Array[3] + "доход в семье на человека состовляет:" + d4;
Label31.Text = "У сотрудника №" + Array[4] + "доход в семье на человека состовляет:" + d5;
Метод пузырька С#
Пользователь пишет в текст боксы фамилии, зарплату и количество детей сотрудников. Я рассчитываю минимальный доход на человека, который записывается в переменные d1...d5 и создаю из этих переменных массив, затем пытаюсь отсортировать его по методу пузырька.
Код:
Но вылезает ошибка:Неявное преобразование типа 'float' в 'int' невозможно. Существует явное преобразование (возможно, отсутствует приведение)
Подскажите пожалуйста из-за чего она может возникать?
Код:
float a1 = Convert.ToByte(TextBox4.Text);
[/QUOTE]
Вот из-за этого (и подобных строк) и возникает. Convert.ToByte() возвращает целочисленное значение, которое вы пытаетесь присвоить переменной типа float. Замените Convert.ToByte() на Convert.ToDouble().
Цитата: Alexander92
Вот из-за этого (и подобных строк) и возникает. Convert.ToByte() возвращает целочисленное значение, которое вы пытаетесь присвоить переменной типа float. Замените Convert.ToByte() на Convert.ToDouble().
Я заменил и теперь пишет вот это: Неявное преобразование типа 'double' в 'float' невозможно. Существует явное преобразование (возможно, отсутствует приведение)
Почти ничего не изменилось(((
Цитата: Dinar1623
Но вылезает ошибка:Неявное преобразование типа 'float' в 'int' невозможно. Существует явное преобразование (возможно, отсутствует приведение)
А разве компилятор утаивает от вас номер строки с ошибкой?
Цитата: Dinar1623
Подскажите пожалуйста из-за чего она может возникать?
Из-за того, что кто-то невнимателен и не желает читать книжки.
Исправьте
Код:
float[] Array = new float[d1, d2, d3, d4, d5];
на
Код:
float[] Array = new float[] { d1, d2, d3, d4, d5 };
Код:
float a1 = (float)Convert.ToDouble(TextBox4.Text);
Цитата: Alexander92
hardcase, согласен, но первая ошибка раньше вылазит, все-таки. Если то исправление, о котором я говорил, изменяет наблюдаемый эффект, значит, там тоже глюк есть. Dinar1623, приведите типы явно.
Код:
float a1 = (float)Convert.ToDouble(TextBox4.Text);
В C# существует неявное приведение интегральных типов в типы с плавающей точкой. Потому ошибка не может возникать в коде ТС-а на строках вида:
Код:
float a1 = Convert.ToByte(TextBox4.Text);
В вашем примере явное приведение типов нужно, потому как множество значений System.Double мощнее System.Single. Посмотрите внимательно на код ТС-а и осмыслите мой первый ответ.
Спасибо за помощь. Все работает)
Цитата: hardcase
В C# существует неявное приведение интегральных типов в типы с плавающей точкой. Потому ошибка не может возникать в коде ТС-а на строках вида:
В вашем примере явное приведение типов нужно, потому как множество значений System.Double мощнее System.Single. Посмотрите внимательно на код ТС-а и осмыслите мой первый ответ.
Код:
float a1 = Convert.ToByte(TextBox4.Text);
В вашем примере явное приведение типов нужно, потому как множество значений System.Double мощнее System.Single. Посмотрите внимательно на код ТС-а и осмыслите мой первый ответ.
Ok, согласился. Собственно, я ведь с вашим первом ответом и не спорил.