Форум программистов, компьютерный форум CyberForum.ru

Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем - C++

Восстановить пароль Регистрация
 
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
15.10.2011, 20:06     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем #1
Есть программа с "игрушечной" (так назвал её преподаватель) функцией, выводящая таблицу аргументов и значений ряда из на отрезке [a,b] (концы отрезка a и b вводит пользователь), раздробленном на n частей (количество частей вводит пользователь) с погрешностью eps (её тоже вводит пользователь). Код:
Код
#include <stdio.h>
float func(float x, float eps)
{
	return(x+eps);
}

void tabul(float a, float b, int n, float eps)
{
	float x, h;
	printf ("\n      x        y \n");
	x=a;
	float y;
	h=(b-a)/2;
	for (int i=0; i<=n; i++)
	{
		y=func(x, eps);
		printf ("\n %f %f \n", x, y);
		x=x+h;
	}

}
void main()
{
int a, b, n, x, h;
float eps;
printf ("Vvedite menshiy iz koncov otrezka a=");
scanf ("%d", &a);
printf ("Vvedite bolshiy iz koncov otrezka b=");
scanf ("%d", &b);
printf ("Vvedite kolichestvo elementov n=");
scanf ("%d", &n);
printf ("Vvedite pogreshnost vichisleniy eps=");
scanf ("%f", &eps);
tabul(a,b,n,eps);
}
Есть программа, написанная мною, которая считает значение параметрической функции y=(((-1)^i)*x^3)/(i+5)! ("^" - "в степени", "!" - факториал), где параметр i задания функции задаёт пользователь и аргумент функции x тоже задаёт пользователь. Код этой программы тоже прикреплён ниже. Примечание: i я использую для задания цикла for, потому вместо i, которое в формуле я использую n, проще говоря, i в формуле заменено на n.
Код
#include <stdio.h>
#include <locale.h>
float func1(float x, int n)
{
     float a=(-(x*x*x)/720);
     for (int i=1; i<n; i++)
     {
          a=a*(-1)/(i+6);
     }
     return a;
}

void main()
{
     float x, a=0;
     int n;
     setlocale(LC_ALL, "russian");
     printf ("Введите аргумент функции x=");
     scanf ("%fl", &x);
     printf ("\nВведите параметр задания функции n=");
     scanf ("%d", &n);
     float F = func1(x,n);
     printf ("%f", F);
}
Задача сводится к тому, чтобы доделать программу с "игрушечной" функцией, данную преподавателем до программы, которая будет выводить таблицу в заданном пользователем количестве аргументов и значений ряда, в заданном пользователем диапазоне [a,b], с заданной пользователем погрешностью вычислений eps, с заданным пользователем параметром ряда i (в моей программе этот параметр является переменной n) и с заданным пользователем аргументом функции. Если что не понятно объяснил или не понятно в моём коде - пишите, с радостью объясню. Но сразу скажу, что есть много ограничений в плане того, можно использовать что-либо в программе/нельзя. Это ограничение введено преподавателем, ибо мы очень многое ещё не проходили
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2011, 20:06     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем
Посмотрите здесь:

C++ Найти "max" среди всех локальных минимумов данной матрицы
Абстрактный базовый класс "звонок" с виртуальной функцией "стоимость" C++
C++ Как заменить функцию printf из "С" в "С++"?
C++ не могу разобраться функцией систем("")
C++ Написать функцию выбора пунктов меню стрелками "вверх" "вниз"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 20:33     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем #2
Добавляете в сою программу функцию tabul от преподавателя. В ней вызов функции func заменяете вызовом своей функции. В main() после ввода всех данных (a,b, числа точек... - можете скопировать эту часть из преподского main-а) вызываете преподавательскую функцию tabul. Собственно, все

P.S., вы уверены. что сумму ряда вам надо посчитать до i-го слагаемого, а не с точностью eps?
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
16.10.2011, 08:28  [ТС]     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем #3
aeshes
Дословно, задача звучала так:

"Написать функцию f(x)=<сумма ряда для i от 1 до бесконечности> (((-1)^i)*x^3)/(i+5)! и проверить правильность вычислений"

Функцию я вроде написал, теперь нужно вроде как проверить правильность вычислений (хотя я трассировал отладчиком на разных значениях, сравнивал со значениями, подсчитанными в виндовом калькуляторе - значения одинаковы). Ваш вопрос не совсем понял, возможно, в вышесказанном есть ответ на него

Добавлено через 35 минут
Код
#include <stdio.h>
#include <locale.h>
float func1(float arg, int n)
{
	float znachfunc=(-(arg*arg*arg)/720);
	for (int i=1; i<n; i++)
	{
		znachfunc=znachfunc*(-1)/(i+6);
	}
	return znachfunc;
}

void tabul(float a, float b, int v, float eps)
{
	float x, h;
	printf ("\n      x        y \n");
	x=a;
	float y;
	h=(b-a)/2;
	for (int i=0; i<=v; i++)
	{
		y=func1(x, eps);
		printf ("\n %f %f \n", x, y);
		x=x+h;
	}
 
}
void main()
{
	float arg, znachfunc=0, eps;
	int a, b, n, x, h, v;
	setlocale(LC_ALL, "russian");
	printf ("Введите аргумент функции arg=");
	scanf ("%fl", &arg);
	printf ("\nВведите параметр задания функции n=");
	scanf ("%d", &n);
	printf ("Введите меньший из концов отрезка a=");
	scanf ("%d", &a);
	printf ("Введите больший из концов отрезка b=");
	scanf ("%d", &b);
	printf ("Введите количество пар аргумент-значение таблицы вывода аргументов и значений v=");
	scanf ("%d", &v);
	printf ("Введите погрешность вычислений eps=");
	scanf ("%f", &eps);
	float F = func1(arg,n);
	tabul(a,b,n,eps);
}
Если я правильно вас понял, код должен выглядеть так? Примечания: количество строк таблицы заменёно на v, в моей части программы аргумент функции a заменён на arg, значение функции y в точке arg заменено на znachfunc

P.S. Программа работает. Но такое ощущение, что параметров могло быть меньше... Это так?
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
16.10.2011, 15:17     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем #4
Glam_Man, если вам нужно по условию задачи считать сумму безконечного ряда, то вы делаете это немного не правильно. Сумма такого ряда вычисляется в зависимости от заданной пользователем точности eps, а не по количеству слагаемых (ограничение на количество слагаемых может накладываться, если нет уверенности в сходимости ряда). Если ваш ряд имеет такой вид http://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{i=1}^{\propto } \frac{{(-1)}^{i}{x}^{3}}{(i+5)!}, то программа может выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <locale.h>
#include<math.h>
float func1(float x, float eps)
{
        float S=0, ai=(float)-1/720.0;
        for (int i=1; fabs(ai)>eps &&i<=500; i++)
        {
            S=S+ai;
            ai=-ai/(i+6);
        }
        return S*x*x*x;
}
 
void tabul(float a, float b, int n, float eps)
{
        float x, h;
        printf ("\n      x        y \n");
        x=a;
        float y;
        h=(b-a)/n;
        for (int i=0; i<=n; i++)
        {
                y=func1(x, eps);
                printf ("\n %f %f \n", x, y);
                x=x+h;
        }
 
}
void main()
{
        float a, b, eps;
        int n;
        setlocale(LC_ALL, "russian");
        printf ("Введите меньший из концов отрезка a=");
        scanf ("%f", &a);
        printf ("Введите больший из концов отрезка b=");
        scanf ("%f", &b);
        printf ("Введите количество точек на отрезке n=");
        scanf ("%d", &n);
        printf ("Введите погрешность вычислений eps=");
        scanf ("%f", &eps);
        tabul(a,b,n,eps);
 
}
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
16.10.2011, 17:27  [ТС]     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем #5
fabs это функция из библиотеки <math.h>? abs, насколько мне известно, вычисляет модуль. А fabs какие вычисления производит?
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
16.10.2011, 17:32     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем #6
fabs вычисляет модуль для вещественных чисел, а abs - для целых
Yandex
Объявления
16.10.2011, 17:32     Требуется совместить написанную мною функцию с "игрушечной" функцией, данной преподавателем
Ответ Создать тему
Опции темы

Текущее время: 02:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru