R
R
Relonir2019-12-11 20:42:15
code review
Relonir, 2019-12-11 20:42:15

What layout is preferred?

I found a couple of solutions for this task:
1. Get the values ​​​​of three integers from the console
2. Choose the largest of the three numbers using if
3. Print to the console
4. Compare for evenness using Switch
5. Check for size < 100 using a quick check
Forgive me that there are as many as 5 pieces of code, but I need to understand for myself how to format the code correctly and disassemble the code already in order to understand everything written there, although most of it is clear to me.
one)

Console.WriteLine("Введите первое число");
int num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите второе число");
int num2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите третье число");
int num3 = Convert.ToInt32(Console.ReadLine());
int result = 0;
if (num1 > num2 && num1 > num3)
{
    result = num1;
    Console.WriteLine($"Наибольшее число {result} ");
}
else if (num2 > num1 && num2 > num3)
{
    result = num2;
    Console.WriteLine($"Наибольшее число {num2} ");
}
else
{
    result = num3;
    Console.WriteLine($"Наибольшее число {num3} ");
}
switch (result % 2)
{
    case 0:
        Console.WriteLine("Чётное число");
        break;
    default:
        Console.WriteLine("Не чётное число");
        break;
}
string FinalResult = result < 100 ? $"Число {result} меньше 100" : $"Число {result} больше 100";
Console.WriteLine("Результат: " + FinalResult);

2)
Console.WriteLine("Введите три числа:");
int num1 =
    Convert.ToInt32(Console.ReadLine());
int num2 =
    Convert.ToInt32(Console.ReadLine());
int num3 =
    Convert.ToInt32(Console.ReadLine());
int result = 0;
string MuchSmaller = " ";

if (!(num1 < num2) && (!(num1 < num3)))
{
    Console.WriteLine($"Наибольшее {num1}");
    result = num1;
}
else
{
    if (!(num2 < num1) && (!(num2 < num3)))
    {
        Console.WriteLine($"Наибольшее {num2}");
        result = num2;
    }
    else
    {
        if (!(num3 < num1) && (!(num3 < num2)))
        {
            Console.WriteLine($"Наибольшее {num3}");
            result = num3;
        }
    }
}
switch (result % 2)
{
    case 0:
        Console.WriteLine($"Число {result} четное");
        break;
    default:
        Console.WriteLine($"Число {result} не четное");
        break;
}

MuchSmaller = result < 100 ? "меньше" : "больше";
Console.WriteLine($"Число {result} {MuchSmaller} чем 100");

3)
int a, b, c, max;
Console.WriteLine("Введите первое число:");
while (!int.TryParse(Console.ReadLine(), out a)) // Проверка того, что ввели именно число
{
    Console.WriteLine("Ошибка ввода! Введите целое число");
}
Console.WriteLine("Введите второе число:");
while (!int.TryParse(Console.ReadLine(), out b))
{
    Console.WriteLine("Ошибка ввода! Введите целое число");
}
Console.WriteLine("Введите третье число:");
while (!int.TryParse(Console.ReadLine(), out c))
{
    Console.WriteLine("Ошибка ввода! Введите целое число");
}
Console.WriteLine("---------------------------");
Console.WriteLine("Вот ваши числа: {0}, {1}, {2}", a, b, c);
Console.WriteLine("---------------------------");
Console.WriteLine("Теперь ищем наибольшое из трёх чисел");
Console.WriteLine("---------------------------");

if (a > b && a > c)
{
    Console.WriteLine("The biggest number is {0}", a);
    max = a;
}
else if (b > a && a > c)
{
    Console.WriteLine("The biggest number is {0}", b);
    max = b;
}
else
{
    Console.WriteLine("The biggest number is {0}", c);
    max = c;
}

Console.WriteLine("---------------------------");
Console.WriteLine("Давайте проверим на четность");
Console.WriteLine("---------------------------");

switch (max % 2)
{
    case 0:
        Console.WriteLine("Число четное");
        break;
    default:
        Console.WriteLine("Число нечетное");
        break;
}
string Result = max < 100 ? $"Число {max} меньше 100" : $"Число {max} больше 100";
Console.WriteLine("Result: " + Result);

4)
Console.WriteLine("Введите 3 числа: ");
int q = Convert.ToInt32(Console.ReadLine());
int w = Convert.ToInt32(Console.ReadLine());
int e = Convert.ToInt32(Console.ReadLine());

if (q > e && q > w)
{
    Console.WriteLine(q + " самое большое число");
    switch (q % 2 == 0)
    {
        case (true):
            Console.WriteLine(q + " четное число");
            break;

        case (false):
            Console.WriteLine(q + " нечетное число");
            break;

    }
    Console.WriteLine(q < 100 ? "Меньше 100 " : "Больше 100");
};
if (w > e && w > q)
{
    Console.WriteLine(w + " самое большое число");
    switch (w % 2 == 0)
    {
        case (true):
            Console.WriteLine(w + " четное число");
            break;

        case (false):
            Console.WriteLine(w + " нечетное число");
            break;
    }
    Console.WriteLine(w < 100 ? "Меньше 100 " : "Больше 100");
};
if (e > q && e > w)
{
    Console.WriteLine(e + " самое большое число");

    switch (e % 2 == 0)
    {
        case (true):
            Console.WriteLine(e + " четное число");
            break;

        case (false):
            Console.WriteLine(e + " нечетное число");
            break;

    }
    Console.WriteLine(e < 100 ? "Меньше 100 " : "Больше 100");
};

5)
Console.WriteLine("Введите первое число: ");
int inputOne = int.Parse(Console.ReadLine());

Console.WriteLine("Введите второе число: ");
int inputTwo = int.Parse(Console.ReadLine());

Console.WriteLine("Введите третье число: ");
int inputThree = int.Parse(Console.ReadLine());

//Ищем максимальное значение с помощью if
if (inputOne > inputTwo && inputOne > inputThree)
{
    Console.WriteLine("Первое число оказалось больше, и его значение = " + inputOne);
}
else if (inputTwo > inputOne && inputTwo > inputThree)
{
    Console.WriteLine("Второе число оказалось больше, и его значение = " + inputTwo);
}
else if (inputThree > inputOne && inputThree > inputTwo)
{
    Console.WriteLine("Третье число оказалось больше, и его значение = " + inputThree);
}
else
{
    Console.WriteLine("Не получается найти максимальное значение");
}

Console.WriteLine("\nЛог чисел: ");
//Проверяем больше или меньше ста число
if (inputOne > 100)
{
    Console.WriteLine("Первое число больше ста");
}
else
{
    Console.WriteLine("Первое число меньше ста");
}

if (inputTwo > 100)
{
    Console.WriteLine("Второе число больше ста");
}
else
{
    Console.WriteLine("Второе число меньше ста");
}

if (inputThree > 100)
{
    Console.WriteLine("Третье число больше ста");
}
else
{
    Console.WriteLine("Третье число меньше ста");
}

//Проверяем на четность
Console.WriteLine("\nЛог четности чисел: ");
switch (inputOne % 2)
{
    case 0:
        Console.WriteLine("Первое число делится на 2");
        break;

    default:
        Console.WriteLine("Первое число не делится на два");
        break;
}
switch (inputTwo % 2)
{
    case 0:
        Console.WriteLine("Второе число делится на 2");
        break;

    default:
        Console.WriteLine("Второе число не делится на два");
        break;
}
switch (inputThree % 2)
{
    case 0:
        Console.WriteLine("Третье число делится на 2");
        break;

    default:
        Console.WriteLine("Третье число не делится на два");
        break;
}

Answer the question

In order to leave comments, you need to log in

2 answer(s)
F
Foggy Finder, 2019-12-12
@Relonir

General remarks (to all pieces):
No division into functions (problem: duplication of code, complicates perception)
Move each part into a convenient method and call it. For example:
* Getting a number from the console
* Finding the minimum of three numbers
* Checking for parity
You will have a much clearer understanding of what the code is doing - your eyes will cover several calls and will not be distracted by specific implementation details.
General problems are over, now from top to bottom:
1. [ Critical ] No input validation. The user may accidentally enter a letter and the Convert.ToInt32 method will throw an exception. Pretty annoying.
2. Violation of the naming convention for the variableFinalResult
3. Optional initialization of the FinalResult variable on declaration.
4. [Subjective] Formatting issues: ternary operator takes up too much space for one line
5. [Can be seen as a nitpick] Copy-paste approach. The output of the message can be carried out from if-s to - it is the same for all cases.
1. [Critical] Same as above
2. Violation of naming convention for MuchSmaller variable 3. MuchSmaller
variable declaration and over-initialization way ahead of actual usage. 4. Too complex conditional expressions. 5. Similar to item 5 of the previous example. 3 piece:
Here, hurray!, there is no main problem that occurs in all other examples.
1. Violation of the naming convention for the variable Result
2. Strange mixture of English and Russian in informational messages
3. Strange mixture of string interning ($) and old formatting.
1. [ Critical ] There is no check for correct input. The user may accidentally enter a letter and the Convert.ToInt32 method will throw an exception. Pretty annoying.
2. [ Essential ] Copy-paste approach for parity checking.
3. Redundant parentheses in switch case
1. [ Critical ] There is no check for correct input. The user may accidentally enter a letter and the Parse method will throw an exception.
2. Problems with the name of variables. inputOne
3rd option is conditionally normal. The rest are worse.
Try to write your own version, taking into account the comments listed above =)

R
Ronald McDonald, 2019-12-11
@Zoominger

Yes, everything is fine, except for the second.
This piece is weird:

Console.WriteLine("Введите 3 числа: ");
            int q = Convert.ToInt32(Console.ReadLine());
            int w = Convert.ToInt32(Console.ReadLine());
            int e = Convert.ToInt32(Console.ReadLine());

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question