博文

函数--用卡丹公式解一元三次方程(2007-10-31 13:05:00)

摘要:#include <iostream.h>#include <stdio.h>#include <math.h> //////////////////函数--用卡丹公式解一元三次方程/////////////////void fun(double a,double b,double c,double d,   double *real_y1,double *real_y2,double *real_y3,   double *imag_y1,double *imag_y2,double *imag_y3){ double p,q,r,u,v,g,h,fai; p=(3.0*a*c-b*b)/(3*a*a); q=(2.0*pow(b,3.0)-9*a*b*c+27.0*a*a*d)/(27.0*pow(a,3.0)); r=b/(3.0*a); h=pow(q/2.0,2.0)+pow(p/3.0,3.0); g=sqrt(h); if(h>=0) {  if(-q/2.0+g<0)  u=-pow(fabs(-q/2.0+g),1.0/3.0);  else  u=pow((-q/2.0+g),1.0/3.0);  if(-q/2.0-g<0)  v=-pow(fabs(-q/2.0-g),1.0/3.0);  else  v=-pow((-q/2.0-g),1.0/3.0);  if(h==0)  {   *real_y1=u+v-r;            *imag_y1=0;      *real_y2=-(u+v)/2-r;       *imag_y2=0;   *real_y3=-(u+v)/2-r;  ......

阅读全文(7503) | 评论:1

五子棋(人机对战)(2007-10-23 22:53:00)

摘要:/***************************************************************************************\          modify at  2006.3.28\***************************************************************************************/#include <graphics.h>#include <stdio.h>#include <malloc.h>#include <time.h>#include <math.h>#include <stdlib.h> #include <mousea1.h> #define  MAX  15#define  OFFSET  8      /* 14*14=196<2^8-1=255 偏移8位足够,而优先级最大也是16 */#define  PAN_X 125      /*棋盘初始位置,左上角坐标(125,75) */#define  PAN_Y 75 #define  COMPUTER  1    /*计算机棋子 */#define  PLAYER    2    /*玩家棋子   */int qp[MAX][MAX];       /*定义棋盘   */int iswin;              /*输赢标记,1=计算机胜,2=玩家胜,0=未分胜负;*......

阅读全文(3131) | 评论:0

Visual C++ 5.0中的多线程编程技术(2007-10-03 13:53:00)

摘要:Visual C++ 5.0中的多线程编程技术   一、引言   Windows系统平台经历了从16位到32位的转变后,系统运行方式和任务管理方式有了很大的变化,在Windows 95和Windows NT中,每个Win32程序在独立的进程空间上运行,32位地址空间使我们从16位段式结构的64K段限制中摆脱出来,逻辑上达到了4G的线性地址空间。这样,我们在设计程序时就不再需要考虑编译的段模式,同时还提高了大程序的运行效率。独立进程空间的另一个更大的优越性是大大提高了系统的稳定性,一个应用程序的异常错误不会影响其它的应用程序,这对于现在的桌面环境尤为重要。   在Windows的一个进程内,包含一个或多个线程。线程是指进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等等。一个进程内的所有线程使用同一个32位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完任务后再执行。在多处理器的机器上,调度程序可将多个线程放到不同的处理器上去运行,这样就可使处理器的任务平衡,也提高了系统的运行效率。   32位Windows环境下的Win32 API提供了多线程应用程序开发所需要的接口函数,但Win16和Win32对多线程应用并不支持,利用Visual C++ 5.0中提供的标准C库也可以开发多线程应用程序,而相应的MFC4.21类库则封装了多线程编程的类,因而用户在开发时可根据应用程序的需要和特点选择相应的工具。   如果用户的应用程序需要有多个任务同时进行相应的处理,则使用多线程是较理想的选择。例如,就网络文件服务功能的应用程序而言,若采用单线程编程方法,则需要循环检查网络的连接、磁盘驱动器的状况,并在适当的时候显示这些数据,必须等到一遍查询后才能刷新数据的显示。对使用者来说,延迟可能很长。而在应用多线程的情况下可将这些任务分给多个线程,一个线程负责检查网络,另一个线程管理磁盘驱动器,还有一个线程负责显示数据,三个线程结合起来共同完成文件服务,使用者也可以及时看到网络的变化。多线程应用范围很广,尤其是在目前的桌面平台上,系统的许多功能如网络(Internet)、打印、字处理、图形图像、动画和文件管理......

阅读全文(3297) | 评论:0

五子棋(人机对下)(2007-10-02 21:22:00)

摘要:/***************************************************************************************\ modify at 2006.3.28 编译器:MYTC \***************************************************************************************/ #include #include #include #include #include #include #include #define MAX 15 #define OFFSET 8 /* 14*14=196>OFFSET; int id; struct LIST *newlist=malloc(sizeof(*newlist)); if(!newlist) return 1; while(tmp) { id=(tmp->id)>>OFFSET; if(idatemp) { temp=&(tmp->next); tmp=tmp->next; } } newlist->id=add; newlist->next=tmp; *temp=newlist; return 0; } /*函数获得指定链中最大优先级的值 */ static int GetMax(struct LIST *List) { if(List) return (List->id>>OFFSET); return 0; } static int GetLast(struct LIST **List) /*函数获得指定链中的链首数据 */ { if(*List) { int ret; struct LIST *temp; ret=((*List)->id& 0xff); /* 取低字节棋盘位置数据 , 0xff与OFFSET位数一致 */ temp=*List; /* 记住需要销毁的结点,使用的结点销毁......

阅读全文(4401) | 评论:0

利用FFT变换检测噪音的程序(2007-09-09 11:31:00)

