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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2016, 15:03   #1
Jazz-
 
Регистрация: 14.10.2016
Сообщений: 8
Вопрос Функции

Надо вычислить уравнение при сменным у. при том есть отдельная функция для t(x). Сначала выдавало 0, но когда я сделал тип функции везде long double консоль вообще стал пропадать после ввода сменной у. Помогите пожалуйста, подскажите где ошибки.

Код:

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

int factorial(int n)
{
  if (n == 0) return 1;
  else return factorial(n)*factorial(n-1);
}
int k;
long double t=0, y, sum=0;
long double tx(long double x)
{  long double m, l;
		for(k=0;k<11;)
	{
			m=(pow((long double)x,(long double)(2*k+1)))/(factorial(2*k+1));
			m+=m;
			l=(powf((long double)x,(long double)(2*k)))/(factorial(2*k));
			l+=l;
			k++;
	}
t=m/l;
return (t);
}
long double sumy(long double y)
{
	sum=(1.7*tx(0.25)+2*tx(1+y))/(6-tx((y-1)*(y+1))); 
	return (sum);
}


long double main(long double y)
{
	printf("Enter the {y}");
	 scanf_s("%d", &y); 
	
	 sumy(y);	

	printf("%L", sum);
	return 0;
	_getch();
}
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.
Изображения
Тип файла: png ый.png (17.1 Кб, 153 просмотров)

Последний раз редактировалось Alex11223; 14.10.2016 в 15:06.
Jazz- вне форума Ответить с цитированием
Старый 14.10.2016, 15:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем вы сделали такой странный main?

Он не для этого нужен, это просто точка входа программы.
Поэтому он может быть только чем-нибудь типа
Код:
int main()
или
Код:
int main(массив_строк argv, int argc /* кол-во строк в argv */)
если нужны параметры коммандой строки (то есть если в cmd, терминале и т.п. вашу программу запускают как myprogram.exe param1 "param 2" --help и т.п.)

и int он возвращает потому что это статус завершения программы. Обычно 0 если все ок и другое число в других случаях.

То есть например
Код:
int main()
{
    printf("Enter file path: ");
    scanf(.....)
    if (файл не найден)
    {
        printf("Error: file not found");
        return 1;
    }

    // все ок, сделать то, что программа должна делать
    ....................

    return 0;
}
Часто этот статус никому не нужен, но в некоторых случаях бывает важен. Например если вашу программу запускает другая программа и хочет узнать нормально ли она отработала.

Цитата:
консоль вообще стал пропадать
У вас просто getch после return, а не до.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 14.10.2016 в 15:22.
Alex11223 вне форума Ответить с цитированием
Старый 14.10.2016, 15:21   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

отримати
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.10.2016, 15:23   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
У вас просто getch после return, а не до.
разве за всякого рода getch еще не сжигают на кострах?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.10.2016, 15:26   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А должны сжигать? Зачем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.10.2016, 15:28   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А должны сжигать?
определенно
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.10.2016, 15:35   #7
Jazz-
 
Регистрация: 14.10.2016
Сообщений: 8
По умолчанию

Вот, исправил, как вы говорили, но все равно консоль пропадает, а на счёт правильности алгоритма так вообще молчу. Что ещё может быть не в порядке?
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>

int factorial(int n)
{
  if (n == 0) return 1;
  else return factorial(n)*factorial(n-1);
}
int k;
long double t, sum=0;
float y;
long double tx(long double x)
{  long double m, l;
		for(k=0;k<11;)
	{
			m=(pow((long double)x,(long double)(2*k+1)))/(factorial(2*k+1));
			m+=m;
			l=(powf((long double)x,(long double)(2*k)))/(factorial(2*k));
			l+=l;
			k++;
	}
t=m/l;
return (t);
}
long double sumy(long double y)
{
	sum=(1.7*tx(0.25)+2*tx(1+y))/(6-tx((y-1)*(y+1))); 
	return (sum);
}


int main()
{
	printf("Enter the {y}");
	 scanf_s("%f", &y); 
	
	 sumy(y);	

	printf("%L", sum);
	_getch();
	return 0;
}
Jazz- вне форума Ответить с цитированием
Старый 14.10.2016, 15:56   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Для начала форматируйте код нормально, а не как попало.
Например так:

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

int factorial(int n)
{
	if (n == 0) return 1;
	else return factorial(n)*factorial(n - 1);
}

int k;
long double t, sum = 0;
float y;

long double tx(long double x)
{
	long double m, l;
	for (k = 0; k < 11;)
	{
		m = (pow((long double)x, (long double)(2 * k + 1))) / (factorial(2 * k + 1));
		m += m;
		l = (powf((long double)x, (long double)(2 * k))) / (factorial(2 * k));
		l += l;
		k++;
	}
	t = m / l;
	return (t);
}

long double sumy(long double y)
{
	sum = (1.7*tx(0.25) + 2 * tx(1 + y)) / (6 - tx((y - 1)*(y + 1)));
	return (sum);
}


int main()
{
	printf("Enter the {y}");
	scanf_s("%f", &y);

	sumy(y);

	printf("%L", sum);
	_getch();
	return 0;
}

Как/где вы программу запускаете?

Скорее всего она падает потому что вы неправильно вычисляете факториал и стек переполняется.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.10.2016, 16:06   #9
Jazz-
 
Регистрация: 14.10.2016
Сообщений: 8
По умолчанию

Цитата:
Как/где вы программу запускаете?

Скорее всего она падает потому что вы неправильно вычисляете факториал и стек переполняется.
Visual Studio 2012. На счёт оформления спасибо, и извините(количество написанных программ ничтожно мала). Есть идеи как убрать ошибку? Где я могу об этом почитать?
Jazz- вне форума Ответить с цитированием
Старый 14.10.2016, 16:12   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Почитать в википедии или где-нибудь еще что такое факториал и как он вычисляется.

Или просто понять, что

Код:
int func(int n)
{
    return func(n);
}
будет бесконечно вызывать func пока стек не переполнится.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в языке С. Передача параметров в функции. Создание многофайловых проектов fifaman Общие вопросы C/C++ 6 28.12.2014 15:30
Табулирование заданной функции и определение максимального и минимального значения функции в таблице Марина1986 C/C++ Сетевое программирование 0 07.05.2013 11:31
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2012 20:34
Построение графика функции, мигание(затухание) шарика в минимумах функции kas1m_rus Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2012 20:28
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10