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

Пожалуйста нужно исправить ошибки в коде или написать его заного

24.01.2019, 16:45. Показов 1001. Ответов 1

Author24 — интернет-сервис помощи студентам
Тема курсовой роботы: Разработка программы для численного решения уравлений методом половинного деления
Помогите пожалуйста написать данный код для программы на языке с++.
У меня есть сам код могу ниже скину но там куча ошибок и не могу разобраться в нем.
Это очень срочно помогите пожалуйста.

#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <locale.h>
#include <windows.h>
#include <graphics.h>
const int X0=400, Y0=300, k=100;
const float pi=3.14;
int n=0, v, n_max, n1;
float a, b, c, gr1, gr2, eps;
float q, r, Q, R, m, A, B, R1, Q1;
float x, f1, f2, fm, x1, g, s, f, pog, pog1, j, t;
float F1(float x){
return a*x*x*x+b*x+c;
}
float F2(float x){
return a*sin(x+b)+c;
}
float F3(float x){
return a*log(fabs(x+b))+c;
}
float sign(float x){
if(x==0)return 0;
if(x>0) return 1;
else return -1;
}
#include"graphic.cpp"
main() {
setlocale(LC_CTYPE, "Russian");
printf ("Выберите уравнение:\n1)y=a*x*x*x+b*x+c\n2)y=a*sin(x+b)+c\n3)y=a*ln|x+b|+c\nВвод:");
scanf("%d", &v);
switch(v)
{
case 1:break;
case 2:break;
case 3:break;
defaultrintf("Введен неверное значение! Программа закрывается!\n");
system("pause");
exit(0);
}
fflush(stdin);
printf("Введите точность eps:");
while(!scanf("%f", &eps)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\n Введите точность eps:");
}
if(eps<0||eps==0){
printf("Точность не может быть отрицательной или равной нулю!Программа закрывается!\n");
system("pause");
exit(0);
}
fflush(stdin);
printf("Введите границы:\ngr1=");
while(!scanf("%f", &gr1)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\ngr1=");
}
fflush(stdin);
printf("gr2=");
while(!scanf("%f", &gr2)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\ngr2=");
}
if(gr1>gr2){
s=gr1;
g=gr2;
gr1=g;
gr2=s;
}
g=gr1;
s=gr2;
fflush(stdin);
printf("Введите коэффициенты:\na=");
while(!scanf("%f", &a)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\na=:");
}
fflush(stdin);
printf("b=");
while(!scanf("%f", &b)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\nb=");
}
fflush(stdin);
printf("c=");
while(!scanf("%f", &c)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\nc=:");
}
fflush(stdin);
printf("Введите максимальное число делений:");
while(!scanf("%d", &n_max)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\n Введите максимальное число делений:");
}
if(n_max<0||n_max==0){
printf("Количество делений не может быть вещественным числом или меньше, либо равным нулю!\nПрограмма закрывается!\n");
system("pause");
exit(0);
}
fflush(stdin);
switch(v)
{case 1:
while(fabs(gr2-gr1)>eps){
n++;
x=(gr1+gr2)/2;
f1=F1(x);
f2=F1(gr2);
if(fabs(f1)<eps)
{break;}
if (f2*f1<0)
{gr1=x;}
else
{gr2=x;}
}
if(a==0&&b!=0){
x1=-c/b;
break;
}
if(a!=0){
q=b/a;
r=c/a;
Q=-(3*q)/9;
R=(27*r)/54;
Q1=pow(Q, 3);
R1=pow(R, 2);
if(R1<Q1)
{m=acos(R/sqrt(Q1))/3;
x1=-2*sqrt(Q)*cos(m);
}
if(R1>=Q1)
{A=-sign(R)*pow(fabs(R)+sqrt(R1-Q1), 0.33);
if(A!=0)
{B=Q/A;
}
if(A==0)
{B=0;
}
x1=(A+B);
}
}
if(!((g<=x1)&&(s>=x1))||a==0&&b==0){
printf("В интервале [%.3f;%.3f] корня нет!\n", g, s);
system("pause");
exit(0);
}
x=(gr2+gr1)/2;
fm=F1(x);
break;
case 2:
while(fabs(gr2-gr1)>eps){
n++;
x=(gr1+gr2)/2;
f1=F2(x);
f2=F2(gr2);
if(fabs(f1)<eps)
{break;}
if (f2*f1<0)
{gr1=x;}
else
{gr2=x;}
}
if(c/a>1||c/a<-1){
printf("В интервале [%.3f;%.3f] корня нет!\n", g, s);
system("pause");
exit(0);
}
if(!((g<=x1)&&(s>=x1))||a==0){
printf("В интервале [%.3f;%.3f] корня нет!\n", g, s);
system("pause");
exit(0);
}
x=(gr2+gr1)/2;
for(n1=0;n1<=1000;n1++)
{
j=-asin(c/a)-b-pi*n1;
if(((x-0.03*x)<=j)&&((x+0.03*x)>=j)){
x1=j;
}
}
for(n1=0;n1<=1000;n1++){
j=-asin(c/a)-b+pi*n1;
if(((x-0.03*x)<=j)&&((x+0.03*x)>=j)){
x1=j;
}
}
fm=F2(x);
break;
case 3:
while(fabs(gr2-gr1)>eps){
n++;
x=(gr1+gr2)/2;
f1=F3(x);
f2=F3(gr2);
if(fabs(f1)<eps)
{break;}
if (f2*f1<0)
{gr1=x;}
else
{gr2=x;}
}
x1=pow(M_E, (-c/a))-b;
if(!((g<=x1)&&(s>=x1))||a==0){
printf("В интервале [%.3f;%.3f] корня нет!\n", g, s);
system("pause");
exit(0);
}
if(gr2+b<0){
printf("В интервале [%f;%f] корня нет!\n", g, s);
system("pause");
exit(0);
}
x=(gr2+gr1)/2;
fm=F3(x);
break;
}
pog1=fabs(x-x1);
if(x1>x){
pog=fabs((x-x1)/x1)*100;
}
if(x==0&&x1==0){
pog=0;
}
else{
pog=fabs((x1-x)/x)*100;
}
if(n>n_max){
printf("За %d шаг(ов) корень не найден. Продолжаем?\n1)Да\n2)Нет\nВвод:", n_max);
while(!scanf("%d", &t)){
while(getchar() != '\n');
printf("Ошибка ввода!Попробуйте снова!\nВвод:");
}
if(t==1){
printf("Приближенное x=%.3f\nF(x)=%.3f\nКоличество делений n=%d \nТочное x=%.3f\nАбсолютная погрешность=%.3f\nОтносительная погрешность=%.3f%%\n", x, fm, n, x1, pog1, pog);
system("pause");
}
if(t==2){
printf("Корень не подсчитан!Программа закрывается!\n");
system("pause");
exit(0);
}
else{
printf("Неверный ввод!Программа закрывается!\n");
system("pause");
exit(0);
}
}
else{
printf("Приближенное x=%.3f\nF(x)=%.3f\nКоличество делений n=%d \nТочное x=%.3f\nАбсолютная погрешность=%.3f\nОтносительная погрешность=%.3f%%\n", x, fm, n, x1, pog1, pog);
system("pause");
}
initwindow(800, 600);
Axes();
Plot();
getch();
closegraph();
}
graphic.cpp – отображение графиков функций и процесс вычисления корня
float ScreenX(float x){
return(x-g)/(s-g)*getmaxx();
}
float ScreenY(float y){//ïåðåâîä y â êîîðäèíàòû ýêðàíà
float y_min, y_max;
y_min=-(600-Y0)/k;
y_max=Y0/k;
return getmaxy() - (y-y_min)/(y_max-y_min)*getmaxy();
}
void Point(float x, float y, int color){
float xe, ye;
xe=ScreenX(x);
ye=ScreenY(y);
if(xe>=0&&xe<800&&ye>=0&&ye<600)
putpixel(xe, ye, color);
}
void Plot(){
float x, h, x_min, x_max;
h=0.0001;//øàã
for(x=g;x<=s;x+=h)
switch(v)
{
case 1:
Point(x, F1(x), RED);
break;
case 2:
Point(x, F2(x), RED);
break;
case 3:
Point(x, F3(x), RED);
break;
}
}
void Axes()
{
setcolor(8);
line(400, 0, 400, 599);
line(0, 300, 799, 300);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2019, 16:45
Ответы с готовыми решениями:

Исправить ошибки в коде, пожалуйста!
Ребята, помогите мне с задачей, пожалуйста. Я запуталась, никак решить не могу. Необходимо...

Помогите, пожалуйста, исправить ошибки в коде
const int n=20; int b; int i,j,c; for (i=1;i&gt;n,i++) { c=a; for(j=i-1;j&gt;=0&amp;&amp;a&gt;c;j--) a=a; ...

Пожалуйста, нужно найти ошибки в этом коде, нужно сделать в Codeblocks!
Задание было такое:Написать программу для работы с одномерным массивом размера N (0 &lt; N &lt; 100). В...

Подскажите, пожалуйста, как исправить ошибки в коде (новичок)
Здравствуйте! Работаю с DOSBox 0.74-2 и MASM32. 3. Здесь ошибок нет (вроде), но и результат не...

1
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
24.01.2019, 17:56 2
здесь код более компактнее:
http://studlab.com/news/metod_... -07-14-886
чем то не подходит?
формулу полинома там тока поменять на свою.
0
24.01.2019, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2019, 17:56
Помогаю со студенческими работами здесь

нужно исправить ошибки в коде
вобщем, я уже писала по поводу этого задания: Описать класс, реализующий стек. Написать...

Нужно исправить ошибки в коде
Нужна помощь в написании скрипта using UnityEngine; using System; using System.Collections;...

Нужно исправить ошибки в коде
Код для разработки приложения &quot;Кинозал&quot;, представляет собой систему бронирования билетов, выполняет...

Нужно исправить 2 ошибки в коде
собственно, САБЖ. нужно исправить 2 ошибки в коде, чтобы его можна было скомпилить и сделать из...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru