Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проверьте калькулятор на c#

Егор Копенкин Ученик (104), открыт 2 дня назад
Норм код?
using System;

class Calculator

{

static void Main(string[] args)

{

Console.WriteLine("Простой калькулятор");

// Получение первого числа

double num1 = GetNumber("Введите первое число:");

// Получение второго числа

double num2 = GetNumber("Введите второе число:");

// Выбор операции

char operation = GetOperation("Выберите операцию (+, -, *, /):");

// Выполнение операции

double result = PerformOperation(num1, num2, operation);

// Вывод результата

if (double.IsNaN(result))

{

Console.WriteLine("Ошибка: Неверная операция или деление на ноль!");

}

else

{

Console.WriteLine($"{num1} {operation} {num2} = {result}");

}

Console.WriteLine("Нажмите любую клавишу для выхода...");

Console.ReadKey();

}

static double GetNumber(string prompt)

{

double number;

Console.WriteLine(prompt);

while (!double.TryParse(Console.ReadLine(), out number))

{

Console.WriteLine("Некорректный ввод. Пожалуйста, введите число:");

}

return number;

}

static char GetOperation(string prompt)

{

char operation;

Console.WriteLine(prompt);

while (!char.TryParse(Console.ReadLine(), out operation) || "+-*/".IndexOf(operation) == -1)

{

Console.WriteLine("Некорректный ввод. Пожалуйста, выберите операцию (+, -, *, /):");

}

return operation;

}

static double PerformOperation(double num1, double num2, char operation)

{

switch (operation)

{

case '+':

return num1 + num2;

case '-':

return num1 - num2;

case '*':

return num1 * num2;

case '/':

return num2 != 0 ? num1 / num2 : double.NaN; // Возвращаем NaN для деления на ноль

default:


return double.NaN; // Неверная операция (хотя этот случай не должен возникнуть)

}

}

}
4 ответа
Безымянник Мудрец (13156) 2 дня назад
ГПТха говорит следующее:

Код вашего калькулятора выглядит хорошо организованным и функциональным. Вот несколько замечаний и предложений по улучшению:

Преимущества:
  • Модульная структура: Использование отдельных методов для получения числа, выбора операции и выполнения операции делает код читаемым и легким для сопровождения.
  • Проверка ввода: Вы предусмотрели валидацию для ввода чисел и операций, что предотвращает ошибки выполнения.
  • Обработка деления на ноль: Деление на ноль возвращает NaN, и вы обрабатываете этот случай при выводе результата.
Возможные улучшения:
  • Лишняя проверка в PerformOperation: Если пользователь уже выбрал корректную операцию, проверка на недопустимую операцию (default) в switch-case практически не нужна.
  • Улучшение читаемости: Используйте комментарии только там, где это необходимо, чтобы не загромождать код.
  • Кодировка Console.ReadLine(): Если пользователь случайно введет пустую строку или пробелы в методе GetOperation, это может вызвать ошибку. Вставьте Trim() для обработки лишних пробелов.
  • Локализация сообщений: Добавьте возможность легкой локализации строк, если планируется работа с разными языками.
AliExpress Знаток (388) 2 дня назад
у меня калькулятор получает в String текст: напр 1+96*8 и вычисляет выражение
Егор КопенкинУченик (104) 2 дня назад
Скинь пожалуйста.
Андрей Панарин Искусственный Интеллект (254500) 2 дня назад
Вроде исправно работает, но как-то неинтуитивно выходит, что сначала вводишь два числа, а потом операцию. Напоминает польскую запись: 2 3 +.
Похожие вопросы