![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Account |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задача следующая:
Есть сигнал, в моем случае представленный в виде функции sin(x), так как она периодическая, то берем интервал 0 до 2*Pi. Разрядность АЦП задается по пользователем. Написал вот такую программку, результат сохраняется в файл. Работает следующим образом. Запрашивается разрядность, потом тупо вычисляется на каждом шаге sin(x), результат дискреизированной функции (это вычисление дала преподаватель, вот в нем бы и хотелось убрать изврат по выделению целой части(Указал в коде), пробовал trunc, но такой функции не оказалось, тут так же возникает вопрос почему, в справочнике Шилда она указана). И последнее вычисляется шум, что есть разность между второй и первой функции соответственно выше указанных. ОС: WinXP IDE: TurboC++ 3.0 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
#include <conio.h>
int intrvl_discrt(int &rr)
{ int st=1;
for(int i=1;i<=rr;i++)
st*=2;
return st;
}
int main()
{ FILE *fl;
if ((fl=fopen("Result","w"))==NULL)
{
printf("Error file open! \n");
exit(1);
};
system("cls");
int r,R; double tbl[1024][3];
cout<<"Vvedite razryadnost: " ;
cin>>r;
double PI=3.14159;
R=intrvl_discrt(r);
double h=(2*PI)/R;
fprintf(fl,"Razryadnost (r): %d\nKol-vo otrezkov (R=2^r): %d\nShag (h) = %15.13f\n\n",r,R, h);
fprintf(fl," x | S(x) | SD(x) | SD(x)-S(x) |\n");
fprintf(fl,"-------------------------------------------------------------------------\n");
int i=0;
for( double x=0;i<R;x=x+h,i++)
{
tbl[i][0]=sin(x);
tbl[i][1]=int(sin(x)*R);//<<---Как убрать такой изврат, нужно из результата именно целая часть
tbl[i][1]=tbl[i][1]/R;
tbl[i][2]=tbl[i][1]-tbl[i][0];
fprintf(fl,"%15.13f | %15.13f | %15.13f | %15.13f |\n\n",x,tbl[i][0],tbl[i][1],tbl[i][2]);
}
fclose(fl);
return 0;
}
Сообщение отредактировано: Account - 4.01.2012 16:36 |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 20:27 |