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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 21:10   #1
Семоха Валерий
 
Регистрация: 04.10.2011
Сообщений: 7
По умолчанию Распознавание формулы из строки.

Здравствуйте, нужна помощь с лабораторной. Не знаю как подобраться.
Задание:
"Сосчитать определенный интеграл любой функции. На входе функция например "y=x +x^2" и участок на котором интегрируем, нужно посчитать интеграл."
Проблема с распознаванием формулы из строки, не знаю как подступиться. Находил в интернете программы, но они очень большие, нужно распознавание лишь простых формул со знаками "+", "-", "*", "/", "^".
И, к тому же, мне то всего лишь лабу задали, а там это курсовая.
Ссылка: http://www.cyberforum.ru/cpp/thread210734.html
Интеграл я посчитал (метод трапеций).
Считаю предварительно вводя функцию.
Очень нужна помощь, боюсь не осилю, уже с неделю бьюсь с распознаванием, как-то никак, а сдавать нужно.

Вот код, того, что у меня работает:
Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>

/*int stepen (int osn, int n)
{
	int p;
	for (p=1; n>1; --n)
		p=p*osn;
	return p;
}*/


float f (float x)//Функция, интеграл от которой берется 
{
	return x;
}

float Trap (float x0,float h,float x1) //Метод трапеций 
{ 
	float x,s;
	s=(f(x0)+f(x1))/2;
	for (x=x0+h; x<x1; x+=h) 
	{
		s+=f(x);
	}
	return s*h;
}

int main () 
{

	float r;
	float niz, verh;
	setlocale(LC_ALL, "Russian");

	printf ("Введите нижний предел интегрирования\t");
	scanf_s ("%f", &niz);
	printf ("Введите верхний предел интегрирования\t");
	scanf_s ("%f", &verh);

	r=Trap (niz,(verh+niz)/100,verh);
	printf ("Значение интеграла: %.3f", r);

	getch();
	return 0;
}
Если будете выкладывать примеры кода, то язык C (не C++)
Семоха Валерий вне форума Ответить с цитированием
Старый 17.12.2011, 16:06   #2
Семоха Валерий
 
Регистрация: 04.10.2011
Сообщений: 7
По умолчанию

Пробовал ниаписать простой калькулятор, который потом адаптировал бы под буквенные переменные, но в работе присутствуют ошибки, помогите исправить.

Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>

/*int stepen (int osn, int n)
{
	int p;
	for (p=1; n>1; --n)
		p=p*osn;
	return p;
}


float f (float x)//Функция, интеграл от которой берется 
{
	return x*x;
}

float Trap (float x0,float h,float x1) //Метод трапеций 
{ 
	float x,s;
	s=(f(x0)+f(x1))/2;
	for (x=x0+h; x<x1; x+=h) 
	{
		s+=f(x);
	}
	return s*h;
}

int main () 
{

	float r;
	float niz, verh;
	setlocale(LC_ALL, "Russian");

	printf ("Введите нижний предел интегрирования\t");
	scanf_s ("%f", &niz);
	printf ("Введите верхний предел интегрирования\t");
	scanf_s ("%f", &verh);

	r=Trap (niz,(verh+niz)/100,verh);
	printf ("Значение интеграла: %.3f", r);

	getch();
	return 0;
}*/


char c;

float number()
{
	float res=0;
	for(;;)
	{
		char c=getchar();
		if ((c>='0') && (c<='9'))
		{
			res=res*10+c-'0';
		}
		else
		{
		//	printf ("%f", res);
			putchar(c);
			return res;
		}

	}
}

float sloj();

float skobki()
{
	char c=getchar();
	if (c=='(')
	{
		float x=sloj();
		getchar();
		return x;
	}
	else
	{
		putchar(c);
		return number();
	}
}

float umnoj()
{
	float x=skobki();
	for (;;)
	{
		char c=getchar();
		switch (c)
		{
		case '*':
			x *= skobki();
			break;
		case '/':
			x /= skobki();
			break;
		default:
			putchar(c);
			return x;
		}
	}
}

float sloj()
{
	float x=umnoj();
	for (;;)
	{
		char c=getchar();
		switch (c)
		{
		case '+':
			x += umnoj();
			break;
		case '-':
			x -= umnoj();
			break;
		default:
			putchar(c);
			return x;
		}
	}
}

int main()
{
	float res=0;
	setlocale(LC_ALL, "Russian");
	printf ("Введите выражение: ");
	res=sloj();
	printf ("Результат: %f", res);

	getchar();
	return 0;

}
Семоха Валерий вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При удалении строки слетают формулы Enkoff Microsoft Office Excel 5 28.09.2011 17:16
распознавание командной строки danzel1 Общие вопросы C/C++ 2 10.06.2011 15:50
Изменение формулы при добавлении новой строки ggxxx Microsoft Office Excel 1 24.04.2010 10:09
Размер строки формулы? Placid Microsoft Office Excel 2 21.05.2008 14:18
Как сделать распознавание строки? Dimo444ka Общие вопросы Delphi 8 01.02.2008 22:14