Не понимаю, что случается, если
b и
c равны нулю —
d будет тоже ноль, а корень из нуля нормально себе вычисляется. Отдельной обработки для этого не нужно! Разве что проверка
d >= 0 у вас запоздала — надо бы это делать до попытки вычисления корня из
d.
Ещё совет: объявляйте
d там, где присваиваете ему значение в первый раз — здесь это всегда происходит в одном и том же месте всего один раз, так что альтернатива — объявлять где-то наверху — не востребована. Так при чтении сразу видно тип, и не надо держать в голове
d, пока чтение не дошло до неё.
Ну и раз вы выбрали метод
Parse, кидающий исключение при некорректном параметре, вы тогда и обрабатывайте исключение, иначе программа свалится с непонятным для пользователя сообщением. Лучше, как
Progger посоветовал, всё же взять
TryParse.
Напоследок, C# — не какой-то редкий язык
и форумная подсветка синтаксиса его знает, так что код на C# вкладывайте лучше в
[syntax lang="csharp"][/syntax] (можно просто выбрать этот язык из списка «Подсветка синтаксиса» над полем ответа, и всё само вставится). Получится удобочитаемее!
-- Вт сен 09, 2014 22:49:49 --Дальше.
Можно заметить, что одинаковые куски кода повторяются. Три раза — уже явный повод для рефакторинга, так что стоит, когда вы изучите массивы, вместо отдельных коэффициентов завести массив и вводить их значения в цикле). Если раньше вы изучите методы, можно до этого добавить статический метод, возвращающий
double, разобрав строку, введённую от пользователя. Кроме того, можно будет заставлять его делать это до тех пор, пока не введёт число. Тут тоже цикл, только другой.
Косметическая деталь: если операторы внутри вашего
if писать на отдельной строке, это сделает удобным добавление новых операторов, если это в будущем пригодится (раз скобка, два скобка, и никаких лишних движений. А некоторые даже однооператорные тела сразу в скобки берут, но последнее уже больше дело вкуса, чем первое).
Косметическая деталь №2: я бы поставил пробелы после двоеточия внутри строк —
"Введите значение a: ", например. (Понятно, для чего? Текст в консоли будет выглядеть не так:
> Введите значение a:23
> Введите значение b:-7.8
> Введите значение c:␣,
а так:
> Введите значение a: 23
> Введите значение b: -7.8
> Введите значение c: ␣)
Кстати, про объявление
d я написал, а про строки забыл. С ними аналогично. (Да и рефакторингу повторных кусков в цикл это поможет — опять же меньше переделывать.)
Вы неплохо выбрали задачу: улучшать её можно достаточно долго, пока вы будете изучать всё новые вещи!
-- Вт сен 09, 2014 22:54:01 --Посыпьте мне голову: там же
WriteLine! Совет с пробелами бессмыслен.
-- Вт сен 09, 2014 23:09:49 --(Хотя, по мне, при вводе однострочных вещей лучше вводить на той же строке, что и prompt.)