|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Решение кубических уравнений на С++ |
|
C/C++ - Решение кубических уравнений на С++
|
Старожил Сообщения: 158 |
Само объяснение есть, вот - http://cubic-solver.info/ Тока я чёт не собиру всё это в кучу, может кто поможет составить последовательность действий.
Вот как я думаю: 1. берём уравнение a*x^3 + b*x^2 + c*x + d = 0 2. заменяем х на у, да так чтоб x = y - (b / 3*a), 3. приводим к более простому (каноническом) виду: y^3 + p*y + q = 0, 4. вводим р= -(b^2 / 3*a^2) + c/a и вводим q= (2*b / 27*a^3) - (b*c / 3*a^2) + b/a 5. с помошью формулы Кардано находим у, только я не пойму формулу (я только в 8-ом классе) kardano.png, напишите плиз, мне её в виде кода! 6. теперь если q^2/4 + p^3/27 > 0 , то кубическое уравнение имеет три различных корня: один из них действительный, два других - сопряженные комплексные; если q^2/4 + p^3/27 = 0, то все три корня действительные, два из них равны если q^2/4 + p^3/27 < 0, то все три корня действительные и различные. чё-то я запутался... А можно было приведя к каноническому виду найти значения p и q, а затем найти "y", используя дискриминант (D = -4p3 - 27q2) только как находится "y" дальше, уже с найденным дискриминантом? (также как x1 и x2 в квадратных уравнениях) Обязательно ознакомьтесь с материалом на странице http://cubic-solver.info/ |
|
Отправлено: 20:51, 30-03-2009 |
Старожил Сообщения: 158
|
Профиль | Отправить PM | Цитировать Drongo, Жёлтая стрелка указала на x[0]=q-a;
И что теперь, что с этим делать? |
Отправлено: 16:10, 31-03-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать XEN_STRANGER, Давай весь код, посмотрим целиком.
|
------- Отправлено: 16:36, 31-03-2009 | #12 |
Старожил Сообщения: 158
|
Профиль | Отправить PM | Цитировать Drongo, От он:
#include <iostream> #include <windows.h> #include <conio.h> #include <cmath> #include <math.h> #define M_PI (3.141592653589793) #define M_2PI (2.*M_PI) using namespace std; // Подключение поддержки кирилицы typedef struct _CONSOLE_FONT_INFOEX { ULONG cbSize; DWORD nFont; COORD dwFontSize; UINT FontFamily; UINT FontWeight; WCHAR FaceName[LF_FACESIZE]; } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX; typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD); // прототип недокументированый функции для XP typedef BOOL (WINAPI *SETCURRENTCONSOLEFONTEX)(HANDLE,BOOL, PCONSOLE_FONT_INFOEX); // для vista SETCURRENTCONSOLEFONTEX SetCurrentConsoleFontEx ; SETCONSOLEFONT SetConsoleFont; // END unsigned int GetFib (unsigned int position); int physic (); int gorenie (); int nagrev (); int math (); int x2yravn (); double GetX2yravn (double a, double b, double c, double *x1, double *x2); int x3yravn (); double GetX3yravn (double *x,double a,double b,double c); int fibmain (); int backer (); // -------------------------Главное меню--------------------------------------------------------------------- int main () { // Тоже для поддержки кирилицы OSVERSIONINFOEX osvi; CONSOLE_FONT_INFOEX cfon; ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); GetVersionEx((OSVERSIONINFO *) &osvi) ; // получение версии windows HMODULE hmod = GetModuleHandleA("KERNEL32.DLL"); // функции if (osvi.dwMajorVersion<6) { SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont"); // берем адрес функции if (!SetConsoleFont) {cout<<"error\n" ; exit(1);} // если ошибка SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),10); // устанавливаем 10 шрифт.. //эксперементально установил что в обычной XP это Lucida Console 14. } else { SetCurrentConsoleFontEx =(SETCURRENTCONSOLEFONTEX) GetProcAddress(hmod, "SetCurrentConsoleFontEx"); // берем адрес функции if (!SetCurrentConsoleFontEx) {cout<<"error\n" ; exit(1);} // если ошибка ZeroMemory(&cfon, sizeof(CONSOLE_FONT_INFOEX)); cfon.cbSize=sizeof(CONSOLE_FONT_INFOEX); //cfon.nFont=10; cfon.FontFamily=54; // Lucida Console if (!SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), false, &cfon)) cout<<"error"; } SetConsoleOutputCP(1251) ; // устанавливаем кодировку вывода // END unsigned short int choise; cout << "-----START_Makros_2.0-------------------------------------------" << endl << endl; cout << "Выберите пункт, введя число\n\n"; cout << "1-Физика 2-Математика"; cout << endl; cout << "\nПункт - "; cin >> choise; cout << endl; if (choise == 1) { physic (); } if (choise == 2) { math (); } if ((choise != 1) && (choise != 2)) { cout << "<Ошибка! Введите коректное число!>" << endl << endl << endl; return main (); } return 0; } // -------------END------------------------------------------------------------------------------------- //---------------Раздел физика-------------------------------------------------------------------------- int physic () { unsigned short int choiseP; cout << "-----NEXT-------------------------------------------------------" << endl; cout << "Раздел физики" << endl; cout << "Выбор формулы:\n\n"; cout << "1-Нагревание 2-Горение"; cout << endl; cout << "\nФормула - "; cin >> choiseP; cout << endl << endl; if (choiseP == 1) { nagrev (); } if (choiseP == 2) { gorenie (); } if ((choiseP != 1) && (choiseP != 2)) { cout << endl << "<Ошибка! Введите коректное число!>"; return physic (); } return 0; } //-------------------------------------------------------------------------------------------------------------- //----------------------Функция нагревания---------------------------------------------------------------------- int nagrev () { const int N_zolot=130, N_rtyt=140, N_svinecc=140, N_olovo=230, N_serebro=250, N_med=400, N_ccink=400, N_latyn=400, N_zhelezo=460, N_stal=500, N_chugyn=540, N_graphit=750, N_labsteklo=840, N_kirpich=880, N_alumini=920, N_maslopodsol=1700, N_led=2100, N_kerosin=2100, N_efir=2350, N_derevodyb=2400, N_spirt=2500, N_voda=4200; unsigned short int choise1; cout << "-----NEXT-------------------------------------------------------" << endl; cout << "Вычисление энергии нагревания вещества" << endl << endl; cout << "Выбор вещества:\n\n"; cout << "1-Золото 2-Ртуть 3-Свинец 4-Олово 5-Серебро"; cout << endl << "6-Медь 7-Цинк 8-Латунь 9-Железо 10-Сталь"; cout << endl << "11-Чюгун 12-Графит 13-Лаб стекло 14-Кирпич 15-Алюминий"; cout << endl << "16-Масло 17-Лёд 18-Керосин 19-Эфир 20-Дерево (Дуб)"; cout << endl << "21-Спирт 22-Вода"; cout << endl << "\nВещество - "; cin >> choise1; switch (choise1) { case 1: { cout << "Хорошо, введите массу золота"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_zolot; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг золота выделилось " << Q << " Дж энергии" << endl; cout << "================================================================"; } break; case 2: { cout << "Хорошо, введите массу ртути"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_rtyt; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг ртути выделилось " << Q << " Дж энергии" << endl; cout << "================================================================"; } break; case 3: { cout << "Хорошо, введите массу свинца"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_svinecc; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг свинца выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 4: { cout << "Хорошо, введите массу олова"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_olovo; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг олова выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 5: { cout << "Хорошо, введите массу серебра"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_serebro; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг серебра выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 6: { cout << "Хорошо, введите массу меди"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_med; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг меди выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 7: { cout << "Хорошо, введите массу цинка"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_ccink; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг цинка выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 8: { cout << "Хорошо, введите массу латуни"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_latyn; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг латуни выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 9: { cout << "Хорошо, введите массу железа"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_zhelezo; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг железа выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 10: { cout << "Хорошо, введите массу стали"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_stal; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг стали выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 11: { cout << "Хорошо, введите массу чугуна"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_chugyn; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг чугуна выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 12: { cout << "Хорошо, введите массу графита"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_graphit; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг графита выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 13: { cout << "Хорошо, введите массу лабораторного стекла"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_labsteklo; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг лаб стекла выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 14: { cout << "Хорошо, введите массу кирпича"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_kirpich; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг кирпича выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 15: { cout << "Хорошо, введите массу алюминия"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_alumini; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг алюминия выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 16: { cout << "Хорошо, введите массу масла подсолнечного"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_maslopodsol; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг масла выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 17: { cout << "Хорошо, введите массу льда"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_led; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг льда выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 18: { cout << "Хорошо, введите массу керосина"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_kerosin; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг керосина выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 19: { cout << "Хорошо, введите массу эфира"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_efir; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг эфира выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 20: { cout << "Хорошо, введите массу древесины (Дуб)"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_derevodyb; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг древесины выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 21: { cout << "Хорошо, введите массу спирта"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_spirt; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг спирта выделилось" << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; case 22: { cout << "Хорошо, введите массу воды"; int mass; cout << endl; cout << "Масса - "; cin >> mass; long Q = mass * N_voda; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При нагревании " << mass << " кг воды выделилось " << Q << " Дж энергии"<< endl; cout << "================================================================"; } break; default: { cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl; return nagrev (); } } backer (); } //----------------END------------------------------------------------------------------------- //----------------Функция горения------------------------------------------------------------- int gorenie () { const double S_poroh=0.38, S_torph=1.4, S_kamugol=2.7, S_spirt=2.7, S_drovugol=3.4, S_gas=4.4, S_neft=4.4, S_benzin=4.6, S_kerosin=4.6; const unsigned int S_drova=1, S_antracit=3, S_vodorod=12; unsigned short int choise2; cout << "-----NEXT-------------------------------------------------------" << endl; cout << "Вычисление энергии от сгоревшего топлива" << endl << endl; cout << "Выбор топлива:\n\n"; cout << "1-Порох 2-Дрова 3-Торф 4-Каменный уголь 5-Спирт"; cout << endl << "6-Антрацит 7-Др уголь 8-Газ 9-Нефть 10-Бензин"; cout << endl << "11-Керосин 12-Водород"; cout << endl; cout << "\nТопливо - "; cin >> choise2; switch (choise2) { case 1: { cout << "Хорошо, введите массу пороха"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_poroh; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг пороха выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 2: { cout << "Хорошо, введите массу дров"; int mass; cout << endl; cout << "Масса - "; cin >> mass; unsigned int Q = mass * S_drova; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг дров выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 3: { cout << "Хорошо, введите массу торфа"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_torph; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг торфа выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 4: { cout << "Хорошо, введите массу каменного угля"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_kamugol; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг угля выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 5: { cout << "Хорошо, введите массу спирта"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_spirt; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг спирта " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 6: { cout << "Хорошо, введите массу антрацита"; int mass; cout << endl; cout << "Масса - "; cin >> mass; unsigned int Q = mass * S_antracit; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг антрацита выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 7: { cout << "Хорошо, введите массу древесного угля"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_drovugol; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг др угля выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 8: { cout << "Хорошо, введите массу газа"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_gas; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг газа выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 9: { cout << "Хорошо, введите массу нефти"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_neft; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг нефти выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 10: { cout << "Хорошо, введите массу бензина"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_benzin; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг бензина выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 11: { cout << "Хорошо, введите массу керосина"; int mass; cout << endl; cout << "Масса - "; cin >> mass; double Q = mass * S_kerosin; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг керосина выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; case 12: { cout << "Хорошо, введите массу водорода"; int mass; cout << endl; cout << "Масса - "; cin >> mass; unsigned int Q = mass * S_vodorod; cout << endl << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "При сгорании " << mass << " кг водорода выделилось " << Q << " * 10000000 Дж энергии"<< endl; cout << "================================================================"; } break; default: { cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl; return gorenie (); } } backer (); } //----------END----------------------------------------------------------------------------------- //---------------Раздел математика---------------------------------------------------------------- int math () { unsigned short int choiseM; cout << "-----NEXT-------------------------------------------------------" << endl; cout << "Раздел математики" << endl; cout << "Выбор пункта:\n\n"; cout << "1-Квадратные уравнения 2-Кубические уравнения 3-Ряд Фибоначи"; cout << endl; cout << "\nПункт - "; cin >> choiseM; cout << endl << endl; if (choiseM == 1) { x2yravn (); } if (choiseM == 2) { x3yravn (); } if (choiseM == 3) { fibmain (); } if ((choiseM != 1) && (choiseM != 2) && (choiseM != 3)) { cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl; return math (); } return 0; } //-----------END--------------------------------------------------------------------------------------- //----------Кубические уравнения----------------------------------------------------------------------- int x3yravn () { cout << "-----NEXT-------------------------------------------------------" << endl; double a, b, c, *x; double error; cout << "Ввод уравнения: " << endl; cout << endl << "(a=) "; cin >> a; cout << "(b=) "; cin >> b; cout << "(c=) "; cin >> c; error = GetX3yravn (x, a, b, c); if (!error) { backer (); } else { cout << endl << "Ошибка! а=0 или b=0, уравнение не кубическое" << endl; x3yravn (); } char response; cin >> response; return 0; } // Функция нахождения корней кубического уравнения double GetX3yravn (double *x,double a,double b,double c) { double value = 0; if ((a == 0) || (b == 0)) value = 1; else { double q, r, q3, r2; value = 0; q=(a*a-3.*b)/9.; r=(a*(2.*a*a-9.*b)+27.*c)/54.; r2=r*r; q3=q*q*q; if(r2<q3) { double t=acos(r/sqrt(q3)); a/=3.; q=-2.*sqrt(q); x[0]=q*cos(t/3.)-a; x[1]=q*cos((t+M_2PI)/3.)-a; x[2]=q*cos((t-M_2PI)/3.)-a; cout << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "Найдено три корня, x1 = " << x[0] << ", x2 = " << x[1] << ", x3 = " << x[2] << endl; cout << "================================================================" << endl; } else { double aa,bb; if(r<=0.) r=-r; aa=-pow(r+sqrt(r2-q3),1./3.); if(aa!=0.) bb=q/aa; else bb=0.; a/=3.; q=aa+bb; r=aa-bb; x[0]=q-a; x[1]=(-0.5)*q-a; x[2]=(sqrt(3.)*0.5)*fabs(r); if(x[2]==0.) { cout << "=====РЕЗУЛЬТАТ=================================================="; cout << "Найдено два корня, x2 = " << x[1] << ", x3 = " << x[2] << endl; cout << "================================================================" << endl; } cout << "=====РЕЗУЛЬТАТ=================================================="; cout << "Найден один корень, x = " << x[0] << endl; cout << "================================================================" << endl; } value = 0; } return value; } //-------END------------------------------------------------------------------------------------- //----------Квадратные уравнения----------------------------------------------------------------- int x2yravn () { double a, b, c, x1, x2; double error; cout << "-----NEXT-------------------------------------------------------" << endl; cout << "Ввод уравнения: " << endl; cout << endl << "(a=) "; cin >> a; cout << "(b=) "; cin >> b; cout << "(c=) "; cin >> c; error = GetX2yravn (a, b, c, &x1, &x2); if (!error) { backer (); } else { cout << endl << "Ошибка! а=0, уравнение не квадратное" << endl; x2yravn (); } char response; cin >> response; return 0; } // Функция нахождения корней квадратного уравнения double GetX2yravn (double a, double b, double c, double *px1, double *px2) { double value = 0; if (a == 0) value = 1; else { double D; D = b*b - 4*a*c; cout << endl << "Дискриминант равен " << D << endl; if (D < 0) { cout << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "Корней не найдено, дискриминант меньше ноля" << endl; cout << "================================================================" << endl; } if (D == 0) { *px1 = -b / (2*a); cout << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "Найден один корень, x = " << *px1 << endl; cout << "================================================================" << endl; } if (D > 0) { *px1 = (-b + sqrt(D)) / (2*a); *px2 = (-b - sqrt(D)) / (2*a); cout << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << "Найдено два корня, x1 = " << *px1 << ", x2 = " << *px2 << endl; cout << "================================================================" << endl; } value = 0; } return value; } //-------END--------------------------------------------------------------------------- //---------Ряд Фибоначи--------------------------------------------------------------------------- int fibmain () { unsigned int answer, position; cout << "-----NEXT-------------------------------------------------------" << endl; cout << "Ряд Фибоначи" << endl; cout << "Выбор позиции числа в ряду? "; cout << "\nПозиция - "; cin >> position; cout << endl; answer = GetFib(position); cout << "=====РЕЗУЛЬТАТ=================================================="; cout << endl << answer << " является " << position << " числом ряда Фибоначи! " << endl; cout << "================================================================"; backer (); return 0; } // Функция определения числа unsigned int GetFib (unsigned int n) { unsigned int minusTwo=1, minusOne=1, answer=2; if (n < 3) return 1; for (n-=3; n!=0; n--) { minusTwo = minusOne; minusOne = answer; answer = minusOne + minusTwo; } return 0; } //----END-------------------------------------------------------------------------------------------- //----Функция возврата------------------------------------------------------------------------------ int backer () { unsigned short int back; cout << endl << endl<< "Вернуться в главное меню? (Да - 1, Нет - 2)"; cin >> back; cout << endl << endl; switch (back) { case 1: { cout << "-----END---------------------------------------------------------"; cout << endl << endl << endl << endl << endl << endl << endl; return main(); } break; case 2: { cout << endl << "Можете закрыть программу."; char response; cin >> response; } break; default: { cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl; return backer (); } } } //-------END----------------------------------------------------------------------------------------- |
Отправлено: 17:54, 31-03-2009 | #13 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать А чего, для кубических уравнений, ввод только для трёх значений, а функция принимает 4 параметра? По моему кубическое уравнение: Ах^3 + Bx^2 + Cx + D = 0 четыре, а у тебя три...
|
------- Отправлено: 19:43, 31-03-2009 | #14 |
Старожил Сообщения: 158
|
Профиль | Отправить PM | Цитировать Drongo, а вот сюда посмотри тут так: http://www.tdoc.ru/c/cpp-sources/alg...iya-page2.html посмотри обе страницы
|
Отправлено: 21:50, 31-03-2009 | #15 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать XEN_STRANGER, здесь я получаю значения арккосинуса от х значения последнего от -1 до 1 идущие с шагом 0.01.
Этот зачёркнутый кружок - греческая буква φ (Фи), означает угол. Да можно обозначить любой переменной, главное что б было понятно. |
Отправлено: 04:21, 01-04-2009 | #16 |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать Цитата XEN_STRANGER:
![]() ![]() ![]() ![]() Цитата XEN_STRANGER:
![]() Цитата XEN_STRANGER:
|
|||
------- Отправлено: 14:19, 02-04-2009 | #17 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Решение квадратных уравнений на С++ | ShadowMas | Программирование и базы данных | 29 | 20-05-2011 17:23 | |
Wireless - Посоветуйте WI-FI решение. | krec | Сетевое оборудование | 2 | 29-06-2009 10:39 | |
Теория - Решение системы уравнений | quaker_strelok | Программирование и базы данных | 3 | 23-09-2007 14:29 | |
*Теория* | Решение системы линейных уравнений | DeadBoy | Программирование и базы данных | 5 | 23-02-2005 17:12 | |
Терминальное решение | Baboon | Сетевые технологии | 2 | 06-10-2003 17:13 |
|