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

Код решения кубического уравнения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объясните что здесь делает функция http://www.cyberforum.ru/cpp-beginners/thread1049908.html
#include "stdafx.h" #include <iostream> using namespace std; int count(int a) { int c; for(c=0;a>0;c++) { a/=10; }
C++ функция gettimeofday Почему при использовании функции time_stop() получается слишком длинное значение? хотя на самом деле время проходит примерно секунду. Вот код функции: она возвращает время в миллисекундах struct timeval tv1,tv2,dtv; struct timezone tz; void time_start() { gettimeofday(&tv1, &tz); } long time_stop() { gettimeofday(&tv2, &tz); dtv.tv_sec= tv2.tv_sec -tv1.tv_sec; http://www.cyberforum.ru/cpp-beginners/thread1049896.html
C++ Двумерный массив Вставка
Дан двумерный массив, элементы которого - целые числа. Вставьте новый столбец, каждый элемент которого - число ноль, после последнего столбца, в котором нет ни одного отрицательного элемента. Добавлено через 13 минут upupp
Текстовый квест C++
Подскажите, кто может помочь в написании текстового квест на с++?; В универе задали создать текстовый квест, что-почем, с чего начать (идея написанная есть) не знаю, гугл мало чем помог(... заранее СПАСИБО!
C++ Работа со строками http://www.cyberforum.ru/cpp-beginners/thread1049862.html
Здравствуйте, помогите пожалуйста сориентироваться. Программу надо реализовать на Си++ в Борланд 2006. Я в строках полный профан. Не могли бы вы помочь с выбором необходимых функций для выполнения задания, а так же примерно суть\ последовательность действий: 1. Написать программу, которая вводит текст, состоящий из нескольких предложений, и выводит его на экран меняя местами каждые два...
C++ Преобразование файла Помогите написать программу которая преобразует файл в "телеграфном" стиле все прописные (маленькие) буквы заменяет на заглавные (большие). Также в программе необходимо установить количество введенных символов в файле. подробнее

Показать сообщение отдельно
vlad0995
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 27
20.12.2013, 22:32  [ТС]     Код решения кубического уравнения
преподавателю без разницы каким способом я буду решать, я сначала попробовал решить по Кардано, сам написал код, но он не работает, потом вспомнил что программа не может вычислить квадратный корень из отрицательного числа.

Добавлено через 4 минуты
преподавателю без разницы каким способом я буду решать, я сначала попробовал решить по Кардано, сам написал код, но он не работает, потом вспомнил что программа не может вычислить квадратный корень из отрицательного числа.
Вот код, который я написал, может сможете исправить, был бы очень благодарен ) Пользовался формулами с этого сайта: http://ateist.spb.ru/mw/kardano.htm
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
#pragma once
#include <iostream>
#include <stdio.h>  
#include <conio.h>
#include <locale.h>
#include <math.h>
const double PI = 3.1415926535897932384626433832795;
using namespace std;
double a,b,c,d,p,q,s,f,x1,x2,x3,x2i,x3i;
int main()
{
setlocale(LC_ALL,"Russian");
m:cout<<"Введите коэффициенты кубического уравнения Ax^3+Bx^2+Cx+D"<<endl;
cout<<"A= "<<endl;
cin>>a;
cout<<"B= "<<endl;
cin>>b;
cout<<"C= "<<endl;
cin>>c;
cout<<"D= "<<endl;
cin>>d;
if (a==0)
{
    cout<<"Ошибка !"<<endl;
    goto m;
}
else
{
p=((3.*a*c-b*b)/(3.*a*a));
q=((2.*b*b-9.*a*b*c+27.*a*a*d));
s=(((q*q)/4.)+(p*p*p)/27.);
if (q<0)
{
    f=(atan(pow(-s,0.5)/(-q/2)));
}
else if (q>0)
{
    f=(atan(pow(-s,0.5)/(-q/2))+PI);
}
else
{
    f=(PI/2);
}
if (s<0)
{
    x1=(2.*pow((-p/3.),0.5)*cos(f/3.)-b/3.*a);
    x2=(2.*pow((-p/3.),0.5)*cos(f/3.+(2.*PI)/3.)-b/3.*a);
    x3=(2.*pow((-p/3.),0.5)*cos(f/3.+(2.*PI)/3.)-b/3.*a);
}
else if (s>0)
{
x1=(pow(-q/2.+pow(s,0.5),1./3.)+pow(-q/2.-(pow(s,0.5)),1./3.)-b/(3.*a));
    x2=(-0.5*(pow(-q/2.+pow(s,0.5),1./3.)+pow(-q/2.-(pow(s,0.5)),1./3.)-b/(3.*a)));
    x2i=((pow(3.,0.5)/2.)*(pow(-q/2.+(pow(s,0.5)),1./3.)-pow(-q/2.-(pow(s,0.5)),1./3.)));
    x3=(-0.5*(pow(-q/2+pow(s,0.5),1/3)+pow(-q/2-(pow(s,0.5)),1/3)-b/(3*a)));
    x3i=((pow(3.,0.5)/2.)*(pow(-q/2.+(pow(s,0.5)),1./3.)-pow(-q/2.-(pow(s,0.5)),1./3.)));
}
else
{
    x1=(2.*pow(-q/2.,1./3.)-b/(3.*a));
    x2=(-1.*pow(-q/2.,1./3.)-b/(3.*a));
    x3=(-1.*pow(-q/2.,1./3.)-b/(3.*a));
}
cout<<"Х1= "<<x1<<endl;
if (s>0)
{
    cout<<"X2= "<<x2<<"+"<<x2i<<"i"<<endl;
    cout<<"X3= "<<x3<<"-"<<x3i<<"i"<<endl;
}
else
{
cout<<"X2= "<<x2<<endl;
cout<<"X3= "<<x3<<endl;
}
}
system("pause");
}
Добавлено через 4 минуты
задача звучит так: найти все целые корни уравнения A*x^3+B*x^2+C*x+D=0, где A,B,C,D - целые числа.
(Замечание: целыми корнями могут быть только положительные и отрицательные делители коэффициента D).
 
Текущее время: 06:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru