Программирование (фото с сайта pixabay.com)

Программа «Элементарный Калькулятор» (язык C)

Примеры

Варианты решения задачки №1 (программа «Элементарный калькулятор») на языке C. Это аналоги приведенных ранее решений на языке Pascal (с оговорками). Первый вариант — с использованием переменных целого типа и условного оператора if ... else ... :

/* Программа "Элементарный калькулятор", вариант №1 */
#include <stdio.h> /* Подключаем стандартный ввод-вывод */

/* Основная функция программы */
int main()
{
  int a, b; /* Переменные-целочисленные операнды */
  char op;  /* Переменная-символ операции */

  /* Получаем исходные данные */
  printf("Введите первый операнд, операцию и второй операнд: ");
  scanf("%d %c %d", &a, &op, &b);

  /* Выполняем операцию и выводим результат */
  if (op == '+')
    printf("a + b = %d\n", a + b);
  else
    if (op == '-')
      printf("a - b = %d\n", a - b);
    else
      if (op == '*')
        printf("a * b = %d\n", a * b);
      else
        if (op == '/')
          printf("a / b = %f\n", (float)a / b);
        else
          printf("Неизвестная операция!\n");

  return 0; /* Завершение основной функции (выход) с кодом 0 */
}

Текст программы сохраняем в файл с именем, например, 01.c. Работаем в Linux (например Linux Mint) и используем компилятор gcc, поэтому скомпилировать файл можно так:

$ gcc -Wall -o 01 01.c

а запустить готовую программу (при условии, что компиляция прошла без ошибок и исполняемый файл был создан) так:

$ ./01

Кстати, фрагмент кода с определением операции и выводом результата можно оформить иначе (это дело вкуса):

/* Выполняем операцию и выводим результат */
  if (op == '+') {
      printf("a + b = %d\n", a + b);
  } else if (op == '-') {
      printf("a - b = %d\n", a - b);
  } else if (op == '*') {
      printf("a * b = %d\n", a * b);
  } else if (op == '/') {
      printf("a / b = %f\n", (float)a / b);
  } else
      printf("Неизвестная операция!\n");

И так тоже можно (но вряд ли нужно):

  /* Выполняем операцию и выводим результат */
  if (op == '+') printf("a + b = %d\n", a + b);
  else if (op == '-') printf("a - b = %d\n", a - b);
  else if (op == '*') printf("a * b = %d\n", a * b);
  else if (op == '/') printf("a / b = %f\n", (float)a / b);
  else printf("Неизвестная операция!\n");

А теперь вариант, в котором вместо условного оператора if ... else ... используется оператор выбора switch ... case ... :

/* Программа "Элементарный калькулятор", вариант №2 */
#include <stdio.h> /* Подключаем стандартный ввод-вывод */

/* Основная функция программы */
int main()
{
  int a, b; /* Переменные-целочисленные операнды */
  char op;  /* Переменная-символ операции */

  /* Получаем исходные данные */
  printf("Введите первый операнд, операцию и второй операнд: ");
  scanf("%d %c %d", &a, &op, &b);

  /* Выполняем операцию и выводим результат */
  switch (op) {
    case '+':
      printf("a + b = %d\n", a + b);
      break;
    case '-':
      printf("a - b = %d\n", a - b);
      break;
    case '*':
      printf("a * b = %d\n", a * b);
      break;
    case '/':
      printf("a / b = %f\n", (float)a / b);
      break;
    default:
      printf("Неизвестная операция!\n");
  }
          
  return 0; /* Завершение основной функции (выход) с кодом 0 */
}

И еще один вариант (разумное предложение одного из учеников) — «украсим» немного вывод результата, а также добавим проверку «деления на ноль» (чтобы наш калькулятор при значении делителя, равном нулю, «не сломался»):

/* Программа "Элементарный калькулятор", вариант №3 */
#include <stdio.h> /* Подключаем стандартный ввод-вывод */

/* Основная функция программы */
int main() {
  int a, b; /* Переменные-целочисленные операнды */
  char op;  /* Переменная-символ операции */

  /* Получаем исходные данные */
  printf("Введите первый операнд, операцию и второй операнд: ");
  scanf("%d %c %d", &a, &op, &b);

  /* Выполняем операцию и выводим результат */
  switch (op) {
    case '+':
      printf("%d + %d = %d\n", a, b, a + b);
      break;
    case '-':
      printf("%d - %d = %d\n", a, b, a - b);
      break;
    case '*':
      printf("%d * %d = %d\n", a, b, a * b);
      break;
    case '/':
      if (b != 0)    /* Мы не умеем делить на ноль */
        printf("%d / %d = %f\n", a, b, (float)a / b);
      else
        printf("Операция деления на ноль не определена!\n");
      break;
    default:
      printf("Неизвестная операция!\n");
  }

  return 0; /* Завершение основной функции (выход) с кодом 0 */
}

Добавить комментарий

Ваш адрес email не будет опубликован.