Калькулятор - критика кода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сплошной примитив и способ реализации уверен не самый удачный, но я новичок в Си и для меня это большой шаг)) Хотелось бы посмотреть на то как вы видите решение данной задачи.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<locale.h>

int main()
{
 
    setlocale(LC_ALL, "Russian");
 
    int Addition = 0,Subtraction = 1,Multiplication = 2,Division = 3; /* Тип операции */
    int i,a,b,c;
    int h, Yes = 0, No = 1;
    float g;
 
  m1:   printf("\n Чтобы использовать операцию сложения введите  0\n");

       printf("\n Чтобы использовать операцию вычитания введите 1\n");
    
       printf("\n Чтобы использовать операцию умножения введите 2\n");

       printf("\n Чтобы использовать операцию деления введите   3\n");
   
        scanf("%d", &i);
        if(i == Addition)
        {
            printf("Введите первое слагаемое:"); scanf("%d", &a);
            printf("Введите второе слагаемое:"); scanf("%d", &b);
 
            c = a + b;
 
            printf("Сумма равна: %d",c);
 
        }
        if(i == Subtraction)
        {
            printf("Введите уменьшаемое:"); scanf("%d", &a);
            printf("Введите вычитаемое:"); scanf("%d", &b);
 
            c = a - b;
 
            printf("Разность равна: %d",c);
 
        }
        if(i == Multiplication)
        {
            printf("Введите первый множитель:"); scanf("%d", &a);
            printf("Введите второй множитель:"); scanf("%d", &b);
 
            c = a * b;
 
            printf("Произведение равно: %d",c);
 
        }
        if(i == Division)
        {
            printf("Введите делимое:"); scanf("%d", &a);
            printf("Введите делитель:"); scanf("%d",&b);
 
            g = a / b;
 
            printf("Частное равно: %.2f",g);
        }
 
            printf("\n Желаете повторить операцию? Да - 0, Нет - 1\n"); scanf("%d", &h);
            if(h == 0)
            {
                goto m1;
            }
            else(printf("Спасибо, что воспользовались моим калькулятором!"));

getch();
 
}

Решение задачи: «Калькулятор - критика кода»

textual
Листинг программы
#include <stdio.h>
 
int main()
{
  int a, b;
  char oper;
  scanf("%d%c%d", &a, oper, &b);
  switch(oper)
  {
    case '+': {
      printf("%d%c%d=%d\n", a, oper, b, a+b);
      break; }
    case '-': {
      printf("%d%c%d=%d\n", a, oper, b, a-b);
      break; }
    case '/': {
      printf("%d%c%d=%d\n", a, oper, b, a/b);
      break; }
    case '*': {
      printf("%d%c%d=%d\n", a, oper, b, a*b);
      break; }
  }
}

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку ввода-вывода
  2. Объявляем переменные a, b типа int и oper типа char
  3. Считываем значения переменных a, oper, b с помощью функции scanf
  4. Используем оператор switch для выбора операции в зависимости от значения переменной oper
  5. В случае '+' выполняем операцию сложения и выводим результат на экран
  6. В случае '-' выполняем операцию вычитания и выводим результат на экран
  7. В случае '/' выполняем операцию деления и выводим результат на экран
  8. В случае '*' выполняем операцию умножения и выводим результат на экран
  9. Выполняем операцию break после каждой ветки условного оператора switch
  10. Программа завершается после выполнения всех ветвей условного оператора switch
  11. Значения переменных a, oper, b считываются в указанном порядке
  12. Значение переменной oper должно быть одним из символов '+', '-', '/', '*'
  13. Переменные a и b используются как аргументы для операций сложения, вычитания, деления и умножения
  14. Результат операции сохраняется в переменной a или b в зависимости от ветви условного оператора switch
  15. Результат операции выводится на экран с помощью функции printf
  16. Значение переменной oper не проверяется на равенство символу ' ' или символу новой строки '\n'
  17. Если значение переменной oper не равно символу ' ' или символу новой строки '\n', то программа ожидает ввода еще двух чисел
  18. Если значение переменной oper равно символу ' ' или символу новой строки '\n', то программа завершается
  19. Значение переменной oper не проверяется на равенство символу '+' или символу '-'
  20. Значение переменной oper не проверяется на равенство символу '/' или символу '*'

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5