StdAfx.cpp
Upload User: szluye
Upload Date: 2022-04-24
Package Size: 58k
Code Size: 2k
Category:

Special Effects

Development Platform:

Visual C++

  1. // stdafx.cpp : source file that includes just the standard includes
  2. // DPAU.pch will be the pre-compiled header
  3. // stdafx.obj will contain the pre-compiled type information
  4. #include "stdafx.h"
  5. void InsertSort(STPOSITION a[])
  6. {
  7. //对数组排序
  8. int i,j,n=0;
  9. STPOSITION temp;
  10. //计算有效个数
  11. while(a[n].mPosition!=0)
  12. n++;
  13. for(i=0;i<n-1;i++)
  14. {
  15. temp=a[i+1];
  16. j=i;
  17. while(j>-1&&temp.mPosition<a[j].mPosition)
  18. {
  19. a[j+1]=a[j];
  20. j--;
  21. }
  22. a[j+1]=temp;
  23. }
  24. }
  25. int BitsOfNumber(int val)
  26. {
  27. //返回数值位数
  28. if((val/1)<10)
  29. return 0; //个
  30. if((val/10)<10)
  31. return 1; //十
  32. else if((val/100)<10)
  33. return 2; //百
  34. else if((val/1000)<10)
  35. return 3; //千
  36. else if((val/10000)<10)
  37. return 4; //万
  38. else
  39. return 0; //无效
  40. }
  41. int NodesOfFreqRange(int start,int end,STDPG *stDpg)
  42. {
  43. //根据范围,计算以10倍递增计算共有多少步
  44. //如20,30,...,90,100,200,300,...,900,1000,2000,...,10000,20000
  45. int mBits=0,mNodes=0,mElems=0;
  46. int mPrevs=0,mCarrys=0;
  47. mPrevs=mBits=BitsOfNumber(start);
  48. while(1)
  49. {
  50. mBits=BitsOfNumber(start);
  51. if(mPrevs!=mBits)
  52. {
  53. //存在如从10->100,100->1000,1000->10000等进位
  54. stDpg->mElements[mCarrys]=mElems;
  55. stDpg->mCarryVal[mCarrys]=start;
  56. mElems=0;
  57. mCarrys++;
  58. }
  59. if(start>=end)
  60. break;
  61. mPrevs=mBits;
  62. start=(int)(start+pow(10,mBits));
  63. mNodes++;
  64. mElems++;
  65. }
  66. stDpg->mTotal=mNodes; //总共节点
  67. stDpg->mCarrys=mCarrys; //存在进位的点
  68. stDpg->mElements[mCarrys]=mElems;
  69. return 0;
  70. }
  71. CString NumOfFreqStr(int freq)
  72. {
  73. //返回以国际单位词头表示的频率描述
  74. CString str;
  75. str.Format(_T("%dHz"),0);
  76. if(freq<1000)
  77. str.Format(_T("%dHz"),freq);
  78. if(freq>=1000)
  79. str.Format(_T("%dKHz"),freq/1000);
  80. return str;
  81. }
  82. int CalcXPos(int sFreq,int eFreq,int freq,CRect *rect)
  83. {
  84. //根据输入的参数计算出在X坐标的位置
  85. int step=(int)((rect->right-rect->left)/(log10(eFreq)-log10(sFreq)))-4;
  86. float fLog=(float)(log10(freq)-log10(sFreq));
  87. return (int)(rect->left+fLog*step);
  88. }
  89. int CalcFreq(int x,int sFreq,int eFreq,CRect *rect)
  90. {
  91. //根据输入的坐标值计算对数关系的频率值
  92. int freq;
  93. int step=(int)((rect->right-rect->left)/(log10(eFreq)-log10(sFreq)))-4;
  94. freq=pow(10,(x+step*log10(sFreq)-rect->left)/(step));
  95. return freq;
  96. }