Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 5

Кубическое уравнение

04.02.2021, 12:56. Показов 2588. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу, которая будет искать все целые X, удовлетворяющие уравнению

AX3 + BX2 + CX + D = 0,

где A, B, C, D — данные целые числа.

Входные данные
Во входном файле записаны четыре целых числа: A, B, C, D. Все числа по модулю не превышают 2109.

Выходные данные
В выходной файл выведите сначала количество решений этого уравнения в целых числах, а затем сами корни в возрастающем порядке. Если уравнение имеет бесконечно много корней, выведите в выходной файл одно число –1 (минус один).

Примеры
входные данные
1 0 0 -27
выходные данные
1
3

входные данные
0 1 2 3
выходные данные
0
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2021, 12:56
Ответы с готовыми решениями:

Кубическое уравнение
Есть некое уравнение - t^3 + 17t^2 - 7t = d, то бишь t^3 + 17t^2 - 7t - d = 0 d задается. Как решить такое уравнение? Нужен только...

кубическое уравнение
составить программу для решения кубического уравнения

Программа решающая кубическое уравнение
Уважаемые программисты, помогите пожалуйста,необходимо написать программу на С++, решающую кубическое уравнение вида ах^3+bx^2+cx+d=0. ...

5
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.02.2021, 13:40
Первым делом надо найти все делители числа D. И подставить из (с разными знаками) в ураыенеие
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
04.02.2021, 15:45
Байт, нет, при всем уважении к Вам, сначала следует проверить не равны ли нулю все коэффициенты (и если да - выдать -1).
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.02.2021, 16:04
Цитата Сообщение от Catstail Посмотреть сообщение
сначала следует проверить не равны ли нулю все коэффициенты (и если да - выдать -1).
Да, на этот момент внимания не обратил....
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 5
05.02.2021, 14:20  [ТС]
Большое спасибо за помощь! Я в этой теме очень слаб, поэтому можно уточнить, сумма коэффициентов или что?)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
05.02.2021, 16:44
Лучший ответ Сообщение было отмечено joshler как решение

Решение

Умиляют такие задачи... Почему уравнение кубическое? Алгоритм пригоден для подбора целых корней полинома любой степени. Вот обобщение. Степень полинома вводится. Затем коэффициенты, начиная со старшего:

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
#include <iostream>
 
using namespace std;
 
int horner(int *p, int n, int x)
{
    int i,r=0;
    for (i=0; i<n; i++) r=r*x+p[i];
    return r;
}
 
int main()
{
    int n,i,j,t,q,u,ptr,z=0;
    cout << "n=";
    cin >> n;
    
    int *p = new int[n+1];
    int *roots = new int[n];
    
    for (i=0; i<=n; i++)
    {
        cout << "p[" << (n-i) << "]=";
        cin >> p[i];
        if (p[i]==0) z++;
    }
 
    if (z == n)
    {
        cout << "-1" << endl;
        delete [] p;
        delete [] roots;
        return 0;
    }
 
    q=p[n];
    ptr=0;
    i=1;
    
    while(i*i<abs(q))
    {
        if (q%i==0)
        {
            if (horner(p,n+1,i)==0)
            {
                roots[ptr++]=i;
                u=q/i;
                if ((u != i) && (horner(p,n+1,u)==0))
                {
                   roots[ptr++]=i;
                   if (horner(p,n+1,-u)==0) roots[ptr++]=-u;
                }
                if (horner(p,n+1,-i)==0) roots[ptr++]=-i;
            }
        }
        
        i++;
    }    
 
    cout << ptr << endl;
    
    if (ptr>0)
    {
        for (i=0; i<ptr-1; i++)
            for (j=i+1; j<ptr; j++)
                if (roots[i]>roots[j])
                {
                    t=roots[i];
                    roots[i]=roots[j];
                    roots[j]=t;
                }
        for (i=0; i<ptr; i++) cout << roots[i] << endl;        
    }
 
    delete [] p;
    delete [] roots;
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2021, 16:44
Помогаю со студенческими работами здесь

Кубическое уравнение (методом Кардано)
Добрый вечер, помогите пожалуйста, требуется написать код для решения кубического уравнения ax3+bx2+cx+d=0, обязательно методом Кардано.

Кубическое уравнение методом половинного деления
Дано кубическое уравнение x^3 + a*x^2 + b*x + c = 0 имеющие три действительных корня на отрезке (-10; 10). Найти корни уравнения с...

Дано уравнение ax2+bx+c=0. Решить уравнение, результат вывести на экран.
Здравствуйте. Завтра зачет, нужно сдать две программы на с++, как их писать у меня весьма смутное представление. Собственно задание: ...

Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена
Создать абстрактный базовый класс уравнение с виртуальной функцией - корни уравнения. Создать производные классы линейное уравнение и...

18. Написать программу, которая решает уравнение с одним неизвестным и выводит в консоль значение неизвестного. Уравнение посимвольно вводится с клави
#include &lt;iostream&gt; using namespace std; void main() { int urov1 = 0; int urov2 = 0; int urov3 = 0; float stad = 0; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru