Школьная алгебра

      Комментарии к записи Школьная алгебра отключены

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 нед., 6 дн. назад.

  • Автор
    Сообщения
  • #3396

    Условие задачи взято с acmp.ru:

    Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, записанный с использованием алгебраических соглашений:

    • коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице;
    • член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты равны нулю, тогда трехчлен состоит из одной цифры 0);
    • знак “+” опускается, если он предшествует отрицательному коэффициенту;
    • знак “+” опускается, если он стоит в начале выражения (так называемый унарный плюс);
    • знак умножения между коэффициентом и переменной опускается.

    При этом запрещено менять местами члены.

    Входные данные
    Во входном файле INPUT.TXT через пробел записаны целые коэффициенты a, b и с, каждое из которых не превосходит 30000 по абсолютной величине.

    Выходные данные
    Выходной файл OUTPUT.TXT должен содержать трехчлен, записанный с использованием алгебраических соглашений.

    Примеры

    INPUT.TXT OUTPUT.TXT
    1 0 2 -1 2x-y
    2 3 0 -2 3-2y

    Разбор задачи:

    Работа программы начинается с ввода коэффициентов трехчлена. Если все коэффициенты равны нулю, то выводится ноль. Так же, если какой-либо коэффициент равен 0, соответствующая ему переменная опускается.

    Блок-схема алгоритма:

    Исходный код решения на языке C++:

    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;
    
    int main() {
      int a, b, c;
      cin >> a >> b >> c;
    
      if (a == 0 && b == 0 && c == 0) {
        cout << "0";
        return 0;
      }
      if (a != 0) {
        cout << a;
      }
      if (b != 0) {
        if (b > 0 && a != 0)
          cout << "+";
        if (b == -1) {
          cout << "-x";
      }
      else 
        if (b == 1)
          cout << "x";
        else
          cout << b << "x";
      }
      if (c != 0) {
        if (c > 0 && (a != 0 || b != 0))
          cout << "+";
        if (c == -1) {
            cout << "-y";
        }
        else if (c == 1) {
          cout << "y";
        }
        else {
          cout << c << "y";
        }
      }
      cout << endl;
    }

Для ответа в этой теме необходимо авторизоваться.