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

Решение уравнений с одним неизвестным - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
05.10.2012, 10:43     Решение уравнений с одним неизвестным #1
Всем привет, подскажите плз, как можно реализовать программу решающую например: 5X + 10 = 20. Мне не нужен код, просто подскажите как это можно сделать, ну впринципе я немного начал писать, но пока не очень получается. Зарание спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2012, 10:43     Решение уравнений с одним неизвестным
Посмотрите здесь:

Решение уравнений C++
Решение уравнений C++
C++ Решение уравнений с матрицами
C++ Решение квадратных уравнений
C++ Решение системы СЛАУ одним из методов Гаусса: исправить код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
05.10.2012, 11:09     Решение уравнений с одним неизвестным #2
Нужно самому вывести способ вычисления неизвестной величины.
a*x + b = c
x = (c - b)/a
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
05.10.2012, 15:00     Решение уравнений с одним неизвестным #3
SeregaC++, Не забудь проверку на a != 0
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
05.10.2012, 16:42  [ТС]     Решение уравнений с одним неизвестным #4
А не подскажите как лучше произвести ввод? Я делал через строку, но там тогда неудобно переводить '1' в 1.
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
05.10.2012, 16:59     Решение уравнений с одним неизвестным #5
Выкладывайте код
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
05.10.2012, 17:50     Решение уравнений с одним неизвестным #6
SeregaC++, как именно ты собирался организовывать ввод? Чтобы пользователь вводил все уравнение, типа 5x + 10 = 20? Или каждый коэффициент отдельно, что на подобии:
Введите коэф. а >> ? И нужна ли проверка ввода чисел?

Добавлено через 12 минут
Вот пример перевод строки, содержащей цело число, в число:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    char str_num[5];            // Строка, в которую будем вводить число.
    cout << "Enter number >> ";
    cin >> str_num; 
 
    int num = 0;                // Число
    size_t str_len = strlen(str_num);   // Длина строки.
 
    // Перевод строки в число.
    for (int i = 0; i < str_len; i++)
        num = num * 10 + str_num[i] - '0';  // Для перевода символа-цифры в число нужно от него отнять код нуля.
                                            // Чтобы напор символов-цифр в чило, нужно при каждой новой итерации домножать  
                                            // результат на 10.
 
    cout << num << endl;
    system("pause");
 
    return 0;
}
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.10.2012, 11:27  [ТС]     Решение уравнений с одним неизвестным #7
ReasonX7, Чтобы пользователь вводил все уравнение, типа 5x + 10 = 20.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
06.10.2012, 18:04     Решение уравнений с одним неизвестным #8
SeregaC++, если отбросить проверку правильности ввода, то тогда код будет где-то таким:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    char str_eq[20];            // Строка, в которую будем вводить число.
    cout << "Enter equtation (ax + b = c) >> ";
    cin >> str_eq; 
 
    size_t str_len = strlen(str_eq);   // Длина строки.
    int vars[3];    // Массив с коеф.
    int j = 0;      // Счетчик для vars.
    vars[0] = 0;
    vars[1] = 0;
    vars[2] = 0;
    for (size_t i = 0; i < str_len; i++)
    {
        while (1)   // Безконечный цикл.
        {
            if (str_eq[i] >= '0' && str_eq[i] <= '9')       // Если символ - число
            {                                               //
                vars[j] = vars[j] * 10 + str_eq[i] - '0';   // дописоваем его к j-тому коеф.
                i++;
            }
            else            // Иначе
            {               // 
                j++;        // переходим к следущумему коеф.
                break;      // и прерываем цикл while.
            }
        }
    }
 
    cout << "a = " << vars[0] << endl;
    cout << "b = " << vars[1] << endl; 
    cout << "c = " << vars[2] << endl;
    system("pause");
 
    return 0;
}
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.10.2012, 19:35  [ТС]     Решение уравнений с одним неизвестным #9
ReasonX7, может мне кажется, но он не совсем правильно работает, но всё равно спасибо за помощь.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
06.10.2012, 19:36     Решение уравнений с одним неизвестным #10
SeregaC++, что именно не так?
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.10.2012, 19:39  [ТС]     Решение уравнений с одним неизвестным #11
ReasonX7, не пойму ответы.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
06.10.2012, 19:56     Решение уравнений с одним неизвестным #12
Ах, да. При проверке я забыл ввести х и он заработал. Там нужно условие перед j++ добавить.

Добавлено через 7 минут
SeregaC++, в лоб, но работает:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    char str_eq[20];            // Строка, в которую будем вводить число.
    cout << "Enter equtation (ax + b = c) >> ";
    cin >> str_eq; 
 
    size_t str_len = strlen(str_eq);   // Длина строки.
    int vars[3];    // Массив с коеф.
    int j = 0;      // Счетчик для vars.
    vars[0] = 0;
    vars[1] = 0;
    vars[2] = 0;
    for (size_t i = 0; i < str_len; i++)
    {
        if (str_eq[i] >= '0' && str_eq[i] <= '9')       // Если символ - число                                              //
            vars[j] = vars[j] * 10 + str_eq[i] - '0';   // дописоваем его к j-тому коэф.
        else if (str_eq[i] == '+' || str_eq[i] == '=')  // Если знак операции/равенства             
            j++;                                        // перейти к следущему коэф.
    }
 
    cout << "a = " << vars[0] << endl;
    cout << "b = " << vars[1] << endl; 
    cout << "c = " << vars[2] << endl;
    system("pause");
 
    return 0;
}
Только вводить без пробелов, так как cin считает пробел концом ввода/строки.

Добавлено через 7 минут
Можно еще так:
C++
1
2
3
4
5
6
7
    for (size_t i = 0; i < str_len; i++)
    {
        if (str_eq[i] >= '0' && str_eq[i] <= '9')       // Если символ - число                                              
            vars[j] = vars[j] * 10 + str_eq[i] - '0';   // дописоваем его к j-тому коэф.
        else if (str_eq[i - 1] >= '0' && str_eq[i - 1] <= '9')  // Если предидущий символ - число,      
            j++;                                                // перейти к следущему коэф.
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2012, 19:59     Решение уравнений с одним неизвестным
Еще ссылки по теме:

C++ Написать программу, которая решает уравнение с одним неизвестным и выводит в консоль значение неизвестного. Уравнение посимвольно вводится с клавиатур
C++ 18. Написать программу, которая решает уравнение с одним неизвестным и выводит в консоль значение неизвестного. Уравнение посимвольно вводится с клави
Решение уравнений на С++ C++

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

Или воспользуйтесь поиском по форуму:
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.10.2012, 19:59  [ТС]     Решение уравнений с одним неизвестным #13
ReasonX7, ааа, я понял... Спасибо за помощь.
Yandex
Объявления
06.10.2012, 19:59     Решение уравнений с одним неизвестным
Ответ Создать тему
Опции темы

Текущее время: 09:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru