1. int NN=6;

2. int M=4;

3. double funkcja_sygnału[6]={1.0,2.0,4.0,8.0,3.3,7.7};

4. double filtr[4]={2.0,3.0,4.0,5.0};

5. double Y[9]={0.0};//bo wynik jest mniejszy o 1 element od sumy ilości elementó

w mnoĹĽonych funkcji

6. double tab_lista_kolowa[9]={0.0};// max=N+M-1

7.

8. //int NN=6;

9. //int M=10;

10. //double funkcja_sygnału[6]={1.0,2.0,4.0,8.0,3.3,7.7};

11. //double filtr[10]={2.0,3.0,4.0,5.0,1.0,2.0,4.0,8.0,3.3,7.7};

12. //double Y[15]={0.0};//bo wynik jest mniejszy o 1 element od sumy ilości elemen

tĂłw mnoĹĽonych funkcji

13. //double tab_lista_kolowa[15]={0.0};// max=N+M-1

14.

15. int indeks_wyniku=0;

16. //Splot Sposob nr 1:

17. indeks_wyniku=NN+M-1;

18. //wynik jest mniejszy o 1 element od sumy ilości elementów mnozonych 2 funkcji

19.

20. //swprintf(szBuffer2, _T(" c....filtr=. %1.5lf .. "),filtr[M1]);/ wsprintfWfloat

21. //TextOut(kontekst,37, 37,szBuffer2,wcslen(szBuffer2));

22. //MessageBox(hWnd2,_T(".filtr!!."),_T(".filtr!!."),MB_OK);

23.

24. for(int i=0;i<indeks_wyniku;i++){ Y[i]=0.0; }

25.

26. czas_start1=pomiar_czasu();

27. /*p1*///////// Splot ///////////////////////////////

28. int dlugosc_funkc_sygnalu=0;

29. int dlugosc_filtru=0;

30. dlugosc_funkc_sygnalu=NN;

31. dlugosc_filtru=M;

32. for(int rnd=0;rnd<1;rnd++)/////////

33. {

34. for(int i=0;i<indeks_wyniku;i++)

35. {

36. for(int j=0;j<dlugosc_funkc_sygnalu;j++)//kazdy element funkcji

37. przemnozyc przez to:

38. {

39. if((i-j)<0)break;

40. if((i-j)>=dlugosc_filtru){j=i-dlugosc_filtru; continue;}

41. //od nowej pętli z ustawionym nowym j ,j=i-M+1; j=j-1;

42. //tylko mnozyc gdy element filtru jest nad funkcja:

43. Y[i]=Y[i]+funkcja_sygnału[j]*filtr[i-j];

44. }

45. // nie ma listy kołowej.

46. }

47. }

48. /*k1*//////////////////////////////////////////////

49. czas_stop1=pomiar_czasu();

50. czasSzybkie1=czasSzybkie1+czas_stop1-czas_start1;

51.

52. swprintf(szBuffer2, _T(" czasSzybkie1= %1.2lf "),czasSzybkie1);// bo wsprintfW

nie ma float

53. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));

54. MessageBox(hWnd2,_T(".czasSzybkie1!!."),_T(".czasSzybkie1!!."),MB_OK);

55.

56. double wynik1=0;

57. for(int i=0;i<indeks_wyniku;i++)

58. {

59. wynik1=wynik1+Y[i];

60. }

61.

62. swprintf(szBuffer2, _T(" wynik1= %1.2lf "),wynik1);// bo wsprintfW nie ma float

63. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));

64. MessageBox(hWnd2,_T(".wynik1!!."),_T(".wynik1!!."),MB_OK);

65.

66. // Sposob nr 2:

67. //indeks_wyniku=NN+M-1;

68. //zapis filtru do listy.kołowej

69. //double tab_lista_kolowa[53999]={0};// max=N+M-1

70. double tmp_el_nr_ostat=0;

71.

72. tab_lista_kolowa[0]=filtr[0];

73. for(int i=0;i<indeks_wyniku;i++)

74. {

75. Y[i]=0.0;

76. tab_lista_kolowa[i]=0.0;

77. }

78.

79. //int liccb=0,liccb2=0,liccb3=0;

80. tab_lista_kolowa[0]=filtr[0];

81. for(int i=NN;i<indeks_wyniku;i++)

82. {

83. //liccb++;liccb2=(M-1)-i+NN;liccb3=i;

84. tab_lista_kolowa[i]=filtr[(M-1)-i+NN];

85. }

86.

87. czasSzybkie1=0.0;

88. czas_start1=pomiar_czasu();

89. /*p2*//////////////////////////////////////////////

90. for(int rnd=0;rnd<1;rnd++)//////////////////

91. {

92. for(int i=0;i<indeks_wyniku;i++)

93. {

94. for(int j=0;j<NN;j++)

95. {

96. Y[i]=Y[i]+funkcja_sygnału[j]*tab_lista_kolowa[j];

97. }

98. tmp_el_nr_ostat=tab_lista_kolowa[indeks_wyniku-1];//indeks_wyniku=NN+M-

1=53999

99. for(int k=indeks_wyniku-1;k>=1;k--)

100. {

101. tab_lista_kolowa[k]=tab_lista_kolowa[k-1];//

102. }

103. tab_lista_kolowa[0]=tmp_el_nr_ostat;

104. }

105. }

106.

107. /*k2*//////////////////////////////////////////////

108. czas_stop1=pomiar_czasu();

109. czasSzybkie1=czasSzybkie1+czas_stop1-czas_start1;

110.

111. swprintf(szBuffer2, _T(" czasSzybkie1= %1.2lf "),czasSzybkie1);// bo wsprintfW

nie ma float

112. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));

113. MessageBox(hWnd2,_T(".czasSzybkie1!!."),_T(".czasSzybkie1!!."),MB_OK);

114. double wynik2=0;

115. for(int i=0;i<indeks_wyniku;i++)

116. {

117. wynik2=wynik2+Y[i];

118. }

119. swprintf(szBuffer2, _T(" wynik2= %1.2lf "),wynik2);// bo wsprintfW nie ma float

120. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));

121. MessageBox(hWnd2,_T(".wynik2!!."),_T(".wynik2!!."),MB_OK);

122.

123. swprintf(szBuffer2, _T(" wynik2-wynik1= %1.2lf "),wynik2-

wynik1);// bo wsprintfW nie ma float

124. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));

125. MessageBox(hWnd2,_T(".wynik2-wynik1!!."),_T(".wynik2-wynik1!!."),MB_OK); 126. ///////////////////////////