摘要:%上面是一段利用FFT变换检测噪音的程序,x是随机加噪的 t=0:0.001:1;    %采样频率1000Hzx=sin(2*pi*100*t)+sin(2*pi*200*t)+rand(size(t));%x长度1000  subplot(2,1,1)plot(x(1:50));axis on;xlabel('Variable t');       % 加X轴说明ylabel('Variable x(t)'); y=fft(x,512);   %程序中只是选取前面512个点做FFT,其实点数可以任意选取,一般不小于数据长度,% 甚至FFT长度可以不选取2的幂次。如果选取2的幂次意味着可以使用碟型展开计算FFT,容易硬件实现。仿真时可不拘泥于2的幂次。 f=1000*(0:256)/512; %采样频率1000Hz,数据窗长度512,频率分辨率1000/512,所以横坐标为:(0:256)×1000/512。 subplot(2,1,2)plot(f,y(1:257));axis on;xlabel('Variable f');       % 加X轴说明ylabel('Variable A(f)'); ......

阅读全文(3652) | 评论:0

C语言基础(数组空间分配)(2007-08-17 23:00:00)

摘要:/* 运行环境 Dev—C++4.9.9.2,英文原版,官网下的。*/#include <stdio.h>#include <stdlib.h> int count,total1,total2,total;int array1[]={1,1,1,1,1},array2[]={3,3,3,3,3,7}; int main(void){    for(count=0;count<7;count++)        {         total1+=array1[count];         total2+=array2[count];         }    printf("%d",total1+total2);    system("PAUSE");    return 0;}int array1[]={1,1,1,1,1},array2[]={3,3,3,3,3,7};等价:int array1[5]={1,1,1,1,1},array2[6]={3,3,3,3,3,7}; 但这样定义的两个数组是挨着存放的当array1第六次被计算的时候用的是array2的第一个元素值,原因在于他们存在data段中,array1在array2前面,他们挨着存放的,也就是 1 1 1 1 1 3                                    &n......

阅读全文(3752) | 评论:0

查找指定文件夹下的文件(2007-08-01 11:46:00)

摘要:/* 功能:查找指定文件夹下的文件 2007.8.1 */ #include<iostream>#include<io.h>using namespace std; /**********************_finddata_t结构体:struct _finddata_t { unsigned  attrib ; time_t  time_create ; time_t  time_access ; time_t  time_write ; _fsize_t  size ; char name [260] ;}**********************/ void main(){    _finddata_t file;    long lf;    if((lf = _findfirst("C:\\WINDOWS\\*.INI",&file))==-1l)//_findfirst返回的是long型;long __cdecl _findfirst(const char *, struct _finddata_t *)        cout<<"文件没有找到!\n";    else    {        cout<<"\n文件列表:\n";  do {            cout<<file.name;            if(file.attrib == _A_NORMAL)cout<<"  普通文件  ";&n......

阅读全文(6054) | 评论:2

VHDL 语言实现inout类型的使用(2007-06-19 00:31:00)

摘要:-- 三态要有一个控制信号来控制,初始应为高阻。VHDL与Verilog应差不多吧,如下VHDL可参考一下: VHDL: Bidirectional Busdownload from: http://www.fpga.com.cn bidir.vhd (Tri-state bus implementation) LIBRARY ieee;USE ieee.std_logic_1164.ALL; ENTITY bidir IS    PORT(        bidir   : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);        oe, clk : IN STD_LOGIC;        inp     : IN STD_LOGIC_VECTOR (7 DOWNTO 0);        outp    : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END bidir; ARCHITECTURE cpld OF bidir ISSIGNAL  a  : STD_LOGIC_VECTOR (7 DOWNTO 0);  -- DFF that stores                                            &nbs......

阅读全文(7121) | 评论:0

for generate 语句用法示例(2007-05-31 00:25:00)

摘要:-- -- 对 megafunction wizard 生成的文件lpm_dff1.vhd改装为  dff1.vhd , 增加了 位定义的灵活性 -- ============================================================-- File Name: dff1.vhd LIBRARY ieee;USE ieee.std_logic_1164.all; LIBRARY lpm;USE lpm.all; ENTITY dff1 IS GENERIC (lpm_width  : NATURAL := 8 ); PORT (  clock  : IN STD_LOGIC ;  data  : IN STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);  q  : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0) );END dff1; ARCHITECTURE SYN OF dff1 IS  SIGNAL sub_wire0 : STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);    COMPONENT lpm_ff GENERIC (  lpm_fftype  : STRING;  lpm_type  : STRING;  lpm_width  : NATURAL ); PORT (   clock : IN STD_LOGIC ;   q : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);   data : IN STD_LOGIC_VECTOR (lpm_width-1 DOW......

阅读全文(4856) | 评论:0

FFT 算法(2007-04-03 15:27:00)

摘要:/*****************fft programe*********************/#include "typedef.h" #include "math.h" struct compx EE(struct compx b1,struct compx b2){    struct compx b3 ;    b3.real=b1.real*b2.real-b1.imag*b2.imag ;    b3.imag=b1.real*b2.imag+b1.imag*b2.real ;    return(b3);} void FFT(struct compx*xin,int N){    int f,m,nv2,nm1,i,k,j=1,l ;    /*int f,m,nv2,nm1,i,k,j=N/2,l;*/    struct compx v,w,t ;    nv2=N/2 ;    f=N ;    for(m=1;(f=f/2)!=1;m++)    {        ;    }    nm1=N-1 ;        /*变址运算*/    for(i=1;i<=nm1;i++)    {        if(i<j)        {            t=xin[j];  &n......

阅读全文(5412) | 评论:1