배열과 간단한 함수 문제인데 도저히 못풀겠습니다.
다참
질문 제목 : 배열과 간단한 함수 문제인데 도저히 못풀겠습니다.
배열과 함수 출력을 이용한 간단한 계산질문 내용 :아래에 문제를 도저히 못풀겠습니다. 배열과 함수출력(fprintf) 를 이용해서
인풋을 평행이동 했을때의 아웃풋 y를 메모장에 출력하면 되는데x[-1]y[-1] 이런 값이이상하게 나오네요.
제가 짠 소스와 문제 사진입니다.
int main(void)// 메인함수 시작!
{
double y1[300] = {0};// n에 따른 y1값들 총 200개를 저장할 배열 선언 후 초기값 0 입력
double y2[300] = {0};// n에 따른 y2값들 총 200개를 저장할 배열 선언 후 초기값 0 입력
double x[300] = {0};// n에 따른 x값들 총 200개를 저장할 배열 선언 후 초기값 0 입력
double y[300] = {0};// n에 따른 y값들 총 200개를 저장할 배열 선언 후 초기값 0 입력
int n=0;// n의 초기값으로 0 입력, 이후 for 문에서 사용
int a=1, b=1.5;// 문제의 조건에서 a=1, b=1.5 지정
file *out1, *out2, *out3, *out4;// 파일을 읽고 출력할 함수를 포인터로 out1, out2, out3, out4 로 선언
out1 = fopen(x[n]_y[n].txt, w);// x1[n]과 y1[n]이 저장된 x1_y1.txt 파일을 쓰기가 가능하도록 연다는 의미
out2 = fopen(x[n-20]_y1[n].txt, w);// x2[n]과 y2[n]이 저장된 x2_y2.txt 파일을 쓰기가 가능하도록 연다는 의미
out3 = fopen(x[n-40]_y2[n].txt, w);// x[n]과 y[n]이 저장된 x_y.txt 파일을 쓰기가 가능하도록 연다는 의미
out4 = fopen(y[n-20]_y[n-40].txt, w);// ay1[n]+by2[n]이 저장된 ay1+by2.txt 파일을 쓰기가 가능하도록 연다는 의미
for(n=0;n100;n++) // n이 0 ~ 99까지 아래의 내용을 반복한다는 뜻임.
{
x[n] = (3*(sin((4*pi*n)/200))) -1;
}
for(n=100;n240;n++) // n이 0 ~ 99까지 아래의 내용을 반복한다는 뜻임.
{
x[n] = 0;
}
for(n=0;n240;n++)
{
y[0]=x[0];
y1[0]=x[-20];
y2[0]=x[-40];
y[n] = y[n-1] + x[n];
y1[n] = y1[n-1] + x[n-20];
y2[n] = y2[n-1] + x[n-40];
}
for(n=0;n240;n++) // n이 0 ~ 99 까지 아래의 내용을 반복.
{
fprintf(out1, %lf\t%lf\n, x[n], y[n]);// x1과 y1의 값을 탭을 간격으로 하도록 x1_y1.txt 라는 메모장에 n이 0~99 까지 출력
fprintf(out2, %lf\t%lf\n, x[n-20], y1[n]);// x2와 y2의 값을 탭을 간격으로 하도록 x2_y2.txt 라는 메모장에 n이 0~99 까지 출력
fprintf(out3, %lf\t%lf\n, x[n-40], y2[n]);// x와 y의 값을 탭을 간격으로 하도록 x_y.txt 라는 메모장에 n이 0~99 까지 출력
fprintf(out4, %lf\t%lf\n, y[n-20], y[n-40]);// ay1+by2의 값을 ay1+by2.txt 라는 메모장에 n이 0~99 까지 출력
}
-
이뻐
이거 신호와 시스템 과목 아닌가요... 그리고 문제에 h[n]이 어떻게 되어있는지도 없네요.
h[n]을 알아야 y[n] = x[n] conv h[n]으로 구할 수 있을텐데요. 또, 이걸 c로만 구해야 하는 게 아니라면,
MATLAB 써서 구하면 쉽습니다.