Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
vog
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 34
1

Как запрограммировать функцию (есть наброски)?

24.01.2015, 21:17. Просмотров 383. Ответов 0
Метки нет (Все метки)

На вход подается массив элементов Xi из файла.
нужно посчитать
http://www.cyberforum.ru/cgi-bin/latex.cgi?g(u)=\frac{1}{n} * \sum_{1}^{n}   \left[cos(u*Xi) + i*sin(u*Xi) \right]
u задается от минус пи до пи

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h> 
#include <math.h>
#include <iostream>
using namespace std; 
#include <iomanip> //для setprecision()
#define N 1000
const double pi = acos(-1.0);
 
typedef struct 
{
    double re;
    double im;
}complex;
 
int ReadFromFile (double* data)
{
    char finame[10];
    int i,n=0;
    cout << "Введите имя файла:" << endl;
    cin >> finame;
    FILE *f = fopen(finame, "r");
    if (f == NULL)
        cerr << "Ошибка чтения файла." << endl;
    else
    {
        fscanf(f, "%d", &n);
        for (i=0; i < n; i++)
        {
            fscanf(f, "%lf", &data[i]);
        }
    }
    fclose(f);
return n;
}
 
complex Trig(double u,double pwr)
{
    complex arg = {0};
    arg.re = cos(u*pwr);
        arg.im = sin(u*pwr);
return arg;
}
 
complex csum(complex val1, complex val2)
{
    val1.re = val1.re +val2.re;
val1.im = val1.im +val2.im;
    return val1;
}
//считаем сумму большую комплексных чисел, для каждой u отправляем сюда, посчитать сумму по количеству элементов выборки
complex SUMTRIG(double u, int n,double* data)
{
    complex two1={0},two2={0};
    int i;
    for (i=0; i < n; i++)
        {
            two1 = Trig(u, data[i]);//получаем комплексное число cos(ux)+isin(ux)
            two2 = csum(two1,two2);//прибавляем к предыдущему, чтобы получить сумму от 1 до n, для одной u
        }
    return two2;
}
 
 
complex cmult(complex val, double p)
{
    val.re *= p;
    val.im *= p;
    return val;
}
int EMP(complex *result, int n, double* data)
{
double g,u;
int i=0;
complex sum={0};
g=1.0/n;
 
for ( u=-pi ; u<=pi; u+= 1.0)
    {
        sum = SUMTRIG(u, n, data);
        sum = cmult(sum,g);
        printf("sum[i]= %lf ",sum.re);
        //не нравится ему каут cout << "sum[i]= " << sum.re;
        result[i].re = sum.re;
        result[i].im = sum.im;
        i=i+1;
    }
return i;
}
 
 
void show(complex *val,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("g = ");
    if(0 <= val[i].re)
        printf(" ");
    printf("%.3f",val[i].re);
    if(val[i].im < 0)
        printf(" - i*");
    else
        printf(" + i*");
    printf("%.3f", fabs(val[i].im));
    }}
 
void main()
{
setlocale(LC_CTYPE, "Russian");
int m=0,reskol=0;
double *mas= new double [m];//здесь что m=0 изначально? это вообще законно?
complex *em = new complex [N];
m = ReadFromFile (mas);
reskol=EMP(em, m, mas);
show(em,reskol);
delete [] mas;
delete [] em;
_getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2015, 21:17
Ответы с готовыми решениями:

Как запрограммировать распознавание нажатия клавиш PageUp и PageDown
Доброго времени суток, уважаемые обыватели КиберФорума. Заканчивая работу над...

Есть ли разница - писать функцию до switch или в его теле
есть ли разница-писать функцию до switch,а затем вызывать эту функцию в нём или...

Написать функцию которая находит второй максимальный элемент если он есть
Помогите пожалуйста решить. Написать функцию которая находит второй...

Решение системы уравнений: написать функцию, которая как параметр будет использовать другую функцию
Ребята помогите разобраться с указателем на функцию! у меня решается система...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2015, 21:17

Сумма ряда и проверка на сходимость (есть наброски)
Задание 1. Найти сумму ряда: Е(n=1 до бескон) n* q^n (^ - в степени). При...

Как запрограммировать лог. функцию на прологе
Запрограммировать логическую функцию:

Как запрограммировать функцию со сменным количеством параметров
Кто силен в теории, ответьте, пожалуйста: Как запрограммировать функцию со...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru