Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод с языка C на C++, Помогите с переводом с языка C на C++ 
:(
    Опции темы
HarleyDav
Дата 9.1.2012, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.1.2012

Репутация: нет
Всего: нет



Привет! Помогите пожалуста с переводом программы быстрого преобразования Фурье с языка C на C++.
Код

/*Листинг программы БПФ:*/
#include <stdio.h>
#include <math.h>
#include <time.h>
BPF(x,y,N,I) /*Процедура БПФ*/
register float *x,*y; /*x,y-входные массивы данных*/
register int N,I; /*размерностью I=1 7БПФ I=-1 7ОБПФ*/
{
register float c,s,t1,t2,t3,t4,u1,u2,u3;
register int i,j,p,l,L,M,M1,K;
L=N;
M=N/2;
M1=N71;
while(L>=2){
l=L/2; u1=1.; u2=0.; t1=PI/(float)l;
c=cos(t1); s=(-1)*I*sin(t1);
for(j=0; j<l;j++)
{
for(i=j;i<N;i+=L)
{
p=i+l;
t1=*(x+i)+*(x+p);
t2=*(y+i)+*(y+p);
t3=*(x+i)-*(x+p);
t4=*(y+i)-*(y+p);
*(x+p)=t3*u1-t4*u2;
*(y+p)=t4*u1+t3*u2;
*(x+i)=t1; *(y+i)=t2;
}
u3=u1*c-u2*s;
u2=u2*c+u1*s; u1=u3;
}
L/=2;
}
j=0;
for(i=0;i<M1;i++)
{
if(i>j)
{
t1=*(x+j); t2=*(y+j);
*(x+j)=*(x+i); *(y+j)=*(y+i);
*(x+i)=t1; *(y+i)=t2;
}
K=M;
while(j >=K)
{
j-=K;K/=2;
}
j+=K;
}
}
sinsignal(P,F,A,N) /*моделирование входного сигнала*/
/*в форме синусоиды*/
float *P,F,A; /*P - массив сигнала размерности N*/
int N; /*F - частота сигнала,
A - амплитуда сигнала*/
{
register int i;
register float r,re,re1,im,im1;
re=cos(2.*PI*F/(float)N);
im=sin(2.*PI*F/(float)N);
re1=A;im1=0.;
for(i=0;i< N;i++)
{
*(P+i)=re1;r=re1;
re1=r*re-im1*im;
im1=im1*re+r*im;
}
}
main()
{
int j,N;
float *x,*y,F,A,Re,Im;
printf("\t\t N :"); scanf("%d",&N);
printf("\t\t F(gc):"); scanf("%f",&F);
printf("\t\t A :"); scanf("%f",&A);
x=(float*)calloc(N,sizeof(float));
y=(float*)calloc(N,sizeof(float));
sinsignal(x,F,A,N);
for(j=0;j < N;j++) printf(" X[%d] - %.1f \n",j,*(x+j));
BPF(x,y,N,1);
for(j=0;j < N/2;j++)
{
Re=*(x+j);
Im=*(y+j);
A=2.*sqrt(Re*Re+Im*Im)/(float)N;
printf(" X[%d] 7 %d \n",j,(int)A);
free(x); free(y);
}


Модератор: исправил неверные символы начала/конца комментариев

Это сообщение отредактировал(а) bsa - 9.1.2012, 12:12
PM MAIL   Вверх
bsa
Дата 9.1.2012, 12:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



строки 5-7 замени на:
Код
void BPF(float *x, float *y, int N, int I)

строки 52-56 на:
Код
void sinsignal(float *P, float F, float A, int N)

строку 70 на:
Код
int main()

добавь в начало программы строку:
Код
#include <stdlib.h>

Удали все слова "register " (просто замени на ничего).
PM   Вверх
feodorv
Дата 9.1.2012, 12:26 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Ещё можно все printf перепесать через coutscanf через cincalloc заменить на newfree на delete smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
HarleyDav
Дата 9.1.2012, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.1.2012

Репутация: нет
Всего: нет



bsa Огромное Спасибо за помощь! Делал практически тоже самое, но ошибся в нескольких строках.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1261 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.