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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2007, 00:09   #1
Coach
Новичок
Джуниор
 
Регистрация: 08.11.2007
Сообщений: 2
По умолчанию Нужна помощь по Си.

блин люди помогайте как можете.
Учусь в Политехе на ФТК и нужно две программы сдать до конца года. Прошу о помощи
1) Программа для взятия интеграла
там можно самую бональную, но программа должна уметь вычислять 2 методами, около 5 видов функций.

Вот впринципе код интеграла, но нужно его изменить и сделать попроще...
Код:
// Integral.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"



#define		FUNCTION_SIN	1
#define		FUNCTION_COS	2
#define		FUNCTION_X2		3
#define		FUNCTION_X3		4
#define		FUNCTION_X4		5

#define     METHOD_FIRST	1
#define		METHOD_GRAPHIC  2

// Globals


int g_nSelectedFunction = 0, g_nSelectedMethod = 0;
char *g_lpszFunctions[] = { "sinX", "cosX", "x^2", "x^3", "x^4" };
char *g_lpszMethods[] = { "function", "graphic" };
const int g_nNumFunctions = 5;
const int g_nNumMethods = 2;
float g_fUp, g_fLow;
float g_fIntegral;


// Functions
void Hello();
void Dialog();
float CalcIntegral();
float FirstMethod( int nFunction );
float GraphicMethod( int nFunction );
void PrintResult( float fResult );



int main( int argc, char* argv[] )
{
	Hello();
	Dialog();
	PrintResult( CalcIntegral() );
	return( 0 );
}

//-----------------------------------------------
// enter
//-----------------------------------------------

void Hello()
{
	printf("calculate integral ver1.0 \n");
}

//-----------------------------------------------
// Dialog with user
//-----------------------------------------------

void Dialog()
{
	do {
		printf("choose your function \n");
		for( int i = 0; i < g_nNumFunctions; i++ )
			printf("%d. %s\n", i + 1, g_lpszFunctions[ i ] );
		scanf("%d", &g_nSelectedFunction );
	} while( g_nSelectedFunction < 1 || g_nSelectedFunction > 6 );

	do {
		printf("choose method \n");
		for( int i = 0; i < g_nNumMethods; i++ )
			printf("%d. %s\n", i + 1, g_lpszMethods[ i ] );
		scanf("%d", &g_nSelectedMethod );
	} while( g_nSelectedMethod < 1 || g_nSelectedMethod > 2 );

	printf("enter the low and up limit\n");
	scanf("%f %f", &g_fLow, &g_fUp ); 
	
}

//-----------------------------------------------
// Calculating the integral
//-----------------------------------------------

float CalcIntegral()
{
	switch( g_nSelectedMethod )
	{
		case METHOD_FIRST:
			return( FirstMethod( g_nSelectedFunction ) );
		case METHOD_GRAPHIC:
			return( GraphicMethod( g_nSelectedFunction ) );
	}
	return( 0 );
}

//-----------------------------------------------

float FirstMethod( int nFunction )
{
	switch( nFunction )
	{
		case FUNCTION_SIN:
			return( -cosf( g_fUp ) + cosf( g_fLow ) );
		case FUNCTION_COS:
			return( sinf( g_fUp ) - sinf( g_fLow ) );
		case FUNCTION_X2:
			return( ( g_fUp * g_fUp * g_fUp - g_fLow * g_fLow * g_fLow ) / 3.0f );
		case FUNCTION_X3:
			return( ( g_fUp * g_fUp * g_fUp * g_fUp - g_fLow * g_fLow * g_fLow * g_fLow ) / 4.0f );
		case FUNCTION_X4:
			return( ( g_fUp * g_fUp * g_fUp * g_fUp * g_fUp - g_fLow * g_fLow * g_fLow * g_fLow * g_fLow ) / 5.0f );
	}
	return( 0 );
}

//-----------------------------------------------

float GraphicMethod( int nFunction )
{
	float fDiff = ( g_fUp - g_fLow ) / 100;
	float fDiffHalf = fDiff * 0.5f;
	float fResult = 0;
	float fX = 0;
	for( int i = 0; i < 100; i++ )
	{
		fX = g_fLow + fDiff * i + fDiffHalf;
		switch( nFunction )
		{
			case FUNCTION_SIN:
				fResult += sin( fX ) * fDiff;
				break;
			case FUNCTION_COS:
				fResult += cos( fX ) * fDiff;
				break;
			case FUNCTION_X2:
				fResult += fX * fX * fDiff;
				break;
			case FUNCTION_X3:
				fResult += fX * fX * fX * fDiff;
				break;
			case FUNCTION_X4:
				fResult += fX * fX * fX * fX * fDiff;
				break;
		}
	}

	return( fResult );
}

//-----------------------------------------------
// Print result and shutdown program
//-----------------------------------------------

void PrintResult( float fResult )
{
	printf("your integral is %f \n enter any key to exit the programm\n", fResult );
	getchar();
}
2) Калькулятор
Плюс, минус, умножить, разделить - ну это я впринципе сделал уже. А вот нужен ещё перевод из одной системы счисления в другую, как это делать я не знаю.

Это конечно не долг к сессии но пипец нужно.

Последний раз редактировалось Coach; 08.11.2007 в 00:23.
Coach вне форума Ответить с цитированием
Старый 08.11.2007, 00:46   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

На нашем сайте смотрите (ссылка внизу на клуб программистов), там есть готовый калькулятор, выложен в учебных целях.
mihali4 вне форума Ответить с цитированием
Старый 08.11.2007, 00:52   #3
Coach
Новичок
Джуниор
 
Регистрация: 08.11.2007
Сообщений: 2
По умолчанию

*чувствую себя тупым*
хоть убейте не смог найти=).
Coach вне форума Ответить с цитированием
Старый 08.11.2007, 01:08   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Лабораторные работы => Математика в Delphi => Калькулятор
Отдельно ПОИСК по слову ПЕРЕВОД или СЧИСЛЕНИЯ.
mihali4 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по таб. *Иван* Microsoft Office Excel 1 22.11.2007 20:50
Нужна помощь LeoN Общие вопросы Delphi 12 18.03.2007 07:58
нужна помощь Селезнёв Microsoft Office Excel 1 02.03.2007 03:19
нужна помощь verto Помощь студентам 1 02.01.2007 07:48