Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2013, 15:15   #1
Nalia.dolpfin
 
Регистрация: 02.06.2013
Сообщений: 8
По умолчанию нахождения корней уравнения на си

здравствуйте мне нужно написать программу, чтобы при её запуске она предлагала на выбор какое я хочу решить уравнение квадратное или кубическое код и для кубического и для квадратного я написала а вот вместе их соединить не получается.
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <math.h>
#include <string.h>

int l1;
int l2;
int l3;
int l4;
int g1;
int g2;
int g3;



double f(double x)

{
	return 1*pow(x,3)-1*pow(x,2)-1*x;
}

int main()
{
	int kol=0;
	double d, t1,t2;
m:
	printf("\n choose the equation \n\n 1.a*x^3+b*x^2+c*x+d=0 \n\n or \n\n 2.a*x^2+b*x+c=0\n ");
	scanf("%i",kol);
	if (kol=1)
	{
		goto r;
	}
	else 
	{
		goto t;
	}
	r:
	printf ("\n  equation a*x^3+b*x^2+c*x+d=0 \n ");
printf ("\n  input a \n ");
	scanf("%i",&l1);
printf ("\n  input b \n ");
	scanf("%i",&l2);
printf ("\n  input c \n ");
	scanf("%i",&l3);
printf ("\n  input d \n ");
	scanf("%i",&l4);
	printf ("\n");

	float eps=0.01;
	double a,b,x,x0,x1,dx,y,v[6],w[3],z[4];
	int i,k,sh;
                a=-5;
			    b=5;
                y=f(a);
				x0=a;
				i=0;
                dx = (b - a)/10;//Мин шаг точность/10
                //Вычисления останавливаем когда добиваемся
                //требуемой точности вычислений eps < fabs(f(x))
                //или же достигаем конца промежутка
                for(x=x0;x<=b;x=x+dx)
				{
                if(f(x)==0)
				{
					y=f(x-eps);
					x0=x-eps;
					x=x-eps;
				}
                
				if(y*f(x)<0)
				{
					v[i]=x0;
					v[i+1]=x;
					y=f(x);
					x0=x;
					i=i+2;
					
				}
				else
				{
                   y=f(x);
				   x0=x;
				}
				}
   
				k=0;
				for(i=0;i<=5;i=i+2)
				{
					a=v[i];
					b=v[i+1];
					sh=0;
					x1=(a+b)/2;
					while (fabs(f(x1))>=eps)
					{
						if (f(x1)*f(a)<0)
						{
							b=x1;
						}
						else
						{
							a=x1;
					}
						x1=(a+b)/2;
						sh=sh+1;
					}
					w[k]=x1;
					z[k+1]=sh;
					k=k+1;
					}
				for (i=0; i<3;i++)
				{
				printf("%f\n", w[i]);
				}	
	t:
	printf ("\n  equation a*x^2+b*x+c=0\n \n ");
printf ("\n  input a \n ");
	scanf("%i",&g1);
printf ("\n  input b \n ");
	scanf("%i",&g2);
printf ("\n  input c \n ");
	scanf("%i",&g3);
	d = g2*g2-4*g1*g3;
	if (d>0)
	{
		t1=((-g2-sqrt(d))/2*g1);
t2=((-g2+sqrt(d))/2*g1);
	}
	if (d=0)
	{
		t1=((-g2)/2*g1);
	}
	if (d<0)
	{
		printf("/n no roots/n");
	}
	
		goto m;		
 _getch();
}
Nalia.dolpfin вне форума Ответить с цитированием
Старый 16.06.2013, 00:05   #2
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Когдато писал нечто подобное, но только немного обширнее, и без кубического уравнения(зато с биквадратным).Для удобства вам лучше оформить решения в виде отдельных функций, а в main набросать меню, которое в зависимости от действий пользователя будет вызывать вункции решения. В общем прикрепляю свои труды, в них разберётесь сами, и наподобии тамошнего меню можете набросать своё.
Brain Helper.rar
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 16.06.2013, 09:22   #3
Nalia.dolpfin
 
Регистрация: 02.06.2013
Сообщений: 8
По умолчанию

Спасибо большое))
Nalia.dolpfin вне форума Ответить с цитированием
Старый 16.06.2013, 16:02   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Nalia.dolpfin старайтесь не использовать в своем коде goto. Поверьте на слово без него можно обойтись...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождения корней уравнения Veryn4ik1993 C# (си шарп) 1 17.03.2013 12:38
определение корней уравнения Dellinger Помощь студентам 0 11.10.2011 19:51
поиск корней уравнения шурег Общие вопросы Delphi 8 15.12.2010 11:41
функция нахождения корней линейного уровнения bnv Общие вопросы C/C++ 4 04.03.2009 16:51
Методы нахождения корней уравнения werser Помощь студентам 8 20.02.2008 22:41