Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
#1

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

06.07.2015, 12:04. Просмотров 729. Ответов 1
Метки нет (Все метки)

Добрый день, столкнулся с такой задачей:

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

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

Входные данные

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

Выходные данные

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

Можно, конечно, решить используя огромное число операторов if, однако, мне кажется существует более простой способ. К примеру, возможно ли сделать переменную невидимой при выводе ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 12:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Школьная алгебра (C++):

Школьная алгебра - C++
Привет родные форумчане! Пожалуйста помогите решить Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется...

Школьная задача - C++
C++ Ребята, помогите пожалуйста решить при помощи if или switch Буду очень благодарна.

Школьная олимпиада - C++
http://s019.***********/i607/1210/4a/3b6bf193f9cb.png Вот задачи... Помогите, кто чем сможет! Мне срочно к завтра надо! А с++ совсем не...

Школьная олимпиада по информатике - C++
Учу 1ый год C++. Точнее 2 недели. Работать могу пока что только с условными операторами(if,while,for). Не могу решить эти задачи Задачи....

Школьная олимпиада. Задача с кубиками (самая сложная из всех задач) - C++
Очки на игральных кубиках распологаются так, чтобы совпадали суммы чисел на противоположных гранях: 1+6 = 2+ 5 = 7. Составьте программу,...

Разработать программное обеспечение автоматизированной информационной системы «Школьная библиотека » - C++
База данных должна содержать: сведения о поступлении книг ( включая дату поступления и поставщиков, номер документа);сведения о книгах:...

1
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.07.2015, 15:16 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/////////////////////////////////////////////////////////////////////////////////////////
//Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. 
//Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, 
//записанный с использованием алгебраических соглашений:
//
//коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице;
//член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты 
//равны нулю, тогда трехчлен состоит из одной цифры 0);
//знак "+" опускается, если он предшествует отрицательному коэффициенту;
//знак "+" опускается, если он стоит в начале выражения (так называемый унарный плюс);
//знак умножения между коэффициентом и переменной опускается.
//При этом запрещено менять местами члены.
//
//Входные данные
//
//Во входном файле INPUT.TXT через пробел записаны целые коэффициенты a, b и с, каждое 
//из которых не превосходит 30000 по абсолютной величине.
//
//Выходные данные
//
//Выходной файл OUTPUT.TXT должен содержать трехчлен, записанный с использованием алгебраических соглашений.
/////////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <cctype>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef long long       T_int;
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
T_str   const_to_str( T_int     val )
{
    return  val
                ?   std::to_string( val )
                :   "";
}
/////////////////////////////////////////////////////////////////////////////////////////
T_str   term_with_coef_and_var_symb_to_str
    (
        T_int   coef,
        char    var_symb
    )
{
    std::ostringstream  sout;
 
    if( coef )
    {
        sout    <<  (
                        coef > 0
                            ?   " + "
                            :   " - "
                    )
 
                <<  (
                        abs( coef )     ==  1
                            ?   ""
                            :   std::to_string  (
                                                    abs( coef )
                                                )
                    )
 
                <<  var_symb;
    }//if
 
    return  sout.str();
}
/////////////////////////////////////////////////////////////////////////////////////////
T_str   polynom_to_string
    (
        T_int   constant,
        T_int   coef_X,
        T_int   coef_Y
    )
{
    if  (
                constant    ==  0
            &&  coef_X      ==  0
            &&  coef_Y      ==  0
        )
    {
        return  "0";
    }
 
    T_str   res     =       const_to_str                        ( constant          )
                        +   term_with_coef_and_var_symb_to_str  ( coef_X,     'x'   )
                        +   term_with_coef_and_var_symb_to_str  ( coef_Y,     'y'   );
 
    while   (
                isspace
                    (
                        res.front()
                    )
            )
    {
        res.erase( 0, 1 );
    }
 
    if  (
            res.front() ==  '+'
        )
    {
        res.erase( 0, 1 );
    }
 
    return  res;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     get_rand_coef()
{
    return  rand() % 2
                ?   0
                :   rand() % 5 - 2;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    srand(unsigned(time(0)));
 
    for(;;)
    {
        T_int   a   =   get_rand_coef();
        T_int   b   =   get_rand_coef();
        T_int   c   =   get_rand_coef();
 
 
        std::cout   <<  a
                    <<  '\t'
                    <<  b
                    <<  '\t'
                    <<  c
                    <<  std::endl;
 
        std::cout   <<  polynom_to_string
                            (
                                a,
                                b,
                                c
                            )
 
                    <<  std::endl;
 
        system("pause");
    }//for
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 15:16
Привет! Вот еще темы с ответами:

С++ и линейная алгебра - C++
Даны массивы C(n) и D(n). Сформировать матрицу A(n,m),как произведение массивов C и D^T(транспонированная) и матрицу B, элементы которой ...

Алгебра логики - C++
Друзья можете подсказать какую-нибудь программу на задачу алгебра логики

векторная алгебра, 2d игры и С++ - C++
Дорогие форуманчани! Собрался тут на собеседование. В вакансии сказано &quot;знание векторной алгебры&quot;. Собственно хотел узнать у опытных...

Экономичное хранение матриц. Матричная алгебра - C++
Доброго времени суток, уважаемые форумчане:) Помогите пожалуйста решить задачку, я сам никак не могу :( Квадратная матрица А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru